stampa "Ciao, mondo!"


79

Sì davvero. Stampa con una stampante hardware 🖨 per creare una copia cartacea.

Invia i comandi / dati necessari alla tua stampante in modo che il seguente testo sia stampato su un pezzo di carta:

Ciao mondo!

È possibile utilizzare qualsiasi stampante locale o di rete disponibile.

Se la stampante lo consente, è necessario utilizzare testo a 8 o più caratteri con inchiostro nero su carta bianca.

Il testo dovrebbe apparire su una sua riga. Può essere posizionato a sinistra o a destra come desideri.

Saranno utili prove fotografiche / video / GIF digitali degli invii.

Se il tuo hardware non è in grado di fare carta, ma consente la produzione di altre copie cartacee esotiche come la stampa 3D, la lavorazione CNC o la stampa a livello atomico , allora sarò felice di accettare invii così interessanti.


Per chiarire, la domanda chiede "Invia i comandi / dati necessari alla tua stampante" . Ciò implica che non dovrebbero essere richiesti ulteriori input da parte dell'utente. L'apertura di una finestra di dialogo di stampa non è sufficiente. Le risposte esistenti che lo fanno alle 10:48 del 31 dicembre 2016 PST saranno nonne (ma non votate da me).


56
Fornisci l'indirizzo al quale possiamo inviare gli invii per la verifica.
Steenbergh,

1
@steenbergh Sì - buon punto - Le prove fotografiche / video / GIF digitali degli invii dovrebbero essere abbastanza buone.
Trauma digitale il

3
Vale la pena notare che molte stampanti meno recenti utilizzano set di comandi personalizzati. La maggior parte di questi caratteri ASCII vengono stampati letteralmente, quindi se si ha accesso a una delle stampanti in questione (o si può semplicemente affermare di farlo), l'invio Hello, World!alla porta della stampante dovrebbe essere sufficiente.

1
Potrei giurare di aver provato una volta print("Hello, World!")nella console di Firefox e ha aperto il dialogo di stampa (inutile perché non ero collegato a una stampante in alcun modo), ma ora restituisce solo la stringa ...
ETHproductions

2
@ETHproductions in chrome doing <script>print("Hello, World!")</script> apre la finestra di dialogo di stampa, ma senza il testo reale su di essa.
FlipTack

Risposte:


41

Bash, 21 19 byte

lp<<<Hello,\ World!

stampa effettiva

Ed eccolo qui.

2 byte salvati grazie a Dennis !


1
+1 Valido come script. Funziona bene sul mio Mac. Se si desidera eseguirlo direttamente dalla riga di comando, è necessario modificare le virgolette doppie in virgolette singole.
Trauma digitale il

perché non avere uno striscione per far sembrare bello
juggernauthk108

@ juggernaut1996 dove? Non se devo stampare di nuovo qualcosa
Blue

37

PowerShell , 18 byte

'Hello, World!'|lp

Provalo online!

inserisci qui la descrizione dell'immagine


9
Non sono sicuro del punto del collegamento TIO. +1 comunque.
Trauma digitale il

1
@DigitalTrauma Ho pensato che fosse divertente; e genera il post per me. Puoi anche guardare l'output di debug solo per vedere che sta tentando (e non riesce) di eseguire lo spooling del lavoro. :-p
briantist

19
@DigitalTrauma Se inserisci il tuo indirizzo nel campo di inserimento, TIO ti invierà il risultato.
Dennis,

@Dennis se avessi soldi da bruciare, invierei una risposta che utilizza un servizio API-to-print. Ahimè ...
briantista il

19

QBIC , 11 byte

'LPRINT `_h

Quasi dimenticato di aver costruito un "Ciao, mondo!" comando 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!"

Testato e trovato funzionante identico alla mia risposta QBasic: inserisci qui la descrizione dell'immagine


1
um .. quindi qual è quel link? È una lingua inventata da te?
eis,

