imprima "¡Hola, mundo!"

79

Sí, en serio. Imprima con una impresora de hardware 🖨 para crear una copia impresa.

Envíe los comandos / datos necesarios a su impresora de manera que el siguiente texto se imprima en una hoja de papel:

¡Hola Mundo!

Puede usar cualquier impresora conectada a la red o local que esté disponible para usted.

Si su impresora lo permite, debe usar texto de 8 puntos o más en tinta negra sobre papel blanco.

El texto debe aparecer en su propia línea. Puede colocarse a la izquierda o derecha como desee.

La evidencia digital fotográfica / video / GIF de envíos será útil.

Si su hardware no puede hacer papel, pero permite otra producción exótica de copia impresa, como impresión 3D, mecanizado CNC o impresión a nivel atómico , entonces me complacerá aceptar presentaciones tan interesantes.


Para aclarar, la pregunta es "Enviar los comandos / datos necesarios a su impresora" . La implicación de esto es que no se requiere ninguna entrada adicional del usuario. Abrir un diálogo de impresión no es suficiente. Las respuestas existentes que hagan esto a partir de las 10:48 a.m. PST del 31 de diciembre de 2016 quedarán exentas (pero yo no las votaré).

Trauma digital
fuente
56
Indique la dirección a la que podemos enviar los envíos para su verificación.
steenbergh
1
@steenbergh Sí, buen punto: la evidencia de envíos de fotografías / video / GIF digital debería ser lo suficientemente buena.
Trauma digital
3
Vale la pena señalar que muchas impresoras antiguas usan conjuntos de comandos personalizados. La mayoría de estos caracteres ASCII se imprimen literalmente, por lo que si tiene acceso a una de las impresoras en cuestión (o simplemente puede afirmar que lo hace), el envío Hello, World!al puerto de la impresora debería ser suficiente.
1
Podría jurar que intenté print("Hello, World!")en la consola de Firefox una vez y abrió el diálogo de impresión (inútil porque no estaba conectado a una impresora de ninguna manera), pero ahora solo devuelve la cadena ...
ETHproductions
2
@ETHproductions en Chrome haciendo <script>print("Hello, World!")</script> abre el diálogo de impresión, pero sin el texto real en él.
FlipTack

Respuestas:

41

Bash, 21 19 bytes

lp<<<Hello,\ World!

impresión real

Y ahí está.

¡2 bytes guardados gracias a Dennis !

Azul
fuente
1
+1 Válido como script. Funciona bien en mi Mac. Si desea ejecutarlo directamente en la línea de comandos, deberá cambiar las comillas dobles a comillas simples.
Trauma digital
¿Por qué no tener una pancarta para que se vea bonita?
juggernauthk108
@ juggernaut1996 ¿dónde? No si tengo que imprimir algo de nuevo
Azul
37

PowerShell , 18 bytes

'Hello, World!'|lp

Pruébalo en línea!

ingrese la descripción de la imagen aquí

briantista
fuente
99
No estoy seguro del punto del enlace TIO. +1 de todos modos.
Trauma digital
1
@ DigitalTrauma Pensé que era divertido; y genera la publicación para mí. También puede mirar el resultado de la depuración solo para ver que está intentando (y fallando) poner en cola el trabajo. :-p
briantist
19
@DigitalTrauma Si coloca su dirección en el campo de entrada, TIO le enviará el resultado por correo.
Dennis
@Dennis si tuviera dinero para gastar, enviaría una respuesta que utiliza un servicio de API para imprimir. Por desgracia ...
briantist
19

QBIC , 11 bytes

'LPRINT `_h

Casi olvido que construí un '¡Hola, mundo!' comando en 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!"

Probado y encontrado trabajando idéntico a mi respuesta QBasic: ingrese la descripción de la imagen aquí

