надрукувати "Привіт, світ!"


79

Так, насправді. Роздрукуйте його на апаратному принтері 🖨, щоб створити друковану копію.

Надішліть необхідні команди / дані на принтер, щоб наступний текст був надрукований на аркуші паперу:

Привіт Світ!

Ви можете використовувати будь-який доступний для вас принтер, локальний або мережевий.

Якщо ваш принтер дозволяє, на білому папері слід використовувати чорний чорнило 8pt або більше тексту.

Текст повинен з’являтися у власному рядку. Він може розташовуватися ліворуч або праворуч за своїм бажанням.

Цифрові фотографічні / відео / GIF докази подань будуть корисними.

Якщо ваше обладнання не може зробити папір, але дозволяє інше екзотичне виготовлення копій, таких як 3D-друк, обробка ЧПУ або друк на атомному рівні , я з радістю прийму такі цікаві матеріали.


Для уточнення питання задає "Надіслати необхідні команди / дані на ваш принтер" . Це означає, що більше не потрібно вводити користувачів. Відкриття діалогового вікна друку недостатньо. Існуючі відповіді, які роблять це станом на 10:48 ранку PST 31 грудня 2016 року, будуть зібрані (але мене не схвалюють).


56
Будь ласка, надайте адресу, на яку ми можемо надсилати матеріали для підтвердження.
steenbergh

1
@steenbergh Yep - хороший момент - Цифрові фотографічні / відео / GIF докази подань повинні бути досить хорошими.
Цифрова травма

3
Варто зазначити, що багато старих принтерів використовують спеціальні набори команд. Більшість цих символів друкується ASCII буквально, тому, якщо у вас є доступ до одного з відповідних принтерів (або ви можете просто заявити, що ви це робите), надсилання Hello, World!на порт принтера повинно бути достатньо.

1
Я міг би посягнути, що спробував print("Hello, World!")один раз на консолі Firefox, і це відкрило діалог друку (марно, оскільки я жодним чином не був підключений до принтера), але тепер він просто повертає рядок ...
ETHproductions

2
@ETHproductions у виконанні хрому <script>print("Hello, World!")</script> відкриває діалогове вікно друку, але без фактичного тексту на ньому.
FlipTack

Відповіді:


41

Баш, 21 19 байт

lp<<<Hello,\ World!

фактична роздруківка

І ось воно.

2 байти збережено завдяки Деннісу !


1
+1 Дійсний як сценарій. Добре працює на моєму Mac. Якщо ви хочете запустити його безпосередньо в командному рядку, вам потрібно буде змінити подвійні лапки на одиничні.
Цифрова травма

чому б не було банера, щоб виглядати гарненько
juggernauthk108

@ juggernaut1996 де? Не якщо мені доведеться знову надрукувати щось
Blue

37

PowerShell , 18 байт

'Hello, World!'|lp

Спробуйте в Інтернеті!

введіть тут опис зображення


9
Не впевнений у точці посилання TIO. +1 у будь-якому випадку
Цифрова травма

1
@DigitalTrauma Я подумав, що це смішно; і це генерує посаду для мене. Ви також можете подивитися на вихід налагодження, щоб побачити, що він намагається (і не вдається) зіпсувати роботу. :-p
британіст

19
@DigitalTrauma Якщо ви введете свою адресу в поле введення, TIO надішле вам результат.
Денніс

@Денніс, якби у мене були гроші на спалення, я б надіслав відповідь, яка використовує послугу API для друку. На жаль ...
британіст

19

QBIC , 11 байт

'LPRINT `_h

Майже забув, що я створив "Привіт, світ!" команда в QBIC ...