1
Sì, ho creato QBIC. Il link è una cartella di Google Drive con tutto il codice in esso - Faccio schifo su GitHub ... È un interprete in cima a QBasic (QBIC sta per Interprete di Quick Basic per Codegolf) e funziona in DosBox. Dai un'occhiata al thread Showcase per alcuni esempi (o semplicemente apri la pagina di risposte del mio profilo, il 75% è in QBIC). WIP, quindi la sintassi e i token occasionalmente vengono spostati.
Steenbergh,

L'OP ha usato la "W" maiuscola per evitare "ciao mondo" incorporato ( vedi anche ) .: costruire il proprio comando incorporato per il lavoro non è golfare il codice, oppure si potrebbe renderlo "0 byte" con un comportamento predefinito incorporato per quello .
Cuor

2
@Cour: che al giorno d'oggi difficilmente funziona, la maggior parte dei linguaggi del golf più recenti usano la W maiuscola proprio perché è standard su PPCG, ed è molto probabile che il comando sia stato aggiunto senza alcuna conoscenza di questa particolare sfida (solo una supposizione che più "Ciao, mondo! "le sfide verranno presentate in futuro)

@ Cœur Benvenuti in PPCG! Potresti essere sorpreso di apprendere che non sei la prima persona a cui si è verificata quella particolare preoccupazione. Ecco un buon posto per iniziare a leggere: meta.codegolf.stackexchange.com/q/4867/11261 E inoltre, le persone che amano il golf del codice passano molto tempo a pensare alle lacune: meta.codegolf.stackexchange.com/q/1061/ 11261
Giordania,

16

Lotto, 22 byte

echo Hello, World!>prn

Questo reindirizza l'output del echocomando sul file del dispositivo PRN , il che significa che viene inviato direttamente alla stampante predefinita (di solito LPT1).

Non ho né una macchina DOS né una stampante, quindi temo di non poterlo provare in questo momento, ma sono abbastanza certo di averlo fatto in passato. Non funziona su Windows XP o versioni successive.


Questo mi ricorda quando ho provato a creare un file chiamato cone non sono riuscito a farlo. Ah, la gioia di file di dispositivo DOS ...
aross

NT (e presumibilmente XP ecc.) Possono essere configurati per stampare in questo modo usando il comando "net". iirc "net use lpt1: qualcosa"
Jasen

16

HTML + Javascript, 37 34 byte

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

Testato in Safari:

inserisci qui la descrizione dell'immagine

Grazie a @ jimmy23013 per alcuni risparmi.


11
Questo appare solo per aprire la finestra di dialogo di stampa e non inviare effettivamente il lavoro alla stampante senza ulteriore intervento manuale
Digital Trauma

4
@DigitalTrauma JS non può farlo
Mr. Alien il

1
Sei sicuro, @EriktheOutgolfer? Firefox e Chrome valutano il codice dello script solo quando viene soddisfatto il tag di chiusura.
arte

1
Sì, ho provato a lasciar perdere </script>e non ha funzionato.
Fluffy

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

13

Python 2.7, 421 byte

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

Sembra un po 'troppo lungo? Forse è un po 'complicato ....: P

Un sacco di ciao mondo

In tutta serietà, eccone una più breve:

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

Non molto interessante, però.



13

ciao + lp + tr, 9 15 byte

hello|tr w W|lp

Inizialmente avevo

hello|lp

Ma aveva la capitalizzazione sbagliata sul w

ciao è gnu ciao dal pacchetto Debian ciao


7
hellostampa in minuscolo w, come è il solito sulla maggior parte dei siti di programmazione. (Non sono del tutto sicuro di come il maiuscolo sia Wdiventato standard su PPCG.)

7
@ ais523 Penso che la maiuscola W sia standard qui proprio per evitare ins incorporati come questo.
Pavel

2
Se la capitalizzazione è errata, temo che non sia valida.
Dennis,

Grazie per i tuoi commenti, eliminerò questa risposta domani.
Jasen,

