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


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.