Aufdruck "Hallo, Welt!"

79

Ja wirklich. Drucken Sie es mit einem Hardwaredrucker 🖨 aus, um eine Hardcopy zu erstellen.

Senden Sie die erforderlichen Befehle / Daten an Ihren Drucker, sodass der folgende Text auf ein Blatt Papier gedruckt wird:

Hallo Welt!

Sie können jeden lokalen oder über das Netzwerk verbundenen Drucker verwenden, der Ihnen zur Verfügung steht.

Wenn Ihr Drucker dies zulässt, sollten Sie mindestens 8pt Text in schwarzer Tinte auf weißem Papier verwenden.

Der Text sollte in einer eigenen Zeile erscheinen. Es kann nach Belieben nach links oder rechts positioniert werden.

Ein digitales Foto- / Video- / GIF-Nachweis der Einreichungen ist hilfreich.

Wenn Ihre Hardware kein Papier kann, aber eine andere exotische Hardcopy-Produktion wie 3D-Druck, CNC-Bearbeitung oder Drucken auf atomarer Ebene zulässt , nehme ich gerne solche interessanten Beiträge an.


Zur Verdeutlichung wird in der Frage gefragt, ob die erforderlichen Befehle / Daten an Ihren Drucker gesendet werden sollen . Dies impliziert, dass keine weiteren Benutzereingaben erforderlich sein sollten. Das Öffnen eines Druckdialogs reicht nicht aus. Bestehende Antworten, die dies ab 10:48 Uhr PST, 31. Dezember 2016, tun, werden großväterlich behandelt (aber nicht von mir bewertet).

Digitales Trauma
quelle
56
Bitte geben Sie die Adresse an, an die wir Einsendungen zur Überprüfung senden können.
Steenbergh
1
@steenbergh Yep - guter Punkt - Digitale Fotos / Videos / GIF-Beweise für Einsendungen sollten gut genug sein.
Digitales Trauma
3
Es ist erwähnenswert, dass viele ältere Drucker benutzerdefinierte Befehlssätze verwenden. Die meisten dieser ASCII-Zeichen werden buchstäblich gedruckt. Wenn Sie also Zugriff auf einen der fraglichen Drucker haben (oder dies nur behaupten können), sollte das Senden Hello, World!an den Druckeranschluss ausreichen.
1
Ich könnte schwören, dass ich es einmal print("Hello, World!")in der Firefox-Konsole versucht habe und der Druckdialog geöffnet wurde (nutzlos, weil ich in keiner Weise mit einem Drucker verbunden war), aber jetzt wird nur der String zurückgegeben ...
ETHproductions 31.12.16
2
@ETHproductions in chrome doing <script>print("Hello, World!")</script> öffnet den Druckdialog , jedoch ohne den eigentlichen Text.
FlipTack

Antworten:

41

Bash, 21 bis 19 Bytes

lp<<<Hello,\ World!

tatsächlicher Ausdruck

Und da ist es.

2 Bytes gespart dank Dennis !

Blau
quelle
1
+1 Gültig als Skript. Funktioniert gut auf meinem Mac. Wenn Sie es direkt in der Befehlszeile ausführen möchten, müssen Sie die doppelten Anführungszeichen in einfache Anführungszeichen ändern.
Digitales Trauma
warum nicht Banner müssen ot aussehen hübsch
juggernauthk108
@ juggernaut1996 wo? Nicht, wenn ich etwas noch einmal ausdrucken muss
Blau
37

PowerShell , 18 Byte

'Hello, World!'|lp

Probieren Sie es online!

Bildbeschreibung hier eingeben

Briantist
quelle
9
Ich bin mir nicht sicher, woher der TIO-Link stammt. +1 sowieso.
Digital Trauma
1
@DigitalTrauma Ich fand es lustig; und es generiert den Beitrag für mich. Sie können sich auch die Debug-Ausgabe ansehen, um zu sehen, dass versucht wird (und dies fehlschlägt), den Job zu spoolen. :-p
Briantist
19
@DigitalTrauma Wenn Sie Ihre Adresse in das Eingabefeld eingeben, wird Ihnen TIO das Ergebnis zusenden.
Dennis
@ Tennis Wenn ich Geld zum Brennen hätte, würde ich eine Antwort übermitteln, die einen API-to-Print-Dienst verwendet. Ach ...
Briantist
19

QBIC , 11 Bytes

'LPRINT `_h

Fast vergessen, dass ich ein "Hallo, Welt!" Befehl in 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!"

Getestet und als identisch mit meiner QBasic-Antwort befunden: Bildbeschreibung hier eingeben

