печать «Привет, мир!»


79

Да, действительно. Распечатайте его на аппаратном принтере 🖨, чтобы создать печатную копию.

Отправьте необходимые команды / данные на принтер, чтобы на листе бумаги был напечатан следующий текст:

Привет, мир!

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

Если ваш принтер позволяет, вы должны использовать 8pt или больше текста черными чернилами на белой бумаге.

Текст должен появиться в отдельной строке. Он может быть левым или правым, как вы хотите.

Цифровые фото / видео / GIF доказательства представлений будут полезны.

Если ваше оборудование не может делать бумагу, но позволяет производить другие экзотические печатные работы, такие как 3D-печать, обработка с ЧПУ или печать на атомном уровне , тогда я с радостью приму такие интересные материалы.


Чтобы уточнить, вопрос задается «Отправить необходимые команды / данные на ваш принтер» . Смысл этого заключается в том, что дальнейший ввод данных пользователем не требуется. Открытие диалогового окна печати недостаточно. Существующие ответы, которые делают это по состоянию на 10:48 по тихоокеанскому времени 31 декабря 2016 года, будут одобрены (но я не проголосовал).


56
Пожалуйста, укажите адрес, по которому мы можем отправить заявки для проверки.
— Steenbergh

1
@steenbergh Да - хорошая точка зрения. Цифровое фотографическое / видео / GIF подтверждение должно быть достаточно хорошим.
— Цифровая травма

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

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

2
@ETHproductions в Chrome делает <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
— briantist

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 для переводчика Codegolf), и он работает в DosBox. Проверьте ветку Showcase для некоторых примеров (или просто откройте страницу ответов моего профиля, 75% в QBIC). WIP, поэтому синтаксис и токены иногда меняются.
— Стинберг

ОП использовал заглавную букву "W", чтобы избежать встроенного слова "здравствуй, мир" ( см. Также ): создание собственной встроенной команды для задания - это не игра в код, или вы можете сделать ее "0 байтов" со встроенным поведением по умолчанию для этого. ,
— Cœur

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

@ Cœur Добро пожаловать в PPCG! Вы можете быть удивлены, узнав, что вы не первый человек, с которым это особое беспокойство произошло. Вот хорошее место, чтобы начать читать: meta.codegolf.stackexchange.com/q/4867/11261 И, кроме того, люди, которые любят играть в код, тратят много времени на размышления об лазейках
— Иордания

16

Пакетный, 22 байта

echo Hello, World!>prn

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

У меня нет ни машины с DOS, ни принтера, поэтому я боюсь, что не могу проверить это прямо сейчас, но я уверен, что сделал это в тот же день. Это не работает на Windows XP или позже.


Это напоминает, когда я пытался создать файл с именем conи не смог. Ах, радость файлов устройств DOS ...
— aross

NT (и предположительно XP и т. Д.) Можно настроить для печати таким образом, используя команду «net». iirc "net use lpt1: что-то"
— Jasen

16

HTML + Javascript, 37 34 байта

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

Протестировано в Safari:

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

Спасибо @ jimmy23013 за некоторую экономию.


11
Это появляется только для того, чтобы открыть диалоговое окно печати и фактически не отправлять задание на принтер без дальнейшего ручного вмешательства
— Digital Trauma

4
@DigitalTrauma JS не может этого сделать
— г-н Чужой

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

привет это GNU привет из пакета 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 является однобайтовым ключевым словом в 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заголовок «Hello, World!», За которым следует новая строка вместо точки с запятой.

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
Конечно, только что добавил.
— user5434231

Сейчас мы говорим!
— Ограниченное искупление

6

Пакет + Застрял, 12 байт

Вдохновленный этим ответом пустая застрявшая программа печатает «Hello, World!».

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

Код

stuck a>LPT1

4
Если вы используете несколько языков, вам также необходимо подсчитать клей, который соединяет их вместе, как часть вашего количества байтов. Я бы посчитал это 15 для пакетной программы плюс 0 из-за необходимости внешнего 0-байтового файла.

1
Можете ли вы четко показать пакетный сценарий Windows и явно команду, использованную для вызова Stuck и передачи результата на принтер? Под явным я имею в виду нечто подобное stuck empty > LPT1. Кстати, если это использует REPL, я считаю, что консенсус должен быть четко сформулирован (я полагаю, что это сводит к минимуму путаницу именно так).
— redstarcoder

@ ais523 Я побеждаю - я должен посчитать клей, и из-за этого поднял его с 5 байтов до 12
— Даниил

Вы можете сохранить байт, перенаправив на PRN вместо LPT1.
— user5434231

1
IMO, вам нужно добавить 1 байт для 1-байтового имени файла.
— CalculatorFeline

4

GFA-Basic, 22 байта

Проверено только на эмуляторе Atari ST с параллельным портом, перенаправленным в файл. Он должен работать на версии GFA-Basic для Windows (которая бесплатна), но это не проверено.

LPRINT "Hello, World!"

Примечание: это оказывается идентичным синтаксису QBasic .


4

Java, 330 байт

Golfed:

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();
}

Ява не является отличным языком для игры в гольф, и определенно плохо справляется с играми , связанными с оборудованием, включая печать.

При тестировании этой программы я установил свой принтер PDF по умолчанию. Это сработало, но и отправило на мой лазерный принтер задание на печать, содержащее 87 792 страницы «Hello, World!» Я вытащил лоток для бумаги и отменил задание, а затем повторил. Это больше не повторилось. Спасибо, Windows 10.


-7 байт путем изменения 3х 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

c #, 259 250 байт

using System.Drawing;using System.Drawing.Printing;struct p{static void Main(){var p=new PrintDocument();p.PrintPage+=(s,e)=>e.Graphics.DrawString("Hello,World!",new Font("Arial",12),new SolidBrush(Color.Black),new Rectangle(0,0,999,99));p.Print();}}

Пример вывода


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 имеют событие onload, запускаемое при загрузке страницы. img без src вызывает событие ошибки. В общем, самое короткое, что мы нашли, это svg onload = ...
— xem

Задача запрашивает верхний регистр W(не то, что это меняет количество ваших байтов).
— Мартин Эндер

1

APL (Dyalog) , 50 байтов

Конечно, мы можем выложить и использовать пакетное / Bash решение, но вместо этого давайте создадим реальное задание на печать:

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

⎕WC это W INDOWS С reate объект

Сначала мы создаем объект принтера (задание на печать) с именем '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.