drukuj „Witaj, świecie!”


79

Tak naprawdę. Wydrukuj go za pomocą drukarki sprzętowej 🖨, aby utworzyć wydruk.

Wyślij niezbędne polecenia / dane do drukarki, tak aby następujący tekst został wydrukowany na kartce papieru:

Witaj świecie!

Możesz użyć dowolnej dostępnej dla ciebie drukarki podłączonej do sieci lokalnej lub sieci.

Jeśli twoja drukarka na to pozwala, powinieneś użyć 8pt lub więcej tekstu czarnym tuszem na białym papierze.

Tekst powinien pojawić się w osobnej linii. Może być ustawiony w lewo lub w prawo, jak chcesz.

Pomocne będą cyfrowe dowody fotograficzne / wideo / GIF przesłanych zgłoszeń.

Jeśli Twój sprzęt nie obsługuje papieru, ale umożliwia produkcję innych egzotycznych wydruków, takich jak drukowanie 3D, obróbka CNC lub drukowanie na poziomie atomowym , chętnie przyjmę tak interesujące zgłoszenia.


Aby to wyjaśnić, pytanie brzmi: „Wyślij niezbędne polecenia / dane do drukarki” . Wynika z tego, że nie trzeba wymagać żadnych dalszych danych ze strony użytkownika. Otwarcie okna dialogowego drukowania nie jest wystarczające. Istniejące odpowiedzi, które to robią od godziny 10:48 31 PST 31 grudnia 2016 r., Będą dziadkami (ale nie przeze mnie głosowane).


56
Podaj adres, na który możemy przesyłać zgłoszenia do weryfikacji.
steenbergh

1
@steenbergh Tak - dobra uwaga - Dowody przesłane w postaci zdjęć / filmów / plików GIF w formacie cyfrowym powinny być wystarczające.
Cyfrowy uraz

3
Warto zauważyć, że wiele starszych drukarek używa niestandardowych zestawów poleceń. Większość z nich drukuje znaki ASCII dosłownie, więc jeśli masz dostęp do jednej z przedmiotowych drukarek (lub możesz po prostu twierdzić, że to robisz), wysyłanie Hello, World!do portu drukarki powinno wystarczyć.

1
Mógłbym przysiąc, że raz spróbowałem print("Hello, World!")w konsoli Firefox i otworzyło to okno drukowania (bezużyteczne, ponieważ nie byłem w żaden sposób podłączony do drukarki), ale teraz po prostu zwraca ciąg ...
ETHproductions

2
@ETHProdukty w chrome robi <script>print("Hello, World!")</script> otwarcie okna dialogowego drukowania, ale bez faktycznego tekstu na nim.
FlipTack,

Odpowiedzi:


41

Bash, 21 19 bajtów

lp<<<Hello,\ World!

rzeczywisty wydruk

I oto jest.

2 bajty zapisane dzięki Dennisowi !


1
+1 Ważne jako skrypt. Działa dobrze na moim komputerze Mac. Jeśli chcesz uruchomić go bezpośrednio z wiersza polecenia, musisz zmienić cudzysłowy na pojedyncze.
Cyfrowy uraz

dlaczego nie mieć baneru, aby wyglądał ładnie
juggernauthk108

@ juggernaut1996 gdzie? Nie, jeśli będę musiał coś jeszcze wydrukować
Blue

37

PowerShell , 18 bajtów

'Hello, World!'|lp

Wypróbuj online!

wprowadź opis zdjęcia tutaj


9
Nie jestem pewien, jaki jest punkt łącza TIO. W każdym razie +1.
Digital Trauma

1
@DigitalTrauma Myślałem, że to było śmieszne; i generuje post dla mnie. Możesz także spojrzeć na dane wyjściowe debugowania, aby zobaczyć, że próbuje (i kończy się niepowodzeniem) buforowanie zadania. :-p
briantist

19
@DigitalTrauma Jeśli podasz swój adres w polu wejściowym, TIO prześle Ci wynik.
Dennis

@Dennis, gdybym miał pieniądze na spalenie, prześlę odpowiedź, która korzysta z usługi API-to-print. Niestety ...
briantistka

19

QBIC , 11 bajtów

'LPRINT `_h

Prawie zapomniałem, że zbudowałem „Witaj, świecie!” polecenie do 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!"