steenbergh
quelle
1
ähm .. also, was ist das für ein Link? Ist es eine von Ihnen erfundene Sprache?
uvb
1
@eis Ja, ich habe QBIC gemacht. Der Link ist ein Google Drive-Ordner mit dem gesamten darin enthaltenen Code - ich bin ein Fan von GitHub ... Es ist ein Interpreter auf QBasic (QBIC steht für Quick Basics Interpreter für Codegolf) und läuft in DosBox. Schauen Sie sich den Showcase-Thread für einige Beispiele an (oder öffnen Sie einfach die Antwortseite meines Profils, 75% sind in QBIC). WIP, daher werden Syntax und Token gelegentlich verschoben.
Steenbergh
Das OP verwendete ein "W" in Großbuchstaben, um ein eingebautes "Hallo Welt" zu vermeiden ( siehe auch ): Das Erstellen eines eigenen eingebauten Befehls für den Job ist kein Code-Golfen, oder Sie könnten es mit einem eingebauten Standardverhalten zu "0 Bytes" machen .
Cœur
2
@ Cœur: Das funktioniert heutzutage kaum noch. Die meisten neueren Golfsprachen verwenden das Kapital W, gerade weil es bei PPCG Standard ist und es sehr wahrscheinlich ist, dass der Befehl ohne Kenntnis dieser besonderen Herausforderung hinzugefügt wurde (nur eine Vermutung, dass mehr "Hallo, Welt! "Herausforderungen würden in Zukunft eingereicht werden)
@ Cœur Willkommen bei PPCG! Es mag Sie überraschen, dass Sie nicht die erste Person sind, der dieses spezielle Anliegen aufgefallen ist. Hier ist ein guter Ort, um mit dem Lesen zu beginnen: meta.codegolf.stackexchange.com/q/4867/11261 Und Menschen, die gerne Code-Golf spielen, denken viel über Lücken nach: meta.codegolf.stackexchange.com/q/1061/ 11261
Jordan
16

Batch, 22 Bytes

echo Hello, World!>prn

Dadurch wird die Ausgabe des echoBefehls an die Gerätedatei PRN umgeleitet , was bedeutet, dass sie direkt an den Standarddrucker (normalerweise LPT1) gesendet wird.

Ich besitze weder einen DOS-Rechner noch einen Drucker, daher kann ich das leider noch nicht testen, aber ich bin mir ziemlich sicher, dass ich das schon früher getan habe. Es funktioniert nicht unter Windows XP oder höher.

Dennis
quelle
Dies erinnert mich daran, als ich versucht habe, eine Datei mit dem Namen zu erstellen, conund dies war nicht möglich. Ah, die Freude an DOS-Gerätedateien ...
etwa am
NT (und vermutlich XP usw.) können so konfiguriert werden, dass sie mit dem Befehl "net" auf diese Weise drucken. iirc "net use lpt1: something"
Jasen
16

HTML + Javascript, 37 34 Bytes

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

In Safari getestet:

Bildbeschreibung hier eingeben

Vielen Dank an @ jimmy23013 für einige Einsparungen.

flauschige
quelle
11
Dies scheint nur das Dialogfeld Drucken zu öffnen und den Auftrag nicht ohne weiteres manuelles Eingreifen an den Drucker zu senden
Digital Trauma
4
@DigitalTrauma JS kann das nicht
Mr. Alien
1
Bist du sicher, @EriktheOutgolfer? Firefox und Chrome werten den Skriptcode nur aus, wenn das schließende Tag erfüllt ist.
Manatwork
1
Ja, ich habe versucht aufzuhören </script>und es hat nicht funktioniert.
flauschige
2
-3 Bytes:<body onload=print()>Hello, World!
jimmy23013
13

Python 2.7, 421 Bytes

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

Scheint ein bisschen zu lang? Vielleicht ist es etwas zu kompliziert ....: P

Viel Hallo Welt

Im Ernst, hier ist eine kürzere:

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

Nicht sehr interessant.

Calconym
quelle
13

hallo + lp + tr, 9 15 Bytes

hello|tr w W|lp

Ich hatte ursprünglich

hello|lp

Aber es hatte die falsche Großschreibung auf dem w

hallo ist gnu hallo aus dem Debian-Paket hallo

Jasen
quelle
7
hellodruckt Kleinbuchstaben w, wie es auf den meisten Programmierseiten üblich ist. (Ich bin mir nicht ganz sicher, wie die Großschreibung Wbei PPCG zum Standard wurde.)
7
@ ais523 Ich denke, W in Großbuchstaben ist hier Standard, um solche Einbauten zu vermeiden.
Pavel
2
Wenn die Großschreibung falsch ist, ist dies leider ungültig.
Dennis
Vielen Dank für Ihre Kommentare, ich werde diese Antwort morgen löschen.
Jasen
6
Wie wäre es hello|tr w W|lp?
David Conrad
11