Steenbergh
fuente
1
um .. entonces, ¿cuál es ese enlace? ¿Es un lenguaje inventado por ti?
Eis
1
@eis Sí, hice QBIC. El enlace es una carpeta de Google Drive con todo el código: apesta en GitHub ... Es un intérprete sobre QBasic (QBIC significa intérprete de Quick Basic para Codegolf) y se ejecuta en DosBox. Mira el Showcase-thread para ver algunos ejemplos (o simplemente abre la página de respuestas de mi perfil, el 75% está en QBIC). WIP, por lo que la sintaxis y los tokens ocasionalmente se desplazan.
steenbergh
El OP utilizó una "W" mayúscula para evitar el "hello world" incorporado ( ver también ): construir su propio comando incorporado para el trabajo no es golf de código, o podría hacer que sea "0 bytes" con un comportamiento predeterminado incorporado para ese .
Coeur
2
@ Cœur: eso apenas funciona hoy en día, la mayoría de los idiomas de golf más nuevos usan la W mayúscula precisamente porque es estándar en PPCG, y es muy probable que el comando se haya agregado sin conocimiento de este desafío en particular (solo supongo que más "¡Hola, Mundo! "los desafíos se presentarán en el futuro)
@ Cœur ¡Bienvenido a PPCG! Es posible que se sorprenda al saber que no es la primera persona a la que le ha ocurrido esa preocupación particular. Aquí hay un buen lugar para comenzar a leer: meta.codegolf.stackexchange.com/q/4867/11261 Y, además, las personas que disfrutan del golf de código pasan mucho tiempo pensando en lagunas: meta.codegolf.stackexchange.com/q/1061/ 11261
Jordan
16

Lote, 22 bytes

echo Hello, World!>prn

Esto redirige la salida del echocomando al archivo de dispositivo PRN , lo que significa que se envía directamente a la impresora predeterminada (generalmente LPT1).

No tengo una máquina DOS ni una impresora, así que me temo que no puedo probar esto en este momento, pero estoy bastante seguro de que lo hice en el día. No funciona en Windows XP o posterior.

Dennis
fuente
Esto recuerda cuando intenté crear un archivo llamado cony no pude . Ah, la alegría de los archivos del dispositivo DOS ...
aross
NT (y presumiblemente XP, etc.) se pueden configurar para imprimir de esta manera utilizando el comando "net". iirc "net use lpt1: something"
Jasen
16

HTML + Javascript, 37 34 bytes

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

Probado en Safari:

ingrese la descripción de la imagen aquí

Gracias a @ jimmy23013 por algunos ahorros.

mullido
fuente
11
Esto aparece solo para abrir el cuadro de diálogo de impresión y no enviar el trabajo a la impresora sin más intervención manual
Digital Trauma
44
@DigitalTrauma JS no puede hacer eso
Sr. Alien el
1
¿Estás seguro, @EriktheOutgolfer? Firefox y Chrome evalúan el código del script solo cuando se cumple la etiqueta de cierre.
manatwork
1
Sí, traté de dejar el </script>y no funcionó.
esponjoso
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")))

Parece un poco largo? Quizás es un poco complicado ...: P

Mucho hola mundo

Con toda seriedad, aquí hay una más corta:

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

Sin embargo, no es muy interesante.

Calconym
fuente
13

hola + lp + tr, 9 9 15 bytes

hello|tr w W|lp

Originalmente tuve

hello|lp

Pero tenía la capitalización incorrecta en el w

hola es gnu hola del paquete Debian hola

Jasen
fuente
77
helloimprime en minúsculas w, como es la costumbre en la mayoría de los sitios de programación. (No estoy muy seguro de cómo la mayúscula Wse convirtió en estándar en PPCG.)
77
@ ais523 Creo que W mayúscula es estándar aquí precisamente para evitar elementos integrados como este.
Pavel
2
Si la capitalización está mal, me temo que esto no es válido.
Dennis
Gracias por sus comentarios, eliminaré esta respuesta mañana.
Jasen
66
¿Qué tal hello|tr w W|lp?
David Conrad el
11

ZX Spectrum BASIC, 16 bytes

LPRINT "Hello, World!"

LPRINT es una palabra clave de 1 byte en ZX Spectrum BASIC, que tiene el punto de código 224.

