cetak "Halo, Dunia!"


79

Ya benar Cetak dengan printer perangkat keras 🖨 untuk membuat salinan.

Kirim perintah / data yang diperlukan ke printer Anda sehingga teks berikut dicetak pada selembar kertas:

Halo Dunia!

Anda dapat menggunakan printer yang terhubung dengan jaringan atau lokal yang tersedia untuk Anda.

Jika printer Anda memungkinkan, Anda harus menggunakan 8pt atau lebih banyak teks dengan tinta hitam pada kertas putih.

Teks akan muncul di barisnya sendiri. Ini dapat diposisikan kiri atau kanan seperti yang Anda inginkan.

Bukti pengajuan foto / video / GIF digital akan sangat membantu.

Jika perangkat keras Anda tidak dapat membuat kertas, tetapi memungkinkan produksi hardcopy eksotis lainnya seperti pencetakan 3D, permesinan CNC, atau pencetakan pada tingkat atom , maka saya akan dengan senang hati menerima kiriman yang menarik.


Untuk memperjelas, pertanyaannya adalah "Kirim perintah / data yang diperlukan ke printer Anda" . Implikasinya, tidak ada lagi input pengguna yang diperlukan. Membuka dialog cetak tidak cukup. Jawaban yang ada yang melakukan ini pada 10:48 am PST 31 Desember 2016 akan kakek (tetapi tidak saya pilih).


56
Harap berikan alamat yang dapat kami kirim kiriman untuk verifikasi.
steenbergh

1
@steenbergh Yap - poin bagus - Foto digital / video / bukti pengajuan GIF harus cukup baik.
Digital Trauma

3
Perlu dicatat bahwa banyak printer lama menggunakan set perintah khusus. Sebagian besar dari karakter cetak ASCII ini benar-benar, jadi jika Anda memiliki akses ke salah satu printer yang bersangkutan (atau hanya dapat mengklaim bahwa Anda memilikinya), mengirim Hello, World!ke port printer harus cukup.

1
Saya bersumpah bahwa saya pernah mencoba print("Hello, World!")di konsol Firefox sekali dan membuka dialog cetak (tidak berguna karena saya tidak terhubung ke printer dengan cara apa pun), tetapi sekarang hanya mengembalikan string ...
ETHproductions

2
@ ETHproduksi di chrome lakukan <script>print("Hello, World!")</script> membuka dialog cetak, tetapi tanpa teks yang sebenarnya.
FlipTack

Jawaban:


41

Bash, 21 19 byte

lp<<<Hello,\ World!

cetakan yang sebenarnya

Dan itu dia.

2 byte disimpan berkat Dennis !


1
+1 Berlaku sebagai skrip. Bekerja dengan baik di Mac saya. Jika Anda ingin menjalankannya langsung di command-line Anda harus mengubah tanda kutip ganda menjadi tanda kutip tunggal.
Digital Trauma

mengapa tidak memiliki spanduk untuk membuat mereka terlihat cantik
juggernauthk108

@ juggernaut1996 di mana? Tidak jika saya harus mencetak sesuatu lagi
Blue

37

PowerShell , 18 byte

'Hello, World!'|lp

Cobalah online!

masukkan deskripsi gambar di sini


9
Tidak yakin titik tautan TIO. Tetap memberi +1.
Digital Trauma

1
@DigitalTrauma, saya pikir itu lucu; dan itu menghasilkan posting untuk saya. Anda juga dapat melihat output debug hanya untuk melihat bahwa ia mencoba (dan gagal) untuk menggulung pekerjaan. :-p
briantist

19
@DigitalTrauma Jika Anda memasukkan alamat di kolom input, TIO akan mengirimkan hasilnya kepada Anda.
Dennis

@ Dennis jika saya punya uang untuk dibakar, saya akan mengirimkan jawaban yang menggunakan layanan API-to-print. Sial ...
briantis

19

QBIC , 11 byte

'LPRINT `_h

Hampir lupa aku membuat 'Hello, World!' perintah ke 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!"

Diuji dan ternyata berfungsi identik dengan jawaban QBasic saya: masukkan deskripsi gambar di sini


1
um .. jadi apa tautannya? Apakah ini bahasa yang diciptakan oleh Anda?
eis