6
Che ne dici hello|tr w W|lp?
David Conrad,

11

ZX Spectrum BASIC, 16 byte

LPRINT "Hello, World!"

LPRINT è una parola chiave a 1 byte in ZX Spectrum BASIC, con punto di codice 224.


1
puoi mostrare una foto della copia cartacea?
Jasen il

4
@Jasen In teoria ho ancora il kit in giro, ma sarebbe un po 'un palaver scavarlo e collegarlo a una TV abbastanza vecchia. Mi dispiace per quello.
Neil,

probabilmente potresti digitare quel comando "cieco".
Jasen,

10

MATLAB, 40 37 36 byte

La stampa di testo non è qualcosa che faresti normalmente in Matlab, ma può essere fatto.

title 'Hello, World!'
axis off;print

Ho salvato 3 byte grazie a Tom Carpenter (utilizzare titleinvece di text(0,0,. Ho salvato altri 2 byte sostituendo il title('Hello, World!') withtitolo "Hello, World!" Seguito da una nuova riga anziché da un punto e virgola.

titleaggiunge un titolo a una figura. Se una figura non è ancora aperta, verrà creata.

axis off viene utilizzato per sbarazzarsi della cornice e degli assi, in modo che il testo appaia solo.

print stampa la figura corrente sulla stampante predefinita se non vengono forniti argomenti di input.

L'ho stampato (correttamente secondo la finestra di dialogo) sulla mia stampante predefinita in ufficio. Posso recuperarlo lì e dimostrarlo, ma dovrai aspettare due settimane. Dopo aver modificato il valore predefinito in una stampante PDF, questo è l'output:

inserisci qui la descrizione dell'immagine

^^ Non è più l'immagine corretta.


8

QBasic, 21 byte

LPRINT"Hello, World!"

LPRINTinvia il testo direttamente alla stampante. Sfortunatamente non testato, DosBox non supporta nativamente NET USE, quindi non posso reindirizzare LPT1:a NovaPDF.

I problemi che ho ...

AGGIORNAMENTO: testato in QB64. PDF risultante aperto in Microsoft Edge. Somiglia a questo: inserisci qui la descrizione dell'immagine


7

8086 codice macchina, 28 byte

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

Utilizza la int 0x17chiamata BIOS standard . Non ho configurato la mia stampante ad aghi in questo momento, quindi questo codice non è stato testato.

Come funziona:

            |   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
Certo, l'ho appena aggiunto.
user5434231

Ora stiamo parlando!
Espiazione limitata

6

Lotto + bloccato, 12 byte

Ispirato da questa risposta, un programma bloccato vuoto stampa "Ciao, mondo!".

  1. Avere una stampante collegata alla porta LPT1 del computer
  2. Crea un file bloccato vuoto da interpretare (nome file a)
  3. Esegui l'interprete bloccato sul file vuoto e reindirizza il risultato a LPT1

Codice

stuck a>LPT1

4
Se stai usando più lingue, devi anche contare la colla che le collega insieme come parte del conteggio dei byte. Conterrei questo come 15 per il programma Batch, più 0 a causa della necessità di un file esterno a 0 byte.

1
Puoi mostrare distintamente lo script batch di Windows ed esplicitamente il comando usato per chiamare Stuck e passare il risultato alla stampante? Intendo esplicitamente qualcosa del genere stuck empty > LPT1. A proposito, se questo utilizza un REPL, credo che il consenso sia che dovrebbe essere chiaramente affermato (credo che sia per minimizzare la confusione esattamente in questo modo).
redstarcoder

@ ais523 Conquisto - Dovrei contare la colla, e per questo motivo, l'ho innalzata da 5 byte a 12
Daniel

È possibile salvare un byte qui reindirizzando a PRN anziché a LPT1.
user5434231

1
IMO è necessario aggiungere 1 byte per il nome file 1 byte.
CalculatorFeline

4

GFA-Basic, 22 byte

Testato solo su un emulatore Atari ST con la porta parallela reindirizzata a un file. Dovrebbe funzionare sulla versione Windows di GFA-Basic (che è gratuita), ma questo non è testato.

LPRINT "Hello, World!"

Nota: questo risulta essere identico alla sintassi QBasic .


4

Java, 330 byte

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 (solo funzione import plus):

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 non è un ottimo linguaggio per giocare a golf, e certo fa un lavoro eccezionalmente scarso giocare a golf con qualsiasi cosa legata all'hardware, inclusa la stampa.

Durante il test di questo programma, ho impostato la mia stampante PDF come predefinita. Ha funzionato, ma ha anche inviato un lavoro di stampa alla mia stampante laser contenente 87.792 pagine di "Hello, World!" Ho tirato il vassoio della carta e ho annullato il lavoro, quindi ho riprovato. Non è successo di nuovo. Grazie, Windows 10.


-7 byte modificando 3x jobin je i==0in i<1.
Kevin Cruijssen,

3

JavaScript, 37 36 byte

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

Risparmiato 15 byte grazie a @manatwork e @xem!


3
Non c'è bisogno di specificare in modo esplicito window: document.write('Hello, World!');print(). O ancora più breve: print(document.write('Hello, World!')).
arte

3
con ES6 puoi persino fare: document.write`Hello, world!` (maggiori informazioni qui: xem.github.io/articles/#webspeech )
xem

Stampa senza conferma? No? Beh, peccato, non è valido.
CalculatorFeline

@CalculatorFeline Perché l'ostilità? Se leggessi la nota a piè di pagina della sfida che vedresti "...Existing answers that do this as of 10:48am PST 31st Dec 2016 will be grandfathered...".
Oliver,

Oh. Mi mancava quella parte.
CalculatorFeline


2

c #, 259 250 byte

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

Esempio di output


2

Lotto, 32 byte

echo Hello, World!>t
notepad/P t

Dovrebbe funzionare su tutte le versioni di Windows senza l'intervento manuale richiesto.


1

Racchetta 35 byte

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

1

HTML (33)

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

(Richiede una finestra di stampa nel browser, non stampa direttamente)


C'è un motivo per cui il tag deve essere <svg>specifico o qualsiasi tag funzionerebbe? (Molti tag hanno nomi più brevi.)

7
afaik, solo svg, img (con un valido src), iframe e body hanno un evento onload attivato quando la pagina viene caricata. img senza src attiva un evento onerror. tutto sommato, il più breve che abbiamo trovato è svg onload = ...
xem

La sfida richiede maiuscole W(non che cambi il conteggio dei byte).
Martin Ender,

1

APL (Dyalog) , 50 byte

Naturalmente potremmo sborsare e utilizzare una soluzione Batch / Bash, ma invece creiamo un vero lavoro di stampa:

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

⎕WC è W indows C reate oggetto

Per prima cosa creiamo un oggetto stampante (un lavoro di stampa) chiamato 'X', quindi ( ) in quel ( 'X.') creiamo un oggetto di testo all'argomento della funzione anonima {}. L'argomento è ⍳2, che fornisce i primi due numeri interi ( 1 2) e significa 1% dall'alto e 2% da sinistra. Al termine della funzione anonima, tutte le sue variabili locali ( X) vengono distrutte, il che segnala a Windows che il processo di stampa è pronto per la stampa:


Lavoro di stampa


0

Javascript, 36 byte

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

Questo apre solo la finestra di stampa. Per stampare effettivamente è necessario un ulteriore intervento manuale. Si prega di consultare la nota in fondo alla domanda.
Trauma digitale il


0

JavaScript + HTML, 20 byte

print()
Hello, World!


Questo apre solo la finestra di stampa. Per stampare effettivamente è necessario un ulteriore intervento manuale. Si prega di consultare la nota in fondo alla domanda.
Trauma digitale il

0

C #, 174 byte

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

Versione completa / formattata:

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);
        }
    }
}
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.