in ấn Xin chào, thế giới!


79

Vâng thật đấy. In bằng máy in phần cứng để tạo bản sao cứng.

Gửi các lệnh / dữ liệu cần thiết đến máy in của bạn để văn bản sau được in trên một tờ giấy:

Chào thế giới!

Bạn có thể sử dụng bất kỳ máy in kết nối mạng hoặc cục bộ nào có sẵn cho bạn.

Nếu máy in của bạn cho phép, bạn nên sử dụng văn bản 8pt hoặc lớn hơn bằng mực đen trên giấy trắng.

Các văn bản sẽ xuất hiện trên dòng riêng của mình. Nó có thể được đặt bên trái hoặc bên phải như bạn muốn.

Bằng chứng ảnh / video / GIF kỹ thuật số của bài nộp sẽ hữu ích.

Nếu phần cứng của bạn không thể làm giấy, nhưng cho phép sản xuất bản cứng kỳ lạ khác như in 3D, gia công CNC hoặc in ở cấp độ nguyên tử , thì tôi sẽ vui lòng chấp nhận các bài nộp thú vị như vậy.


Để làm rõ, câu hỏi yêu cầu "Gửi các lệnh / dữ liệu cần thiết đến máy in của bạn" . Hàm ý của điều này là không yêu cầu thêm người dùng. Mở một hộp thoại in là không đủ. Các câu trả lời hiện có thực hiện điều này vào lúc 10:48 sáng PST ngày 31 tháng 12 năm 2016 sẽ được đưa ra (nhưng không được tôi ủng hộ).


56
Vui lòng cung cấp địa chỉ mà chúng tôi có thể gửi đệ trình để xác minh.
steenbergh

1
@steenbergh Yep - điểm tốt - Bằng chứng ảnh / video / GIF kỹ thuật số của bài nộp phải đủ tốt.
Chấn thương kỹ thuật số

3
Điều đáng chú ý là nhiều máy in cũ sử dụng các bộ lệnh tùy chỉnh. Hầu hết các ký tự ASCII này in theo nghĩa đen, vì vậy nếu bạn có quyền truy cập vào một trong các máy in được đề cập (hoặc chỉ có thể tuyên bố rằng bạn làm như vậy), gửi Hello, World!đến cổng máy in là đủ.

1
Tôi có thể thề rằng tôi đã thử print("Hello, World!")trong bảng điều khiển Firefox một lần và nó đã mở cuộc đối thoại in (vô dụng vì tôi không kết nối với máy in bằng bất kỳ cách nào), nhưng bây giờ nó chỉ trả về chuỗi ...
ETHproductions

2
@ETHproductions trong chrome doing <script>print("Hello, World!")</script> sẽ mở hộp thoại in, nhưng không có văn bản thực tế trên đó.
FlipTack

Câu trả lời:


41

Bash, 21 19 byte

lp<<<Hello,\ World!

bản in thực tế

Và nó đây

2 byte được lưu nhờ Dennis !


1
+1 Hợp lệ dưới dạng tập lệnh. Hoạt động tốt trên máy Mac của tôi. Nếu bạn muốn chạy nó trực tiếp tại dòng lệnh, bạn cần thay đổi dấu ngoặc kép thành dấu ngoặc đơn.
Chấn thương kỹ thuật số

tại sao không có banner để làm cho ot trông thật đẹp
juggernauthk108

@ juggernaut1996 ở đâu? Không, nếu tôi phải in một cái gì đó ra một lần nữa
Blue

37

PowerShell , 18 byte

'Hello, World!'|lp

Hãy thử trực tuyến!

nhập mô tả hình ảnh ở đây


9
Không chắc chắn điểm của liên kết TIO. +1 dù sao đi nữa.
Chấn thương kỹ thuật số

1
@DigitalTrauma Tôi nghĩ nó thật buồn cười; và nó tạo ra bài viết cho tôi. Bạn cũng có thể nhìn vào đầu ra gỡ lỗi chỉ để thấy rằng nó đang cố gắng (và không thành công) để thực hiện công việc. :-p
briantist

19
@DigitalTrauma Nếu bạn đặt địa chỉ của bạn vào trường nhập, TIO sẽ gửi cho bạn kết quả.
Dennis

@Dennis nếu tôi có tiền để đốt Tôi sẽ gửi câu trả lời sử dụng dịch vụ API để in. Than ôi ...
nghĩa sáng suốt

19

QBIC , 11 byte

'LPRINT `_h

Tôi gần như quên mất tôi đã xây dựng một 'Xin chào, Thế giới!' lệnh vào 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!"

