print "Olá, mundo!"

79

Sim com certeza. Imprima com uma impressora de hardware hardware para criar uma cópia impressa.

Envie os comandos / dados necessários para a impressora, para que o seguinte texto seja impresso em um pedaço de papel:

Olá Mundo!

Você pode usar qualquer impressora local ou conectada à rede que esteja disponível para você.

Se sua impressora permitir, use texto de 8 pontos ou mais em tinta preta em papel branco.

O texto deve aparecer em sua própria linha. Pode ser posicionado à esquerda ou à direita, conforme desejado.

A evidência fotográfica / vídeo / GIF digital de envios será útil.

Se o seu hardware não puder imprimir papel, mas permitir outra produção exótica em cópia impressa, como impressão em 3D, usinagem CNC ou impressão em nível atômico , ficarei feliz em aceitar envios tão interessantes.


Para esclarecer, a pergunta é "Envie os comandos / dados necessários para a sua impressora" . A implicação disso é que nenhuma outra entrada do usuário deve ser necessária. Abrir uma caixa de diálogo de impressão não é suficiente. As respostas existentes que fazem isso a partir das 10h48 PST de 31 de dezembro de 2016 serão concedidas (mas não aprovadas por mim).

Trauma Digital
fonte
56
Forneça o endereço para o qual podemos enviar envios para verificação.
perfil completo
1
@steenbergh Sim - bom ponto - A evidência fotográfica / vídeo / GIF digital das submissões deve ser boa o suficiente.
Digital Trauma
3
Vale a pena notar que muitas impressoras mais antigas usam conjuntos de comandos personalizados. A maioria desses caracteres imprime caracteres ASCII literalmente; portanto, se você tiver acesso a uma das impressoras em questão (ou puder apenas afirmar que sim), enviar Hello, World!para a porta da impressora será suficiente.
1
Eu poderia jurar que tentei print("Hello, World!")no console do Firefox uma vez e ele abriu o diálogo de impressão (inútil porque não estava conectado a uma impressora de forma alguma), mas agora ele retorna a string ...
ETHproductions
2
O @ETHproductions no chrome fazendo <script>print("Hello, World!")</script> abre a caixa de diálogo de impressão, mas sem o texto real.
FlipTack

Respostas:

41

Bash, 21 19 bytes

lp<<<Hello,\ World!

impressão real

E aí está.

2 bytes economizados graças ao Dennis !

Azul
fonte
1
+1 Válido como um script. Funciona bem no meu Mac. Se você deseja executá-lo diretamente na linha de comando, precisará alterar as aspas duplas para aspas simples.
Digital Trauma
por que não ter bandeira para fazer ot ficar bonita
juggernauthk108
@ juggernaut1996 onde? Não, se eu tenho que imprimir algo de novo
azul
37

PowerShell , 18 bytes

'Hello, World!'|lp

Experimente online!

insira a descrição da imagem aqui

briantist
fonte
9
Não tenho certeza do ponto do link do TIO. +1 de qualquer maneira.
Digital Trauma
1
@DigitalTrauma Achei engraçado; e gera o post para mim. Você também pode olhar para a saída de depuração apenas para ver que está tentando (e falhando) colocar em spool o trabalho. :-p
briantist 31/12/16
19
@DigitalTrauma Se você colocar seu endereço no campo de entrada, o TIO enviará o resultado por e-mail.
Dennis
@ Dennis, se eu tivesse dinheiro para queimar, enviaria uma resposta que usa um serviço de API para impressão. Infelizmente ...
briantist
19

QBIC , 11 bytes

'LPRINT `_h

Quase esqueci que eu construí um 'Olá, Mundo!' comando no 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!"

Testado e encontrado funcionando idêntico à minha resposta QBasic: insira a descrição da imagem aqui