Neil
fuente
1
¿Puedes mostrar una foto de la copia impresa?
Jasen
44
@Jasen En teoría, todavía tengo el kit, pero sería un poco fastidioso desenterrarlo y conectarlo a un televisor lo suficientemente viejo. Lo siento por eso.
Neil
probablemente podría escribir ese comando "ciego".
Jasen
10

MATLAB, 40 37 36 bytes

Imprimir texto no es algo que normalmente haría en Matlab, pero se puede hacer.

title 'Hello, World!'
axis off;print

Ahorré 3 bytes gracias a Tom Carpenter (use en titlelugar de text(0,0,. Ahorré 2 bytes adicionales sustituyendo el title('Hello, World!') withtítulo '¡Hola, Mundo!' Seguido de una nueva línea en lugar de un punto y coma.

titleagrega un título a una figura. Si una figura aún no está abierta, se creará.

axis off se utiliza para deshacerse del marco y los ejes, de modo que el texto aparezca solo.

print imprime la figura actual en la impresora predeterminada si no se proporcionan argumentos de entrada.

Imprimí esto (con éxito de acuerdo con el cuadro de diálogo) en mi impresora predeterminada en la oficina. Puedo recuperarlo allí y probarlo, pero tendrás que esperar dos semanas. Después de cambiar el valor predeterminado a una impresora pdf, este es el resultado:

ingrese la descripción de la imagen aquí

^^ Ya no es la imagen correcta.

Stewie Griffin
fuente
8

QBasic, 21 bytes

LPRINT"Hello, World!"

LPRINTenvía texto directamente a la impresora. Desafortunadamente no probado, DosBox no es compatible de forma nativa NET USE, por lo que no puedo redirigirlo LPT1:a NovaPDF.

Los problemas que tengo ...

ACTUALIZACIÓN: Probado en QB64. PDF resultante abierto en Microsoft Edge. Se ve como esto: ingrese la descripción de la imagen aquí

Steenbergh
fuente
7

Código de máquina 8086, 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

Utiliza la int 0x17llamada estándar del BIOS. No tengo mi impresora matricial configurada en este momento, por lo que este código no se ha probado.

Cómo funciona:

            |   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          |   
usuario5434231
fuente
1
Claro, solo lo agregué.
user5434231
¡Ahora estamos hablando!
Expiación limitada
6

Lote + pegado, 12 bytes

Inspirado por esta respuesta, un programa atascado vacío imprime "¡Hola, mundo!".

  1. Tener una impresora conectada al puerto LPT1 de su computadora
  2. Cree un archivo atascado vacío para ser interpretado (nombre de archivo a)
  3. Ejecute el intérprete atascado en el archivo vacío y canalice el resultado a LPT1

Código

stuck a>LPT1
Daniel
fuente
44
Si usa varios idiomas, también necesita contar el pegamento que los conecta como parte de su conteo de bytes. Contaría esto como 15 para el programa Batch, más 0 debido a la necesidad de un archivo externo de 0 bytes.
1
¿Puede mostrar claramente el script por lotes de Windows y explícitamente el comando utilizado para llamar a Stuck y pasar el resultado a la impresora? Por explícitamente quiero decir algo así stuck empty > LPT1. Por cierto, si esto usa un REPL, creo que el consenso es que debe establecerse claramente (creo que es para minimizar la confusión exactamente así).
Redstarcoder
@ ais523 Yo conquisto: debo contar el pegamento y, por eso, lo elevé de 5 bytes a 12
Daniel
Puede guardar un byte aquí redirigiendo a PRN en lugar de LPT1.
user5434231
1
En mi opinión, debe agregar 1 byte para el nombre de archivo de 1 byte.
CalculatorFeline
4

GFA-Basic, 22 bytes

Solo probado en un emulador Atari ST con el puerto paralelo redirigido a un archivo. Debería funcionar en la versión de Windows de GFA-Basic (que es gratuita), pero esto no se ha probado.

LPRINT "Hello, World!"

Nota: Esto resulta ser idéntico a la sintaxis QBasic .

Arnauld
fuente
4

Java, 330 bytes

Golfizado:

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

Sin golf (solo importación más función):

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 no es un gran lenguaje para jugar al golf, y algunos hacen un trabajo excepcionalmente pobre jugando al golf en cualquier cosa relacionada con el hardware, incluida la impresión.

Al probar este programa, configuré mi impresora PDF como predeterminada. Funcionó, pero también envió un trabajo de impresión a mi impresora láser que contenía 87.792 páginas de "¡Hola, mundo!" Saqué la bandeja de papel y cancelé el trabajo, luego volví a probar. No sucedió de nuevo. Gracias Windows 10.

Rɪᴋᴇʀ
fuente
-7 bytes cambiando 3x joba j, y i==0a i<1.
Kevin Cruijssen
3

JavaScript, 37 36 bytes

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

¡Ahorré 15 bytes gracias a @manatwork y @xem!

Oliver
fuente
3
No hay necesidad de especificar de forma explícita window: document.write('Hello, World!');print(). O incluso más corto: print(document.write('Hello, World!')).
manatwork
3
con ES6 incluso puede hacer: document.write`Hello, world!` (más información aquí: xem.github.io/articles/#webspeech )
xem
¿Se imprime sin confirmación? ¿No? Bueno, muy mal, no es válido.
CalculatorFeline
@CalculatorFeline ¿Por qué la hostilidad? Si lees la nota al pie del desafío que verías "...Existing answers that do this as of 10:48am PST 31st Dec 2016 will be grandfathered...".
Oliver
Oh. Me perdí esa parte.
CalculatorFeline
2

Mathematica, 29 bytes

NotebookPrint@"Hello, World!"

ingrese la descripción de la imagen aquí

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

Salida de ejemplo

Johan du Toit
fuente
2

Lote, 32 bytes

echo Hello, World!>t
notepad/P t

Debería funcionar en todas las versiones de Windows sin necesidad de intervención manual.

Johan du Toit
fuente
1

Raqueta 35 bytes

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

HTML (33)

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

(Solicita una ventana de impresión en el navegador, no imprime directamente)

xem
fuente
¿Hay alguna razón por la cual la etiqueta tiene que ser <svg>específicamente, o alguna etiqueta funcionaría? (Muchas etiquetas tienen nombres más cortos.)
77
afaik, solo svg, img (con un src válido), iframe y body tienen un evento de carga activado cuando se carga la página. img sin src desencadena un evento onerror. en general, el más corto que hemos encontrado es svg onload = ...
xem
El desafío requiere mayúsculas W(no es que cambie su recuento de bytes).
Martin Ender
1

APL (Dyalog) , 50 bytes

Por supuesto, podríamos desembolsar y usar una solución Batch / Bash, pero creemos un trabajo de impresión real:

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

⎕WC es W indows C reate objeto

Primero creamos un objeto de impresora (un trabajo de impresión) llamado 'X', entonces ( ) en la que ( 'X.') creamos un objeto de texto en el argumento de la función anónima {... }. El argumento es ⍳2, que da los dos primeros enteros ( 1 2) y significa 1% desde la parte superior y 2% desde la izquierda. Cuando finaliza la función anónima, Xse destruyen todas sus variables locales ( ), lo que indica a Windows que el trabajo de impresión está listo para imprimirse:


Trabajo de impresión

Adán
fuente
0

Javascript, 36 bytes

print(document.write`Hello, World!`)
ericw31415
fuente
Esto solo abre el diálogo de impresión. Se requiere más intervención manual para imprimir realmente. Por favor vea la nota al final de la pregunta.
Trauma digital
0

JavaScript + HTML, 20 bytes

print()
Hello, World!

Lanudo
fuente
Esto solo abre el diálogo de impresión. Se requiere más intervención manual para imprimir realmente. Por favor vea la nota al final de la pregunta.
Trauma digital
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();};}

Versión completa / formateada:

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
fuente