Đã thử nghiệm và thấy hoạt động giống hệt với câu trả lời QBasic của tôi: nhập mô tả hình ảnh ở đây


1
um .. vậy liên kết đó là gì? Nó có phải là một ngôn ngữ được phát minh bởi bạn?
eis

1
@eis Vâng, tôi đã làm QBIC. Liên kết là một thư mục Google Drive có tất cả mã trong đó - Tôi sử dụng GitHub ... Đó là một trình thông dịch trên đỉnh QBasic (QBIC là viết tắt của Quick Basic's Interpreter for Codegolf) và nó chạy trong DosBox. Kiểm tra chủ đề Showcase để biết một số ví dụ (hoặc chỉ mở trang câu trả lời của hồ sơ của tôi, 75% là trong QBIC). WIP, do đó cú pháp và mã thông báo đôi khi bị thay đổi.
steenbergh

OP đã sử dụng chữ "W" để tránh tích hợp "hello world" ( xem thêm ).: Xây dựng lệnh dựng sẵn của riêng bạn cho công việc không phải là đánh gôn hoặc bạn có thể đặt "0 byte" với hành vi mặc định dựng sẵn cho điều đó .
Cœur

2
@ Cœur: ngày nay hầu như không hoạt động, hầu hết các ngôn ngữ chơi gôn mới hơn đều sử dụng vốn W chính xác vì nó là tiêu chuẩn trên PPCG, và rất có khả năng lệnh đã được thêm vào mà không có kiến ​​thức về thử thách đặc biệt này (chỉ cần đoán thêm "Xin chào, Thế giới! "Những thách thức sẽ được gửi trong tương lai)

@ Cœur Chào mừng bạn đến với PPCG! Bạn có thể ngạc nhiên khi biết rằng bạn không phải là người đầu tiên mà mối quan tâm đặc biệt đó đã xảy ra. Đây là một nơi tốt để bắt đầu đọc: meta.codegolf.stackexchange.com/q/4867/11261 Và hơn nữa, những người thích chơi golf mã dành nhiều thời gian suy nghĩ về các sơ hở: meta.codegolf.stackexchange.com/q/1061/ 11261
Jordan

16

Mẻ, 22 byte

echo Hello, World!>prn

Điều này chuyển hướng đầu ra của echolệnh tới tệp thiết bị PRN , nghĩa là nó được gửi trực tiếp đến máy in mặc định (thường là LPT1).

Tôi không có máy DOS hay máy in, vì vậy tôi sợ rằng tôi không thể kiểm tra điều này ngay bây giờ, nhưng tôi khá chắc chắn rằng tôi đã làm điều này trở lại trong ngày. Nó không hoạt động trên Windows XP trở lên.


Điều này nhắc nhở khi tôi cố gắng tạo một tệp được gọi convà không thể. À, niềm vui của các tập tin thiết bị DOS ...
từ

NT (và có lẽ là XP, v.v.) có thể được cấu hình để in theo cách này bằng cách sử dụng lệnh "net". iirc "net use lpt1: Something"
Jasen 4/2/2017

16

HTML + Javascript, 37 34 byte

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

Đã thử nghiệm trong Safari:

nhập mô tả hình ảnh ở đây

Cảm ơn @ jimmy23013 vì một số tiền tiết kiệm.


11
Điều này xuất hiện chỉ để mở hộp thoại in và không thực sự gửi công việc đến máy in mà không cần can thiệp thủ công thêm
Digital Trauma

4
@DigitalTrauma JS không thể làm điều đó
Ông Alien

1
Bạn có chắc không, @EriktheOutgolfer? Firefox và Chrome chỉ đánh giá mã tập lệnh khi thẻ đóng được đáp ứng.
manatwork

1
Vâng, tôi đã cố gắng rời khỏi </script>và nó không hoạt động.
lông mịn

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

Có vẻ hơi dài? Có lẽ đó là một chút quá phức tạp ....: P

Rất nhiều thế giới xin chào

Nói một cách nghiêm túc, đây là một đoạn ngắn hơn:

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

Không thú vị lắm, mặc dù.



13

xin chào + lp + tr, 9 15 byte

hello|tr w W|lp

Ban đầu tôi có

hello|lp

Nhưng nó đã viết hoa sai w

xin chào là gnu xin chào từ gói Debian xin chào


7
helloin một chữ thường w, như là tùy chỉnh trên hầu hết các trang web lập trình. (Tôi không chắc chắn làm thế nào chữ hoa Wtrở thành tiêu chuẩn trên PPCG.)

7
@ ais523 Tôi nghĩ chữ hoa W là tiêu chuẩn ở đây chính xác để tránh được xây dựng như thế này.
Pavel

2
Nếu viết hoa sai, tôi sợ điều này không hợp lệ.
Dennis

Cảm ơn ý kiến ​​của bạn, tôi sẽ xóa câu trả lời này vào ngày mai.
Jasen

6
Thế còn hello|tr w W|lp?
David Conrad

11

ZX Spectrum BASIC, 16 byte

LPRINT "Hello, World!"

LPRINT là một từ khóa 1 byte trong ZX Spectrum BASIC, có mã số 224.


1
bạn có thể hiển thị một bức ảnh của bản cứng
Jasen

4
@Jasen Về lý thuyết tôi vẫn còn bộ dụng cụ xung quanh, nhưng sẽ là một chút công việc để đào nó ra và nối nó với một chiếc TV đủ cũ. Xin lỗi vì điều đó.
Neil

bạn có thể gõ lệnh "mù".
Jasen

10

MATLAB, 40 37 36 byte

In văn bản không phải là điều bạn thường làm trong Matlab, nhưng nó có thể được thực hiện.

title 'Hello, World!'
axis off;print

Tôi đã lưu được 3 byte nhờ Tom Carpenter (sử dụng titlethay vì text(0,0,. Tôi đã lưu thêm 2 byte bằng cách thay thế title('Hello, World!') withtiêu đề 'Xin chào, Thế giới!' Theo sau là một dòng mới thay vì dấu chấm phẩy.

titlethêm một tiêu đề cho một con số. Nếu một hình chưa được mở, nó sẽ được tạo.

axis off được sử dụng để thoát khỏi khung và trục, để văn bản xuất hiện một mình.

print in hình hiện tại đến máy in mặc định nếu không có đối số đầu vào nào được đưa ra.

Tôi đã in nó (thành công theo hộp thoại) trên máy in mặc định của tôi tại văn phòng. Tôi có thể lấy nó ở đó và chứng minh nhưng bạn sẽ phải chờ hai tuần. Sau khi thay đổi mặc định thành máy in pdf, đây là đầu ra:

nhập mô tả hình ảnh ở đây

^^ Không phải hình ảnh chính xác nữa.


8

QBasic, 21 byte

LPRINT"Hello, World!"

LPRINTgửi văn bản trực tiếp đến máy in. Thật không may, chưa được kiểm tra, DosBox không hỗ trợ về mặt bản chất NET USE, vì vậy tôi không thể định tuyến lại LPT1:tới NovaPDF.

Những vấn đề tôi có ...

CẬP NHẬT: Đã thử nghiệm nó trong QB64. Kết quả PDF được mở trong Microsoft Edge. Trông như thế này: nhập mô tả hình ảnh ở đây


7

Mã máy 8086, 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

Sử dụng int 0x17cuộc gọi BIOS tiêu chuẩn . Tôi không có máy in ma trận điểm của mình được thiết lập ngay bây giờ để mã này chưa được kiểm tra.

Làm thế nào nó hoạt động:

            |   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
Chắc chắn, chỉ cần thêm nó.
dùng5434231

Bây giờ chúng ta nói chuyện!
Chuộc tội có giới hạn

6

Batch + Stuck, 12 byte

Lấy cảm hứng từ câu trả lời này, một chương trình bị kẹt trống in "Xin chào, Thế giới!".

  1. Có máy in kết nối với cổng LPT1 của máy tính của bạn
  2. Tạo một tệp bị kẹt trống để được giải thích (tên tệp a)
  3. Chạy trình thông dịch bị kẹt trên tệp trống và chuyển kết quả sang LPT1

stuck a>LPT1

4
Nếu bạn đang sử dụng nhiều ngôn ngữ, bạn cũng cần đếm keo kết nối chúng với nhau như một phần của số byte của bạn. Tôi sẽ tính số này là 15 cho chương trình Batch, cộng với 0 do nhu cầu về tệp bên ngoài 0 byte.

1
Bạn có thể hiển thị rõ ràng tập lệnh bó Windows và rõ ràng lệnh được sử dụng để gọi Stuck và truyền kết quả cho máy in không? Bằng cách rõ ràng tôi có nghĩa là một cái gì đó như stuck empty > LPT1. BTW nếu điều này sử dụng REPL tôi tin rằng sự đồng thuận cần được nêu rõ (tôi tin rằng nó sẽ giảm thiểu sự nhầm lẫn chính xác như thế này).
redstarcoder

@ ais523 Tôi chinh phục - Tôi nên đếm keo, và vì điều đó, đã nâng nó từ 5 byte lên 12
Daniel

Bạn có thể lưu một byte ở đây bằng cách chuyển hướng đến PRN thay vì LPT1.
dùng5434231

1
IMO bạn cần thêm 1 byte cho tên tệp 1 byte.
Máy

4

GFA-Basic, 22 byte

Chỉ được thử nghiệm trên trình giả lập Atari ST với cổng song song được chuyển hướng đến một tệp. Nó nên hoạt động trên phiên bản Windows của GFA-Basic (miễn phí), nhưng điều này chưa được kiểm tra.

LPRINT "Hello, World!"

Lưu ý: Điều này hóa ra là giống hệt với cú pháp QBasic .


4

Java, 330 byte

Chơi gô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>0?1:0;}});job.print();}