'          Starts a code literal. This used to be "$", finally changed it.
 LPRINT `  Feeds everything from ` to the next ` directly to QBasic. 
           In this case, "LPRINT" and a space
_h         Yields "Hello, World!"

Випробувано та виявлено, що працює ідентично моїй відповіді QBasic: введіть тут опис зображення


1
гм .. так що це за посилання? Це вигадана вами мова?
eis

1
@eis Так, я створив QBIC. Посилання - це папка Google Drive з усім кодом в ній - я смоктаю в GitHub ... Це інтерпретатор на вершині QBasic (QBIC розшифровується як Quick Basic's Interpreter для Codegolf) і працює в DosBox. Перегляньте нитку Showcase для деяких прикладів (або просто відкрийте сторінку відповідей мого профілю, 75% - у QBIC). WIP, тому синтаксис і лексеми періодично змінюються.
steenbergh

ОП використовувала велику величину "W", щоб уникнути вбудованого "привіт світу" ( див. Також ): створення власної вбудованої команди для роботи не є кодом для гольфу, або ви можете зробити це "0 байт" із вбудованою поведінкою за замовчуванням для цього .
Cœur

2
@ Cœur: що майже не працює в наш час, більшість нових мов для гри в гольф використовують столицю W саме тому, що це стандарт для PPCG, і дуже ймовірно, що команда була додана без знань про цю особливу проблему (лише здогадка, що більше "Привіт, світ! "виклики будуть подані в майбутньому)

@ Cœur Ласкаво просимо до PPCG! Ви можете здивуватися, дізнавшись, що ви не перша людина, до якої виникла така особлива стурбованість. Ось гарне місце, щоб почати читати: meta.codegolf.stackexchange.com/q/4867/11261 А далі люди, які користуються гольф-кодом, витрачають багато часу на роздуми про лазівки: meta.codegolf.stackexchange.com/q/1061/ 11261
Йордан

16

Пакет, 22 байти

echo Hello, World!>prn

Це перенаправляє висновок echoкоманди на файл пристрою PRN , тобто передається безпосередньо на принтер за замовчуванням (зазвичай LPT1).

У мене немає ні DOS-машини, ні принтера, тому я боюся, що зараз не можу перевірити це, але я впевнений, що це робив ще за той день. Він не працює в Windows XP або пізнішої версії.


Це нагадує про те, коли я намагався створити файл, названий conі не зміг. А, радість файлам пристроїв DOS ...
1717

NT (і передбачуваний XP тощо) може бути налаштований для друку таким чином за допомогою команди "net". iirc "net use lpt1: something"
Jasen

16

HTML + Javascript, 37 34 байти

<body onload=print()>Hello, World!

Тестовано на Safari:

введіть тут опис зображення

Завдяки @ jimmy23013 за певну економію.


11
Це з'являється лише для того, щоб відкрити діалогове вікно друку і фактично не відправити завдання на принтер без подальшого ручного втручання
Digital Trauma

4
@DigitalTrauma JS не може цього зробити
містер Alien

1
Ви впевнені, @EriktheOutgolfer? Firefox та Chrome оцінюють код сценарію лише тоді, коли домітка закриття.
манатура

1
Так, я спробував відмовитися, </script>і це не вийшло.
пухнастий

2
-3 байти:<body onload=print()>Hello, World!
jimmy23013

13

Python 2.7, 421 байт

import zlib,base64,os;os.system("s=$'%s';lp<<<\"$s\""%zlib.decompress(base64.decodestring("eNqVkk1qxDAMha/yupNgwNfoDboReDPdhQRmrcNXP3bixA3tGEMesj/r5wXoq+YysUemI0BWlYgV\npTyAEDKEQSDucxLxJaj6gUVKE8BFsH2TIOM5iMyrcTIL3YnMqCH4X0TLONTwF3H04Z0XuRPeR3Wi\nxDOi1EZY7gUTWFa8s+z5kTgcnK3sBtbZQRtCt5LPDlrliKouDh5DYz07KB6COuETUL/YRthGxHqZ\nbjyWBAU8EFk6z350Yt97Dol65hxUow9i3zr8YGxFS61nB4szPqvDnS7CU/nFwYLIYczn97JsD3xt\nr+X5wT/ARNN3\n")))

Здається, занадто довго? Можливо, це трохи надскладне ....: P

Багато привіт світу

По всій серйозності, ось коротший:

import os;os.system("lp<<<'Hello, World!'")

Хоча не дуже цікаво.



13

привіт + lp + tr, 9 15 байт

hello|tr w W|lp

Я спочатку мав

hello|lp

Але вона мала неправильну капіталізацію на w

Привіт - це гну привіт із пакета Debian привіт


7
helloдрукує малі регістри w, як це прийнято на більшості сайтів програмування. (Я не зовсім впевнений, як великі Wрегістри стали стандартними для PPCG.)

7
@ ais523 Я думаю, що великі регістри W тут є стандартними, щоб уникнути подібних вбудованих даних.
Павло

2
Якщо капіталізація неправильна, я боюся, що вона недійсна.
Денніс

Дякую за ваші коментарі, завтра я видалю цю відповідь.
Ясен

6
Як щодо hello|tr w W|lp?
Девід Конрад

11

ZX Spectrum BASIC, 16 байт

LPRINT "Hello, World!"

LPRINT - це 1-байтове ключове слово в ZX Spectrum BASIC, кодове значення 224.


1
чи можете ви показати фотографію твердої копії.
Ясен

4
@Jasen Теоретично у мене все ще є комплект, але це було б трохи палавер, щоб викопати його і підключити його до досить старого телевізора. Вибач за те.
Ніл

ви, ймовірно, можете ввести цю команду "сліпо".
Ясен

10

MATLAB, 40 37 36 байт

Друк тексту - це не те, що зазвичай робиться в Matlab, але це можна зробити.

title 'Hello, World!'
axis off;print

Я врятував 3 байти завдяки Тому Карпентеру (використовувати titleзамість text(0,0,. Я зберег додаткові 2 байти, замінивши title('Hello, World!') withзаголовок "Привіт, світ!", А потім новий рядок замість крапки з комою.

titleдодає заголовок до фігури. Якщо фігура ще не відкрита, вона буде створена.

axis off використовується для позбавлення від кадру та осей, щоб текст з’явився окремо.

print друкує поточну цифру на принтері за замовчуванням, якщо не вказано вхідних аргументів.

Я надрукував це (успішно відповідно до діалогового вікна) на своєму принтері за замовчуванням в офісі. Я можу знайти його там і довести, але вам доведеться почекати два тижні. Після зміни за замовчуванням на pdf-принтер це вихід:

введіть тут опис зображення

^^ Більше не правильне зображення


8

QBasic, 21 байт

LPRINT"Hello, World!"

LPRINTнадсилає текст безпосередньо на принтер. На жаль, не перевірений, DosBox не підтримує оригіналу NET USE, тому я не можу перенаправлятись LPT1:до NovaPDF.

Проблеми, які у мене є ...

ОНОВЛЕННЯ: Протестовано в QB64. Отриманий PDF-файл відкрився в Microsoft Edge. Виглядає так: введіть тут опис зображення


7

8086 машинного коду, 28 байт

00000000  be 0f 01 b9 0d 00 31 d2  ac 98 cd 17 e2 fa c3 48  |......1........H|
00000010  65 6c 6c 6f 2c 20 57 6f  72 6c 64 21              |ello, World!|
0000001c

Використовується стандартний int 0x17виклик BIOS. Зараз у мене не встановлений точковий матричний принтер, тому цей код не перевіряється.

Як це працює:

            |   org 0x100
            |   use16
be 0f 01    |       mov si, msg         ; source pointer = msg
b9 0d 00    |       mov cx, 13          ; counter = length of msg
31 d2       |       xor dx, dx          ; clear dx
ac          |   @@: lodsb               ; al = *si++
98          |       cbw                 ; sign-extend al->ax (simply clears ah)
cd 17       |       int 0x17            ; send char in al to printer dx
e2 fa       |       loop @b             ; loop while (cx-- > 0)
c3          |       ret
48 65 6c    |   msg db "Hello, World!"
6c 6f 2c    |   
20 57 6f    |   
72 6c 64    |   
21          |   

1
Звичайно, щойно додав.
користувач5434231

Тепер ми говоримо!
Обмежене спокутування

6

Batch + Stuck, 12 байт

Натхненна цією відповіддю порожня застрягла програма надрукує "Привіт, світ!".

  1. Підключіть принтер до комп'ютера, порт LPT1
  2. Створіть порожній застряглий файл для інтерпретації (назва файлу a)
  3. Запустіть застряглий інтерпретатор на порожній файл і передайте результат LPT1

Код

stuck a>LPT1

4
Якщо ви використовуєте кілька мов, вам також потрібно порахувати клей, який з'єднує їх разом, як частину вашого байтового числа. Я б порахував це як 15 для програми Batch, плюс 0 через необхідність зовнішнього файлу 0 байтів.

1
Чи можете ви чітко показати пакетний скрипт Windows і явно команду, що використовується для виклику Stuck та передачі результату на принтер? Явно маю на увазі щось подібне stuck empty > LPT1. BTW, якщо для цього використовується REPL, я вважаю, що консенсус повинен бути чітко викладений (я вважаю, що це мінімізувати плутанину саме так).
redstarcoder

@ ais523 Я перемагаю - я повинен порахувати клей, і через це підняв його з 5 байт до 12
Даніель

Тут можна зберегти байт, переадресувавшись на PRN замість LPT1.
користувач5434231

1
ІМО вам потрібно додати 1 байт для імені файлу в 1 байт.
CalculatorFeline

4

GFA-Basic, 22 байти

Тестується лише на емуляторі Atari ST з паралельним портом, переспрямованим на файл. Він повинен працювати на версії Windows GFA-Basic (яка безкоштовна), але це не перевірено.

LPRINT "Hello, World!"

Примітка. Це виявляється ідентичним синтаксису QBasic .


4

Java, 330 байт

Гольф:

import java.awt.print.*;void f()throws Throwable{PrinterJob job=PrinterJob.getPrinterJob();job.setPrintable(new Printable(){public int print(java.awt.Graphics g,PageFormat f,int i){if(i==0){((java.awt.Graphics2D)g).translate(f.getImageableX(),f.getImageableY());g.drawString("Hello, World!",0,90);}return i>0?1:0;}});job.print();}

Ungolfed (лише функція імпорту плюс):

import java.awt.print.*;

void f() throws Throwable {
  PrinterJob job = PrinterJob.getPrinterJob();
  job.setPrintable(new Printable() {
    public int print(java.awt.Graphics g, PageFormat f, int i) {
      if (i == 0) {
        ((java.awt.Graphics2D) g).translate(f.getImageableX(), f.getImageableY());
        g.drawString("Hello, World!", 0, 90);
      }
      return i > NO_SUCH_PAGE ? 1 : PAGE_EXISTS;
    }
  });
  job.print();
}

Java не є чудовою мовою для гри в гольф, і певна робота в гольфі є надзвичайно поганою роботою, що стосується обладнання, включаючи друк.

Під час тестування цієї програми я встановив свій принтер PDF за замовчуванням. Це спрацювало, але також надіслало завдання друку на мій лазерний принтер, що містить 87 792 сторінки "Привіт, світ!" Я витяг лоток для паперу і скасував роботу, потім повторно перевірив. Це не повторилося. Спасибі, Windows 10.


-7 байт, змінивши 3x jobна jі i==0на i<1.
Кевін Круїссен

3

JavaScript, 37 36 байт

print(document.write`Hello, World!`)

Збережено 15 байт завдяки @manatwork та @xem!


3
Немає необхідності явно вказати window: document.write('Hello, World!');print(). Або ще коротше: print(document.write('Hello, World!')).
манатура

3
з ES6 ви навіть можете зробити: document.write`Hello, world!` (докладніше тут: xem.github.io/articles/#webspeech )
XEM

Чи друкується вона без підтвердження? Немає? Ну дуже погано, це недійсно.
CalculatorFeline

@CalculatorFeline Чому ворожнеча? Якщо ви прочитаєте виноску виклику, який ви побачите "...Existing answers that do this as of 10:48am PST 31st Dec 2016 will be grandfathered...".
Олівер

Ой. Я пропустив цю частину.
CalculatorFeline



2

Пакетна, 32 байти

echo Hello, World!>t
notepad/P t

Потрібно працювати над усіма версіями Windows без ручного втручання.



1

HTML (33)

Hello, World!<svg onload=print()>

(Запрошує вікно друку у веб-переглядачі, не друкується безпосередньо)


Чи є причина, що тег повинен бути <svg>конкретно, чи працює якийсь тег? (У багатьох тегів є короткі назви.)

7
afaik, тільки svg, img (з дійсним src), iframe та body, подія завантаження запускається при завантаженні сторінки. img без src запускає подія onerror. загалом, найкоротше, що ми знайшли, - це svg onload = ...
xem

Виклик вимагає верхнього регістру W(не те, щоб він змінив кількість байтів).
Мартін Ендер

1

APL (Dyalog) , 50 байт

Звичайно, ми могли б розкласти і використовувати рішення Batch / Bash, але натомість створимо справжнє завдання друку:

{'X.'WC'Text' 'Hello, World!'⍵⊣'X'WC'Printer'}⍳2

⎕WC являє собою W індос C об'єкта реагування

Спочатку ми створюємо об’єкт принтера (завдання друку) під назвою 'X', потім ( ) у тому, що ( 'X.') створюємо текстовий об’єкт в аргументі анонімної функції {}. Аргумент полягає в тому ⍳2, що дає перші два цілих числа ( 1 2) і означає 1% зверху і 2% зліва. Коли анонімна функція припиняється, всі її локальні змінні ( X) знищуються, що сигналізує Windows про те, що завдання друку готове до друку:


Робота з друком


0

Javascript, 36 байт

print(document.write`Hello, World!`)

Це просто відкриває діалогове вікно друку. Потрібно подальший вручну втручання для фактичного друку. Будь ласка, дивіться примітку внизу питання.
Цифрова травма


0

JavaScript + HTML, 20 байт

print()
Hello, World!


Це просто відкриває діалогове вікно друку. Потрібно подальший вручну втручання для фактичного друку. Будь ласка, дивіться примітку внизу питання.
Цифрова травма

0

C #, 174 байти

namespace System.Drawing.Printing{_=>{var p=new PrintDocument();p.PrintPage+=(s,e)=>e.Graphics.DrawString("Hello, World!",new Font("Onyx",9),Brushes.Black,0,0);p.Print();};}

Повна / відформатована версія:

namespace System.Drawing.Printing
{
    class P
    {
        static void Main(string[] args)
        {
            Action<float> f = _ =>
            {
                var p = new PrintDocument();
                p.PrintPage += (s, e) =>
                    e.Graphics.DrawString("Hello, World!", new Font("Onyx", 9), Brushes.Black, 0, 0);
                p.Print();
            };

            f(0);
        }
    }
}
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.