1
@ Ya, saya membuat QBIC. Tautan ini adalah folder Google Drive dengan semua kode di dalamnya - Saya payah di GitHub ... Ini adalah juru bahasa di atas QBasic (QBIC adalah singkatan dari Quick Basic's Interpreter for Codegolf) dan berjalan di DosBox. Lihat thread Showcase untuk beberapa contoh (atau cukup buka halaman jawaban profil saya, 75% ada di QBIC). WIP, jadi sintaks dan token sesekali digeser.
steenbergh

OP menggunakan modal "W" untuk menghindari builtin "hello world" ( lihat juga ) .: membangun perintah builtin Anda sendiri untuk pekerjaan itu bukan kode golf, atau Anda bisa membuatnya "0 byte" dengan perilaku bawaan bawaan untuk itu .
Cœur

2
@Cœur: yang hampir tidak berfungsi saat ini, sebagian besar bahasa golf yang lebih baru menggunakan ibukota W justru karena standar pada PPCG, dan sangat mungkin bahwa perintah ditambahkan tanpa pengetahuan tentang tantangan khusus ini (hanya tebakan lebih banyak "Halo, Dunia! "Tantangan akan diajukan di masa mendatang)

@ Cœur Selamat datang di PPCG! Anda mungkin terkejut mengetahui bahwa Anda bukan orang pertama yang kepadanya kekhawatiran tersebut terjadi. Inilah tempat yang bagus untuk mulai membaca: meta.codegolf.stackexchange.com/q/4867/11261 Dan selanjutnya, orang yang menikmati golf kode menghabiskan banyak waktu untuk memikirkan celah: meta.codegolf.stackexchange.com/q/1061/ 11261
Jordan

16

Batch, 22 byte

echo Hello, World!>prn

Ini mengalihkan output echoperintah ke file perangkat PRN , artinya dikirim langsung ke printer default (biasanya LPT1).

Saya tidak punya mesin DOS atau printer, jadi saya khawatir saya tidak bisa menguji ini sekarang, tapi saya cukup yakin saya sudah melakukan ini pada hari itu. Itu tidak berfungsi pada Windows XP atau yang lebih baru.


Ini mengingatkan ketika saya mencoba membuat file bernama condan tidak bisa. Ah, kegembiraan file perangkat DOS ...
aross

NT (dan mungkin XP dll) dapat dikonfigurasi untuk mencetak dengan cara ini menggunakan perintah "net". iirc "net use lpt1: something"
Jasen

16

HTML + Javascript, 37 34 byte

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

Diuji dalam Safari:

masukkan deskripsi gambar di sini

Terima kasih kepada @ jimmy23013 untuk penghematan.


11
Ini muncul hanya untuk membuka kotak dialog cetak dan tidak benar-benar mengirim pekerjaan ke printer tanpa intervensi manual lebih lanjut
Digital Trauma

4
@DigitalTrauma JS tidak bisa melakukan itu
Tn. Alien

1
Apakah Anda yakin, @EriktheOutgolfer? Firefox dan Chrome mengevaluasi kode skrip hanya ketika tag penutup bertemu.
manatwork

1
Ya saya mencoba meninggalkan </script>dan tidak berhasil.
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")))

Sepertinya agak lama? Mungkin agak rumit ....: P

Banyak dunia halo

Dalam semua keseriusan, ini yang lebih pendek:

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

Tapi tidak terlalu menarik.



13

halo + lp + tr, 9 15 byte

hello|tr w W|lp

Saya awalnya punya

hello|lp

Tetapi memiliki kapitalisasi yang salah pada w

halo adalah halo halo dari paket Debian halo


7
hellomencetak huruf kecil w, seperti kebiasaan di sebagian besar situs pemrograman. (Saya tidak yakin bagaimana huruf besar Wmenjadi standar pada PPCG.)

7
@ ais523 Saya pikir huruf besar W adalah standar di sini tepatnya untuk menghindari built in seperti ini.
Pavel

2
Jika kapitalisasi salah, saya khawatir ini tidak valid.
Dennis

Terima kasih atas komentar Anda, saya akan menghapus jawaban ini besok.
Jasen

6
Bagaimana dengan hello|tr w W|lp?
David Conrad

11

ZX Spectrum BASIC, 16 byte

LPRINT "Hello, World!"

LPRINT adalah kata kunci 1-byte dalam ZX Spectrum BASIC, dengan codepoint 224.


1
dapatkah Anda menunjukkan foto hardcopy.
Jasen

4
@Jasen Secara teori saya masih memiliki kit di sekitar, tetapi akan sedikit palaver untuk menggali dan menghubungkannya ke TV yang cukup lama. Maaf soal itu.
Neil

Anda mungkin bisa mengetikkan perintah "blind".
Jasen

10

MATLAB, 40 37 36 byte

Mencetak teks bukanlah sesuatu yang biasa Anda lakukan di Matlab, tetapi bisa dilakukan.

title 'Hello, World!'
axis off;print

Saya menyimpan 3 byte berkat Tom Carpenter (gunakan titlesebagai ganti text(0,0,. Saya menyimpan 2 byte tambahan dengan mengganti title('Hello, World!') withjudul 'Halo, Dunia!' Diikuti oleh baris baru alih-alih titik koma.

titlemenambahkan judul ke gambar. Jika angka belum terbuka, itu akan dibuat.

axis off digunakan untuk menyingkirkan bingkai dan sumbu, sehingga teks muncul sendiri.

print mencetak gambar saat ini ke printer default jika tidak ada argumen input yang diberikan.

Saya mencetak ini (berhasil sesuai dengan kotak dialog) pada printer default saya di kantor. Saya dapat mengambilnya di sana dan membuktikannya tetapi Anda harus menunggu dua minggu. Setelah mengubah default ke printer-pdf, ini adalah output:

masukkan deskripsi gambar di sini

^^ Bukan gambar yang benar lagi.


8

QBasic, 21 byte

LPRINT"Hello, World!"

LPRINTmengirim teks langsung ke printer. Sayangnya belum teruji, DosBox tidak mendukung NET USE, jadi saya tidak bisa mengalihkan rute LPT1:ke NovaPDF.

Masalah yang saya miliki ...

UPDATE: Mengujinya di QB64. PDF yang dihasilkan dibuka di Microsoft Edge. Terlihat seperti ini: masukkan deskripsi gambar di sini


7

8086 kode mesin, 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

Menggunakan int 0x17panggilan BIOS standar . Saya tidak mengatur printer dot-matrix saya sekarang sehingga kode ini tidak diuji.

Bagaimana itu bekerja:

            |   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
Tentu, baru saja menambahkannya.
user5434231

Sekarang kita bicara!
Penebusan Terbatas

6

Batch + Stuck, 12 byte

Terinspirasi oleh jawaban ini, sebuah program kosong yang macet mencetak "Halo, Dunia!".

  1. Memiliki printer yang terhubung ke port LPT1 komputer Anda
  2. Buat file macet kosong untuk ditafsirkan (nama file a)
  3. Jalankan interpreter yang macet pada file kosong dan kirimkan hasilnya ke LPT1

Kode

stuck a>LPT1

4
Jika Anda menggunakan beberapa bahasa, Anda juga perlu menghitung lem yang menghubungkan keduanya sebagai bagian dari jumlah byte Anda. Saya akan menghitung ini sebagai 15 untuk program Batch, ditambah 0 karena kebutuhan untuk file eksternal 0-byte.

1
Bisakah Anda menunjukkan dengan jelas skrip batch Windows, dan secara eksplisit perintah yang digunakan untuk memanggil Stuck dan meneruskan hasilnya ke printer? Secara eksplisit saya maksudkan sesuatu seperti stuck empty > LPT1. BTW jika ini menggunakan REPL saya percaya konsensus yang harus dinyatakan dengan jelas (saya percaya itu untuk meminimalkan kebingungan persis seperti ini).
redstarcoder

@ ais523 Saya menaklukkan - saya harus menghitung lem, dan karena itu, menaikkannya dari 5 byte menjadi 12
Daniel

Anda dapat menyimpan byte di sini dengan mengarahkan ulang ke PRN alih-alih LPT1.
user5434231

1
IMO Anda perlu menambahkan 1 byte untuk nama file 1 byte.
CalculatorFeline

4

GFA-Basic, 22 byte

Hanya diuji pada emulator Atari ST dengan port paralel diarahkan ke file. Ini harus bekerja pada versi Windows GFA-Basic (yang gratis), tetapi ini belum diuji

LPRINT "Hello, World!"

Catatan: Ini ternyata identik dengan sintaks QBasic .


4

Java, 330 byte

Golf:

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

Tidak digabungkan (hanya impor plus fungsi):

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 bukan bahasa golf yang hebat, dan pasti melakukan pekerjaan golf yang sangat buruk apa pun yang berhubungan dengan perangkat keras, termasuk pencetakan.

Saat menguji program ini, saya menetapkan printer PDF saya sebagai default. Ini berhasil, tetapi juga mengirim pekerjaan cetak ke printer laser saya yang berisi 87.792 halaman "Halo, Dunia!" Saya menarik baki kertas dan membatalkan pekerjaan, lalu diuji ulang. Itu tidak terjadi lagi. Terima kasih, Windows 10.


-7 byte dengan mengubah 3x jobmenjadi j, dan i==0menjadi i<1.
Kevin Cruijssen

3

JavaScript, 37 36 byte

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

Disimpan 15 byte berkat @manatwork dan @xem!


3
Tidak perlu secara eksplisit menentukan window: document.write('Hello, World!');print(). Atau bahkan lebih pendek: print(document.write('Hello, World!')).
manatwork

3
dengan ES6 Anda bahkan dapat melakukan: document.write`Hello, world!` (info lebih lanjut di sini: xem.github.io/articles/#webspeech )
xem

Apakah itu mencetak tanpa konfirmasi? Tidak? Sayang sekali, itu tidak valid.
CalculatorFeline

@ CalculatorFeline Mengapa permusuhan? Jika Anda membaca catatan kaki tantangan yang akan Anda lihat "...Existing answers that do this as of 10:48am PST 31st Dec 2016 will be grandfathered...".
Oliver

Oh Saya merindukan bagian itu.
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();}}

Contoh output


2

Batch, 32 byte

echo Hello, World!>t
notepad/P t

Harus bekerja pada semua versi windows tanpa intervensi manual yang diperlukan.


1

Racket 35 byte

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

1

HTML (33)

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

(Meminta jendela cetak di browser, tidak mencetak langsung)


Apakah ada alasan tag harus <svg>spesifik, atau apakah tag bekerja? (Banyak tag memiliki nama yang lebih pendek.)

7
afaik, hanya svg, img (dengan src yang valid), iframe dan body memiliki aktivitas onload yang dipicu ketika halaman dimuat. img tanpa src memicu acara onerror. Singkatnya, yang terpendek yang kami temukan adalah svg onload = ...
xem

Tantangannya meminta huruf besar W(bukan karena itu mengubah jumlah byte Anda).
Martin Ender

1

APL (Dyalog) , 50 byte

Tentu saja kita bisa keluar dan menggunakan solusi Batch / Bash, tetapi mari kita buat pekerjaan cetak yang sebenarnya:

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

⎕WC adalah W indows C objek reate

Pertama-tama kita membuat objek printer (pekerjaan cetak) yang disebut 'X', kemudian ( ) di dalam ( 'X.') kita membuat objek teks dengan argumen fungsi anonim {}. Argumennya adalah ⍳2, yang memberikan dua bilangan bulat pertama ( 1 2) dan berarti 1% dari atas dan 2% dari kiri. Ketika fungsi anonim berakhir, semua variabel lokalnya ( X) dihancurkan, yang memberi sinyal ke Windows bahwa pekerjaan cetak siap untuk dicetak:


Pekerjaan cetak


0

Javascript, 36 byte

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

Ini hanya membuka dialog cetak. Intervensi manual lebih lanjut diperlukan untuk mencetak. Silakan lihat catatan di bagian bawah pertanyaan.
Digital Trauma


0

JavaScript + HTML, 20 byte

print()
Hello, World!


Ini hanya membuka dialog cetak. Intervensi manual lebih lanjut diperlukan untuk mencetak. Silakan lihat catatan di bagian bawah pertanyaan.
Digital Trauma

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

Versi Lengkap / Terformat:

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);
        }
    }
}
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.