ZX Spectrum BASIC, 16 Byte

LPRINT "Hello, World!"

LPRINT ist ein 1-Byte-Schlüsselwort in ZX Spectrum BASIC mit Codepunkt 224.

Neil
quelle
1
Kannst du ein Foto von der Hardcopy zeigen?
Jasen
4
@Jasen Theoretisch habe ich das Kit immer noch in der Hand, aber es wäre ein bisschen palaver, es auszugraben und an einen ausreichend alten Fernseher anzuschließen. Das tut mir leid.
Neil
Sie könnten diesen Befehl wahrscheinlich "blind" eingeben.
Jasen
10

MATLAB, 40 37 36 Bytes

Das Drucken von Text ist in Matlab normalerweise nicht möglich.

title 'Hello, World!'
axis off;print

Ich habe dank Tom Carpenter 3 Bytes gespart (verwenden Sie titleanstelle von text(0,0,. Ich habe zusätzliche 2 Bytes gespart, indem ich den title('Hello, World!') withTitel 'Hello, World!'

titleFügt einer Figur einen Titel hinzu. Wenn eine Figur noch nicht geöffnet ist, wird sie erstellt.

axis off wird verwendet, um den Rahmen und die Achsen zu entfernen, sodass der Text alleine angezeigt wird.

print Gibt die aktuelle Zahl auf dem Standarddrucker aus, wenn keine Eingabeargumente angegeben wurden.

Ich habe dies (gemäß Dialogfeld erfolgreich) auf meinem Standarddrucker im Büro ausgedruckt. Ich kann es dort abrufen und nachweisen, aber Sie müssen zwei Wochen warten. Nach der Änderung der Standardeinstellung in einen PDF-Drucker ist dies die Ausgabe:

Bildbeschreibung hier eingeben

^^ Nicht mehr das richtige Bild.

Stewie Griffin
quelle
8

QBasic, 21 Bytes

LPRINT"Hello, World!"

LPRINTSendet Text direkt an den Drucker. Leider nicht getestet, unterstützt DosBox nicht von Haus aus NET USE, daher kann ich nicht umleitenLPT1: umleiten kann.

Die Probleme, die ich habe ...

UPDATE: Getestet in QB64. Das resultierende PDF wurde in Microsoft Edge geöffnet. Sieht aus wie das: Bildbeschreibung hier eingeben

steenbergh
quelle
7

8086 Maschinencode, 28 Bytes

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

Verwendet den Standard int 0x17 BIOS-Aufruf. Ich habe meinen Nadeldrucker derzeit nicht eingerichtet, daher ist dieser Code ungetestet.

Wie es funktioniert:

            |   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          |   
user5434231
quelle
1
Klar, habe es einfach hinzugefügt.
user5434231
Jetzt reden wir!
Eingeschränktes Sühnopfer
6

Batch + Stuck, 12 Bytes

Angeregt durch diese Antwort ein leeres stecken Programm druckt „Hallo, Welt!“.

  1. Haben Sie einen Drucker an den LPT1-Anschluss Ihres Computers angeschlossen
  2. Erstellen Sie eine leere nicht mehr zu interpretierende Datei (Dateiname a)
  3. Führen Sie den feststeckenden Interpretter für die leere Datei aus und leiten Sie das Ergebnis an LPT1 weiter

Code

stuck a>LPT1
Daniel
quelle
4
Wenn Sie mehrere Sprachen verwenden, müssen Sie auch den Klebstoff, der sie miteinander verbindet, als Teil Ihrer Byteanzahl zählen. Ich würde dies als 15 für das Batch-Programm zählen, plus 0, da eine externe 0-Byte-Datei benötigt wird.
1
Können Sie das Windows-Stapelskript und explizit den Befehl zum Aufrufen von Stuck und zum Übergeben des Ergebnisses an den Drucker deutlich anzeigen? Mit explizit meine ich so etwas wie stuck empty > LPT1. Übrigens, wenn hier eine REPL verwendet wird, sollte meines Erachtens klar festgelegt werden (ich glaube, es ist genau so, um Verwirrung zu minimieren).
Redstarcoder
@ ais523 Ich erobere - ich sollte den Kleber zählen und aus diesem Grund von 5 Byte auf 12 erhöhen
Daniel
Sie können hier ein Byte speichern, indem Sie anstelle von LPT1 zu PRN umleiten.
user5434231
1
IMO müssen Sie 1 Byte für den 1-Byte-Dateinamen hinzufügen.
CalculatorFeline
4

GFA-Basic, 22 Bytes

Nur auf einem Atari ST-Emulator getestet, bei dem der parallele Anschluss in eine Datei umgeleitet wurde. Es sollte auf der Windows-Version von GFA-Basic (die kostenlos ist) funktionieren , dies ist jedoch nicht getestet.

LPRINT "Hello, World!"

Hinweis: Dies stellt sich als identisch mit der QBasic- Syntax heraus.

Arnauld
quelle
4

Java, 330 Bytes

Golf gespielt:

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 (nur Import plus Funktion):

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 ist keine großartige Golfsprache, und manche machen einen außergewöhnlich schlechten Job, wenn sie irgendetwas spielen hardwarebezogenen, Druck enthalten.

Beim Testen dieses Programms habe ich meinen PDF-Drucker als Standard festgelegt. Es hat funktioniert, hat aber auch einen Druckauftrag an meinen Laserdrucker gesendet, der 87.792 Seiten mit "Hello, World!" Ich zog die Papierkassette heraus, brach den Auftrag ab und testete erneut. Es ist nicht wieder vorgekommen. Danke, Windows 10.

Rɪᴋᴇʀ
quelle
-7 Bytes durch Ändern von 3x jobauf jund i==0auf i<1.
Kevin Cruijssen
3

JavaScript, 37 36 Bytes

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

15 Bytes gespart dank @manatwork und @xem!

Oliver
quelle
3
Keine Notwendigkeit, explizit angeben window: document.write('Hello, World!');print(). Oder noch kürzer: print(document.write('Hello, World!')).
Handarbeit
3
Mit ES6 können Sie sogar Folgendes tun: document.write`Hello, world!` (weitere Informationen hier: xem.github.io/articles/#webspeech )
xem
Wird ohne Bestätigung gedruckt? Nein? Schade, es ist ungültig.
CalculatorFeline
@CalculatorFeline Warum die Feindseligkeit? Wenn Sie die Fußnote der Herausforderung lesen, würden Sie sehen "...Existing answers that do this as of 10:48am PST 31st Dec 2016 will be grandfathered...".
Oliver
Oh. Ich habe diesen Teil verpasst.
CalculatorFeline
2

Mathematica, 29 Bytes

NotebookPrint@"Hello, World!"

Bildbeschreibung hier eingeben

Alephalpha
quelle
2

c #, 259 250 Bytes

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

Beispielausgabe

Johan du Toit
quelle
2

Batch, 32 Bytes

echo Hello, World!>t
notepad/P t

Sollte auf allen Windows-Versionen funktionieren, ohne dass ein manueller Eingriff erforderlich ist.

Johan du Toit
quelle
1

Schläger 35 Bytes

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

HTML (33)

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

(Fordert ein Druckfenster im Browser auf, druckt nicht direkt)

xem
quelle
Gibt es einen Grund, warum das Tag <svg>spezifisch sein muss, oder würde irgendein Tag funktionieren? (Viele Tags haben kürzere Namen.)
7
Bei afaik, nur svg, img (mit einem gültigen src), iframe und body wird beim Laden der Seite ein Onload-Ereignis ausgelöst. img without src löst ein Fehlerereignis aus. Alles in allem ist die kürzeste, die wir gefunden haben, svg onload = ...
xem
Bei der Abfrage wird nach Großbuchstaben gefragt W(nicht nach einer Änderung der Bytezahl).
Martin Ender
1

APL (Dyalog) , 50 Bytes

Natürlich können wir auch eine Batch / Bash-Lösung verwenden, aber wir erstellen stattdessen einen echten Druckauftrag:

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

⎕WC is W indows C reate object

Zuerst erstellen wir ein Druckerobjekt (einen Druckauftrag) mit dem Namen 'X'( ) , dann 'X.'erstellen wir in diesem ( ) ein Textobjekt mit dem Argument der anonymen Funktion {}. Das Argument ist ⍳2, das die ersten beiden Ganzzahlen ( 1 2) ergibt und 1% von oben und 2% von links bedeutet. Wenn die anonyme Funktion beendet wird, werden alle ihre lokalen Variablen ( X) zerstört, was Windows signalisiert, dass der Druckauftrag zum Drucken bereit ist:


Druckauftrag

Adam
quelle
0

Javascript, 36 Bytes

print(document.write`Hello, World!`)
ericw31415
quelle
Dies öffnet nur den Druckdialog. Weitere manuelle Eingriffe sind erforderlich, um tatsächlich zu drucken. Bitte beachten Sie den Hinweis am Ende der Frage.
Digital Trauma
0

JavaScript + HTML, 20 Bytes

print()
Hello, World!

Zottelig
quelle
Dies öffnet nur den Druckdialog. Weitere manuelle Eingriffe sind erforderlich, um tatsächlich zu drucken. Bitte beachten Sie den Hinweis am Ende der Frage.
Digital Trauma
0

C #, 174 Bytes

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

Voll / Formatierte Version:

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);
        }
    }
}
TheLethalCoder
quelle