Przetestowano i stwierdzono, że działa identycznie jak moja odpowiedź QBasic: wprowadź opis zdjęcia tutaj


1
um ... więc co to za link? Czy to wymyślony przez ciebie język?
eis

1
@eis Tak, stworzyłem QBIC. Link jest folderem na Dysku Google z całym kodem - jestem do kitu na GitHub ... To interpreter na QBasic (QBIC to skrót od Codegolf dla Quick Basic) i działa w DosBox. Sprawdź kilka przykładów w wątku Prezentacja (lub po prostu otwórz stronę z odpowiedziami mojego profilu, 75% jest w QBIC). WIP, więc składnia i tokeny czasami ulegają zmianie.
steenbergh

OP użył dużej litery „W”, aby uniknąć wbudowanego „hello world” ( patrz także ). .: budowanie własnego wbudowanego polecenia dla zadania nie oznacza gry w golfa lub można ustawić wartość „0 bajtów” z wbudowanym domyślnym zachowaniem .
Cœur

2
@ Cœur: które obecnie prawie nie działa, większość nowszych języków gry w golfa używa kapitału W właśnie dlatego, że jest to standard w PPCG, i jest bardzo prawdopodobne, że polecenie zostało dodane bez wiedzy o tym konkretnym wyzwaniu (tylko przypuszczenie, że więcej: „Witaj, świecie! „wyzwania będą składane w przyszłości)

@ Cœur Witamy w PPCG! Możesz być zaskoczony, gdy dowiesz się, że nie jesteś pierwszą osobą, której dotyczy ta szczególna obawa. Oto dobre miejsce, aby zacząć czytać: meta.codegolf.stackexchange.com/q/4867/11261 Ponadto ludzie, którzy lubią golfa kodowego, spędzają dużo czasu na myśleniu o lukach
Jordan

16

Partia, 22 bajty

echo Hello, World!>prn

To przekierowuje wyjście echopolecenia do pliku urządzenia PRN , co oznacza, że ​​jest ono wysyłane bezpośrednio do domyślnej drukarki (zwykle LPT1).

Nie mam ani komputera z systemem DOS, ani drukarki, więc obawiam się, że nie mogę tego teraz przetestować, ale jestem całkiem pewien, że zrobiłem to w ciągu dnia. Nie działa w systemie Windows XP lub nowszym.


To przypomina, kiedy próbowałem utworzyć plik o nazwie coni nie mogłem. Ach, radość z plików urządzeń DOS ...
aross

NT (i prawdopodobnie XP itp.) Można skonfigurować do drukowania w ten sposób za pomocą polecenia „net”. iirc „wykorzystanie netto lpt1: coś”
Jasen

16

HTML + JavaScript, 37 34 bajty

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

Testowane w Safari:

wprowadź opis zdjęcia tutaj

Dzięki @ jimmy23013 za pewne oszczędności.


11
Pojawia się to tylko po to, aby otworzyć okno dialogowe drukowania i nie wysyłać zadania do drukarki bez dalszej ręcznej interwencji
Digital Trauma

4
@DigitalTrauma JS nie może tego zrobić
Pan Alien

1
Jesteś pewien, @EriktheOutgolfer? Firefox i Chrome oceniają kod skryptu tylko po spełnieniu tagu zamykającego.
manatwork

1
Tak, próbowałem przerwać </script>i to nie zadziałało.
puszysty

2
-3 bajty:<body onload=print()>Hello, World!
jimmy23013

13

Python 2.7, 421 bajtów

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")))

Trochę za długo? Być może jest to trochę skomplikowane ....: P

Dużo witaj świecie

Mówiąc poważnie, tutaj jest krótszy:

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

Jednak niezbyt interesujące.



13

cześć + lp + tr, 9 15 bajtów

hello|tr w W|lp

Pierwotnie miałem

hello|lp

Ale miał niewłaściwą literę na w

cześć jest gnu cześć z pakietu Debian cześć


7
hellodrukuje małe litery w, co jest niestandardowe w większości witryn programistycznych. (Nie jestem pewien, jak wielkie litery Wstały się standardem w PPCG.)

7
@ ais523 Myślę, że wielka litera W jest tutaj standardem właśnie po to, aby uniknąć wbudowania tego typu.
Pavel

2
Jeśli wielkie litery są nieprawidłowe, obawiam się, że są one nieprawidłowe.
Dennis