Ungolfed (chỉ nhập hàm cộng):

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 không phải là một ngôn ngữ chơi golf tuyệt vời và chắc chắn một công việc cực kỳ kém là chơi golf bất cứ thứ gì liên quan đến phần cứng, bao gồm in ấn.

Trong khi thử nghiệm chương trình này, tôi đặt máy in PDF của mình làm mặc định. Nó đã hoạt động, nhưng cũng đã gửi một công việc in tới máy in laser của tôi chứa 87.792 trang "Xin chào, Thế giới!" Tôi kéo khay giấy và hủy công việc, sau đó kiểm tra lại. Nó đã không xảy ra một lần nữa. Cảm ơn, Windows 10.


-7 byte bằng cách thay đổi 3x jobđến j, và i==0để i<1.
Kevin Cruijssen

3

JavaScript, 37 36 byte

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

Đã lưu 15 byte nhờ @manatwork và @xem!


3
Không cần phải xác định rõ ràng window: document.write('Hello, World!');print(). Hoặc thậm chí ngắn hơn : print(document.write('Hello, World!')).
manatwork

3
với ES6 bạn thậm chí có thể làm: document.write`Hello, world!` (thông tin thêm ở đây: xem.github.io/articles/#webspeech )
xem

Nó in mà không cần xác nhận? Không? Chà quá tệ, nó không hợp lệ.
Máy

@CalculatorFeline Tại sao sự thù địch? Nếu bạn đọc chú thích về thử thách bạn nhìn thấy "...Existing answers that do this as of 10:48am PST 31st Dec 2016 will be grandfathered...".
Oliver

Oh. Tôi đã bỏ lỡ phần đó.
Máy


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

Ví dụ đầu ra


2

Hàng loạt, 32 byte

echo Hello, World!>t
notepad/P t

Nên hoạt động trên tất cả các phiên bản của windows mà không cần can thiệp thủ công.


1

Vợt 35 byte

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

1

HTML (33)

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

(Nhắc một cửa sổ in trong trình duyệt, không in trực tiếp)


Có một lý do thẻ phải được <svg>cụ thể, hoặc bất kỳ thẻ sẽ làm việc? (Nhiều thẻ có tên ngắn hơn.)

7
afaik, chỉ có Svg, img (với src hợp lệ), iframe và body có một sự kiện onload được kích hoạt khi trang được tải. img không có src kích hoạt một sự kiện onerror. tất cả trong tất cả, ngắn nhất chúng tôi tìm thấy là svg onload = ...
xem

Thử thách yêu cầu chữ hoa W(không phải nó thay đổi số byte của bạn).
Martin Ender

1

APL (Dyalog) , 50 byte

Tất nhiên chúng ta có thể bỏ ra và sử dụng giải pháp Batch / Bash, nhưng thay vào đó, chúng ta hãy tạo ra một công việc in thực sự:

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

⎕WC Là W indows C reate object

Đầu tiên chúng ta tạo ra một đối tượng máy in (một công việc in) được gọi 'X', sau đó ( ) trong đó ( 'X.'), chúng tôi tạo ra một đối tượng văn bản ở đối số của hàm nặc danh {... }. Đối số là ⍳2, cung cấp cho hai số nguyên đầu tiên ( 1 2) và có nghĩa là 1% từ đầu và 2% từ bên trái. Khi chức năng ẩn danh chấm dứt, tất cả các biến cục bộ ( X) của nó bị hủy, điều này báo hiệu cho Windows rằng lệnh in đã sẵn sàng để được in:


Công việc in


0

Javascript, 36 byte

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

Điều này chỉ cần mở hộp thoại in. Cần can thiệp thủ công hơn nữa để thực sự in. Xin vui lòng xem ghi chú ở dưới cùng của câu hỏi.
Chấn thương kỹ thuật số



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

Phiên bản đầy đủ / được định dạng:

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);
        }
    }
}
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.