steenbergh
fonte
1
hum .. então qual é esse link? É uma linguagem inventada por você?
eis
1
@eis Sim, eu fiz QBIC. O link é uma pasta do Google Drive com todo o código - eu sou péssima no GitHub ... É um intérprete no topo do QBasic (QBIC significa Interpretador do Quick Basic para Codegolf) e é executado no DosBox. Confira o Showcase-thread para alguns exemplos (ou apenas abra a página de respostas do meu perfil, 75% está em QBIC). WIP, portanto, sintaxe e tokens ocasionalmente são alterados.
precisa
O OP usou um "W" maiúsculo para evitar o "hello world" interno ( consulte também ): criar seu próprio comando interno para o trabalho não é um código de golfe, ou você pode torná-lo "0 bytes" com um comportamento padrão interno para esse trabalho. .
Cœur
2
@ Cœur: que quase não funciona hoje em dia, a maioria das novas linguagens de golfe usa a capital W exatamente porque é padrão no PPCG, e é muito provável que o comando tenha sido adicionado sem o conhecimento desse desafio em particular (apenas um palpite de que "Olá, mundo! "os desafios seriam enviados no futuro)
Bem-vindo ao PPCG! Você pode se surpreender ao saber que não é a primeira pessoa a quem essa preocupação específica ocorreu. Aqui está um bom lugar para começar a ler: meta.codegolf.stackexchange.com/q/4867/11261 Além disso, as pessoas que gostam de golfe de código passam muito tempo pensando em brechas: meta.codegolf.stackexchange.com/q/1061/ 11261
Jordânia
16

Lote, 22 bytes

echo Hello, World!>prn

Isso redireciona a saída do echocomando para o arquivo de dispositivo PRN , o que significa que ele é enviado diretamente para a impressora padrão (geralmente LPT1).

Eu não tenho uma máquina DOS nem uma impressora, por isso tenho medo de não poder testar isso agora, mas tenho certeza de que já fiz isso no passado. Não funciona no Windows XP ou posterior.

Dennis
fonte
Isso lembra quando tentei criar um arquivo chamado cone não consegui. Ah, a alegria de arquivos de dispositivos DOS ...
aross
NT (e XP presumível etc) podem ser configurados para imprimir desta maneira usando o comando "net". iirc "net use lpt1: something"
Jasen
16

HTML + Javascript, 37. 34 bytes

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

Testado no Safari:

insira a descrição da imagem aqui

Obrigado a @ jimmy23013 por algumas economias.

fofo
fonte
11
Isso aparece apenas para abrir a caixa de diálogo de impressão e não enviar o trabalho para a impressora sem intervenção manual adicional
Digital Trauma
4
@DigitalTrauma JS não pode fazer isso
Sr. Alien
1
Você tem certeza, @EriktheOutgolfer? O Firefox e o Chrome avaliam o código do script apenas quando a tag de fechamento é atendida.
31816 manatwork
1
Sim, eu tentei deixar de fora </script>e não funcionou.
macia
2
-3 bytes:<body onload=print()>Hello, World!
jimmy23013 01/01
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 um pouco longo? Talvez seja um pouco complicado demais ....: P

Muito olá mundo

Com toda a seriedade, aqui está uma mais curta:

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

Não é muito interessante, no entanto.

Calconym
fonte
13

olá + lp + tr, 9 15 bytes

hello|tr w W|lp

Eu originalmente tinha

hello|lp

Mas tinha a capitalização errada no w

olá é gnu olá do pacote Debian olá

Jasen
fonte
7
helloimprime em minúsculas w, como é costume na maioria dos sites de programação. (Eu não estou muito certo como a maiúscula Wtornou-se padrão em PPCG.)
7
@ ais523 Eu acho que W maiúsculo é padrão aqui precisamente para evitar ins embutidos como este.
Pavel
2
Se a capitalização estiver errada, receio que isso seja inválido.
Dennis
Obrigado por seus comentários, vou excluir esta resposta amanhã.
Jasen 01/01
6
Que tal hello|tr w W|lp?
David Conrad
11

ZX Spectrum BASIC, 16 bytes