Dzięki za komentarze, jutro usunę tę odpowiedź.
Jasen

6
Jak o hello|tr w W|lp?
David Conrad

11

ZX Spectrum BASIC, 16 bajtów

LPRINT "Hello, World!"

LPRINT jest 1-bajtowym słowem kluczowym w ZX Spectrum BASIC, mającym kodpunkt 224.


1
czy możesz pokazać zdjęcie papierowej kopii?
Jasen

4
@Jasen Teoretycznie wciąż mam zestaw, ale wykopanie go i podłączenie do wystarczająco starego telewizora byłoby trochę męczące. Przepraszam za to.
Neil

prawdopodobnie możesz wpisać to polecenie „w ciemno”.
Jasen

10

MATLAB, 40 37 36 bajtów

Drukowanie tekstu nie jest czymś normalnym w Matlabie, ale można to zrobić.

title 'Hello, World!'
axis off;print

Zaoszczędziłem 3 bajty dzięki Tomowi Carpenterowi (użyj titlezamiast text(0,0,. Zapisałem dodatkowe 2 bajty, zastępując title('Hello, World!') withtytuł „Witaj, świecie!”, A następnie znakiem nowej linii zamiast średnika.

titledodaje tytuł do figury. Jeśli figura nie jest jeszcze otwarta, zostanie utworzona.

axis off służy do pozbycia się ramki i osi, dzięki czemu tekst pojawia się sam.

print drukuje bieżącą liczbę na drukarce domyślnej, jeśli nie podano argumentów wejściowych.

Wydrukowałem to (zgodnie z oknem dialogowym) na domyślnej drukarce w biurze. Mogę go tam znaleźć i udowodnić, ale będziesz musiał poczekać dwa tygodnie. Po zmianie domyślnej na drukarkę pdf jest to wynik:

wprowadź opis zdjęcia tutaj

^^ Niepoprawny obraz.


8

QBasic, 21 bajtów

LPRINT"Hello, World!"

LPRINTwysyła tekst bezpośrednio do drukarki. Niestety DosBox nie testuje natywnie NET USE, więc nie mogę przekierować LPT1:do NovaPDF.

Mam problemy ...

AKTUALIZACJA: Przetestowano w QB64. Wynikowy plik PDF został otwarty w Microsoft Edge. Wygląda tak: wprowadź opis zdjęcia tutaj


7

Kod maszynowy 8086, 28 bajtów

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

Wykorzystuje standardowe int 0x17wywołanie systemu BIOS. Nie mam teraz skonfigurowanej drukarki igłowej, więc ten kod nie jest testowany.

Jak to działa:

            |   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
Jasne, właśnie to dodałem.
user5434231,

Teraz rozmawiamy!
Ograniczone Zadośćuczynienie

6

Batch + Stuck, 12 bajtów

Zainspirowany tą odpowiedzią pusty zablokowany program wypisuje „Witaj, świecie!”.

  1. Podłącz drukarkę do portu LPT1 komputera
  2. Utwórz pusty zablokowany plik do interpretacji (nazwa pliku a)
  3. Uruchom zablokowany interpreter na pustym pliku i potokuj wynik do LPT1

Kod

stuck a>LPT1

4
Jeśli używasz wielu języków, musisz również policzyć klej, który łączy je ze sobą jako część liczby bajtów. Policzyłbym to jako 15 dla programu wsadowego plus 0 z powodu potrzeby zewnętrznego pliku 0-bajtowego.

1
Czy potrafisz wyraźnie pokazać skrypt wsadowy systemu Windows i jawnie polecenie użyte do wywołania zatrzymania i przekazania wyniku do drukarki? Mówiąc wprost mam na myśli coś takiego stuck empty > LPT1. BTW, jeśli używa REPL, uważam, że konsensus powinien być jasno określony (uważam, że ma to na celu zminimalizowanie zamieszania dokładnie tak).
redstarcoder

@ ais523 Zdobywam - powinienem policzyć klej i dlatego podniosłem go z 5 bajtów do 12
Daniel

Możesz zapisać bajt tutaj, przekierowując do PRN zamiast LPT1.
user5434231,

1
IMO musisz dodać 1 bajt dla 1 bajtowej nazwy pliku.
CalculatorFeline

4

GFA-Basic, 22 bajty

Testowane tylko na emulatorze Atari ST z portem równoległym przekierowanym do pliku. Powinien działać na wersji GFA-Basic dla Windows (która jest darmowa), ale nie jest to testowane.

LPRINT "Hello, World!"

Uwaga: okazuje się, że jest identyczna ze składnią QBasic .


4

Java, 330 bajtów

Gra w golfa:

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

Niegolfowany (tylko import plus funkcja):

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 nie jest świetnym językiem golfowym, a na pewno gra wyjątkowo źle, grając w wszystko związane ze sprzętem, włączając w to drukowanie.

Podczas testowania tego programu ustawiłem moją drukarkę PDF jako domyślną. Działało, ale także wysłało zadanie drukowania do mojej drukarki laserowej zawierające 87 792 strony „Witaj, świecie!” Wyjąłem tacę papieru i anulowałem zadanie, a następnie ponownie przetestowałem. To się nie powtórzyło. Dzięki, Windows 10.


-7 bajtów, zmieniając 3x jobna ji i==0na i<1.
Kevin Cruijssen

3

JavaScript, 37 36 bajtów

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

Zaoszczędź 15 bajtów dzięki @manatwork i @xem!


3
Nie ma potrzeby, aby wyraźnie określić window: document.write('Hello, World!');print(). Albo jeszcze krócej: print(document.write('Hello, World!')).
manatwork

3
z ES6 można nawet zrobić: document.write`Hello, world!` (więcej informacji tutaj: xem.github.io/articles/#webspeech )
xem

Czy drukuje bez potwierdzenia? Nie? Cóż, szkoda, to jest nieprawidłowe.
CalculatorFeline

@CalculatorFeline Dlaczego wrogość? Jeśli przeczytasz przypis do wyzwania, które zobaczysz "...Existing answers that do this as of 10:48am PST 31st Dec 2016 will be grandfathered...".
Oliver

O. Tęskniłem za tą częścią.
CalculatorFeline


2

c #, 259 250 bajtów

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

Przykładowe dane wyjściowe


2

Partia, 32 bajty

echo Hello, World!>t
notepad/P t

Powinien działać na wszystkich wersjach systemu Windows bez konieczności ręcznej interwencji.


1

Rakieta 35 bajtów

(system("echo 'Hello World!'\|lp"))

1

HTML (33)

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

(Monituje okno drukowania w przeglądarce, nie drukuje bezpośrednio)


Czy istnieje powód, dla którego tag musi być <svg>konkretny, czy też może działać? (Wiele tagów ma krótsze nazwy.)

7
afaik, tylko svg, img (z poprawnym src), iframe i body mają zdarzenie onload wyzwalane podczas ładowania strony. img bez src wyzwala zdarzenie onerror.
Podsumowując

Wyzwanie wymaga wielkich liter W(nie zmienia to liczby bajtów).
Martin Ender

1

APL (Dyalog) , 50 bajtów

Oczywiście możemy wydać polecenie i skorzystać z rozwiązania Batch / Bash, ale zamiast tego stwórzmy prawdziwe zadanie drukowania:

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

⎕WC Jest W indows C Reate Przedmiotem

Najpierw tworzymy obiekt drukarki (zadanie drukowania) 'X', a następnie ( ) w tym ( 'X.') tworzymy obiekt tekstowy na argument funkcji anonimowej {}. Argument brzmi ⍳2: co daje pierwsze dwie liczby całkowite ( 1 2) i oznacza 1% od góry i 2% od lewej. Po zakończeniu funkcji anonimowej wszystkie jej zmienne lokalne ( X) są niszczone, co sygnalizuje systemowi Windows, że zadanie drukowania jest gotowe do wydrukowania:


Zadanie drukowania


0

JavaScript, 36 bajtów

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

To po prostu otwiera okno dialogowe drukowania. Aby wydrukować, konieczne są dalsze ręczne interwencje. Zobacz notatkę na dole pytania.
Cyfrowa trauma


0

JavaScript + HTML, 20 bajtów

print()
Hello, World!


To po prostu otwiera okno dialogowe drukowania. Aby wydrukować, konieczne są dalsze ręczne interwencje. Zobacz notatkę na dole pytania.
Cyfrowa trauma

0

C #, 174 bajtów

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

Wersja pełna / sformatowana:

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);
        }
    }
}
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.