LPRINT "Hello, World!"

LPRINT é uma palavra-chave de 1 byte no ZX Spectrum BASIC, com o ponto de código 224.

Neil
fonte
1
você pode mostrar uma foto da cópia impressa.
Jasen
4
@ Jason Em teoria, eu ainda tenho o kit por perto, mas seria um pouco difícil escavá-lo e conectá-lo a uma TV antiga o suficiente. Me desculpe por isso.
Neil
você provavelmente poderia digitar esse comando "cego".
Jasen
10

MATLAB, 40 37 36 bytes

Imprimir texto não é algo que você faria normalmente no Matlab, mas pode ser feito.

title 'Hello, World!'
axis off;print

Salvei 3 bytes graças a Tom Carpenter (use em titlevez de text(0,0,. Salvei mais 2 bytes substituindo o title('Hello, World!') withtítulo 'Hello, World!' Seguido de uma nova linha em vez de ponto e vírgula.

titleadiciona um título a uma figura. Se uma figura ainda não estiver aberta, ela será criada.

axis off é usado para se livrar do quadro e dos eixos, para que o texto apareça sozinho.

print imprime a figura atual na impressora padrão se nenhum argumento de entrada for fornecido.

Imprimi isso (com sucesso de acordo com a caixa de diálogo) na minha impressora padrão no escritório. Posso recuperá-lo lá e provar, mas você terá que esperar duas semanas. Depois de alterar o padrão para uma impressora PDF, esta é a saída:

insira a descrição da imagem aqui

^^ Não é mais a imagem correta.

Stewie Griffin
fonte
8

QBasic, 21 bytes

LPRINT"Hello, World!"

LPRINTenvia texto diretamente para a impressora. Infelizmente não testado, o DosBox não suporta nativamente NET USE, por isso não posso redirecionarLPT1: para o NovaPDF.

Os problemas que tenho ...

UPDATE: Testei em QB64. PDF resultante aberto no Microsoft Edge. Se parece com isso: insira a descrição da imagem aqui

steenbergh
fonte
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

Usa a int 0x17chamada BIOS padrão . Não tenho minha impressora matricial configurada agora, portanto esse código não foi testado.

Como 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          |   
user5434231
fonte
1
Claro, acabei de adicionar.
user5434231
Agora estamos a falar!
Expiação limitada
6

Lote + Preso, 12 bytes

Inspirado por esta resposta, um programa vazio preso imprime "Olá, mundo!".

  1. Tenha uma impressora conectada à porta LPT1 do seu computador
  2. Crie um arquivo preso vazio para ser interpretado (nome do arquivo a)
  3. Execute o interpretador preso no arquivo vazio e canalize o resultado para LPT1

Código

stuck a>LPT1
Daniel
fonte
4
Se você estiver usando vários idiomas, também precisará contar a cola que os conecta como parte da contagem de bytes. Eu contaria isso como 15 para o programa em lote, mais 0 devido à necessidade de um arquivo externo de 0 byte.
1
Você pode mostrar claramente o script em lote do Windows e explicitamente o comando usado para chamar Stuck e passar o resultado para a impressora? Por explicitamente quero dizer algo como stuck empty > LPT1. Aliás, se isso usa um REPL, acredito que o consenso é que deve ser claramente indicado (acredito que seja para minimizar a confusão exatamente assim).
Redstarcoder #
@ ais523 eu conquisto - I deve contar a cola, e por causa disso, levantou-à partir de 5 bytes para 12
Daniel
Você pode salvar um byte aqui redirecionando para o PRN em vez do LPT1.
user5434231
1
Na IMO, você precisa adicionar 1 byte ao nome de arquivo de 1 byte.
CalculatorFeline
4

GFA-Básico, 22 bytes

Testado apenas em um emulador Atari ST com a porta paralela redirecionada para um arquivo. Ele deve funcionar na versão Windows do GFA-Basic (que é gratuita), mas isso não foi testado.

LPRINT "Hello, World!"

Nota: Isso é idêntico à sintaxe QBasic .

Arnauld
fonte
4

Java, 330 bytes

Golfe:

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 (somente importação mais função):

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 não é uma excelente linguagem de golfe, e alguns fazem um trabalho excepcionalmente ruim em qualquer coisa relacionada ao hardware, incluindo a impressão.

Durante o teste deste programa, defino minha impressora PDF como padrão. Funcionou, mas também enviou um trabalho de impressão para minha impressora a laser, contendo 87.792 páginas de "Olá, Mundo!" Puxei a bandeja de papel e cancelei o trabalho, depois testei novamente. Isso não aconteceu novamente. Obrigado, Windows 10.

Rɪᴋᴇʀ
fonte
-7 bytes, alterando 3x jobpara je i==0para i<1.
Kevin Cruijssen
3

JavaScript, 37 36 bytes

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

Economizou 15 bytes graças a @manatwork e @xem!

Oliver
fonte
3
Não há necessidade de especificar explicitamente window: document.write('Hello, World!');print(). Ou ainda mais curto: print(document.write('Hello, World!')).
manatwork
3
com o ES6, você pode até fazer: document.write`Hello, world!` (mais informações aqui: xem.github.io/articles/#webspeech )
xem
Imprime sem confirmação? Não? Muito ruim, é inválido.
CalculatorFeline
@CalculatorFeline Por que a hostilidade? Se você ler a nota de rodapé do desafio, verá "...Existing answers that do this as of 10:48am PST 31st Dec 2016 will be grandfathered...".
Oliver
Oh Eu perdi essa parte.
CalculatorFeline
2

Mathematica, 29 bytes

NotebookPrint@"Hello, World!"

insira a descrição da imagem aqui

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

Saída de exemplo

Johan du Toit
fonte
2

Lote, 32 bytes

echo Hello, World!>t
notepad/P t

Deve funcionar em todas as versões do Windows sem a necessidade de intervenção manual.

Johan du Toit
fonte
1

Raquete 35 bytes

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

HTML (33)

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

(Solicita uma janela de impressão no navegador, não imprime diretamente)

xem
fonte
Existe uma razão pela qual a tag precisa ser <svg>específica ou alguma tag funcionaria? (Muitas tags têm nomes mais curtos.)
7
afaik, somente svg, img (com um src válido), iframe e body têm um evento onload acionado quando a página é carregada. img sem src dispara um evento onerror. apesar de tudo, o mais curto que descobrimos é onload SVG = ...
xem
O desafio pede letras maiúsculas W(não que isso altere sua contagem de bytes).
Martin Ender
1

APL (Dyalog) , 50 bytes

É claro que poderíamos usar uma solução Batch / Bash, mas vamos criar um trabalho de impressão real:

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

⎕WC é W INDOWS C reate objecto

Primeiro, criamos um objeto de impressora (um trabalho de impressão) chamado 'X', depois ( ), em que ( 'X.') criamos um objeto de texto no argumento da função anônima {}. O argumento é ⍳2, que fornece os dois primeiros números inteiros ( 1 2) e significa 1% do topo e 2% da esquerda. Quando a função anônima termina, todas as suas variáveis ​​locais ( X) são destruídas, o que indica ao Windows que o trabalho de impressão está pronto para ser impresso:


Trabalho de impressão

Adão
fonte
0

Javascript, 36 bytes

print(document.write`Hello, World!`)
ericw31415
fonte
Isso apenas abre a caixa de diálogo de impressão. É necessária mais intervenção manual para realmente imprimir. Por favor, veja a nota na parte inferior da pergunta.
Digital Trauma
0

JavaScript + HTML, 20 bytes

print()
Hello, World!

Shaggy
fonte
Isso apenas abre a caixa de diálogo de impressão. É necessária mais intervenção manual para realmente imprimir. Por favor, veja a nota na parte inferior da pergunta.
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();};}

Versão completa / formatada:

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
fonte