Hello World được sắp xếp ngắn nhất


27

Viết chương trình không có đầu vào và in Hello, World!ra thiết bị xuất chuẩn hoặc ngôn ngữ thay thế gần nhất với ngôn ngữ của bạn. Điều hấp dẫn là mỗi dòng trong chương trình của bạn chỉ phải chứa các ký tự ASCII có thể in được và nó phải theo thứ tự từ điển, hay còn gọi là sắp xếp.

Dưới đây là tất cả 95 ký tự ASCII có thể in theo thứ tự:

 !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~

Vì vậy, ví dụ, dòng !!A0~sẽ không hợp lệ vì A0không đúng thứ tự. Dòng !!0A~này sẽ hợp lệ.

Mỗi dòng trong chương trình của bạn có thể có độ dài bất kỳ và có thể có bất kỳ số lượng dòng nào. Các dòng trống được coi là sắp xếp. Mỗi phòng trong số dòng mới trong chương trình của bạn phải giống nhau (không pha trộn \n\r\n). Các tab và các ký tự ASCII không in được đều bị cấm.

Do nhu cầu phổ biến , điều kiện thắng đã được chuyển đổi:
Bài nộp có ít dòng nhất sẽ thắng. Tiebreaker đi đến chương trình ngắn nhất (dòng mới được tính là các ký tự đơn).

Chỉ Hello, World!và một dòng mới tùy chọn nên được đầu ra. Lưu ý rằng HQ9 + không hợp lệ vì nó xuất ra hello, world. Tôi có thể cấm các ngôn ngữ tương tự như HQ9 + có một ký tự "Xin chào, Thế giới!" lệnh do tầm thường của họ.

Dấu:

Điều này chắc chắn có thể có trong UnaryLenguage , mặc dù không chính xác lắm.


7
Bây giờ hơi muộn, nhưng bằng cách nào đó tôi cảm thấy như ít dòng nhất thì ít byte nhất có thể thú vị hơn ...
Sp3000

6
@ Sp3000 Chúng tôi cần một biện pháp kết hợp, nếu không, Unary và Lenguage sẽ có nghĩa là chỉ có 1 lớp lót có thể cạnh tranh.
isaacg

@ Sp3000 Có lẽ, tôi chỉ muốn đảm bảo Unary / Lenguage không có khả năng chiến thắng. Tôi sẵn sàng thay đổi nó mặc dù (xin lỗi isaacg). Upvote Sp bình luận nếu bạn đồng ý.
Sở thích của Calvin

@ Sp3000 Tôi đã lấy lời khuyên của bạn. Xem cập nhật.
Sở thích của Calvin

Thứ tự có thể được đảo ngược? Ví dụ, đọc từ trái sang phải?
Ismael Miguel

Câu trả lời:


17

Headsecks , 1 dòng, 366 byte

                                                                        $(((((((((((((((((((((((((((((,000000044888<AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADIIIIIIIIIIIILPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPTXXXXXXXXXXXXXXXXXXXXXXXX\```diiiiiilqqqqqqqqtyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy|

Headsecks là một sự thay thế Brainfuck tầm thường trong đó điều duy nhất quan trọng là điểm mã modulo 8. Brainfuck tương đương chỉ đơn thuần là

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++.+++++++++++++++++++++++++++++.+++++++..+++.-------------------------------------------------------------------.------------.+++++++++++++++++++++++++++++++++++++++++++++++++++++++.++++++++++++++++++++++++.+++.------.--------.-------------------------------------------------------------------.

May mắn là cách tiếp cận ngây thơ này chỉ phù hợp. Có một số tiềm năng để chơi golf xuống byte, nhưng nó có thể khó.

Đã thử nghiệm bằng trình thông dịch Python này .


Tạo mã

code = "++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++.+++++++++++++++++++++++++++++.+++++++..+++.-------------------------------------------------------------------.------------.+++++++++++++++++++++++++++++++++++++++++++++++++++++++.++++++++++++++++++++++++.+++.------.--------.-------------------------------------------------------------------."
command_map = "+-<>.,[]"

last_point = 32
out = []

for char in code:
    curr_mod = command_map.index(char)
    last_mod = last_point % 8

    if curr_mod > last_mod:
        last_point += curr_mod - last_mod

    elif curr_mod < last_mod:
        last_point += (8 - last_mod) + curr_mod

    out.append(chr(last_point))

print("".join(out))

Thật là thông minh! +1
theonlygusti

Bạn có thể sử dụng một chương trình BF ngắn hơn, hoặc chương trình được xây dựng một cách cụ thể vì một lý do? Tôi đã thử chương trình BF mà tôi đã sử dụng trong trình tạo của bạn, nhưng đầu ra bao gồm một số unicode.
mbomb007

1
@ mbomb007 Vấn đề với các chương trình BF ngắn hơn là ngay cả phương pháp ngây thơ này cũng kết thúc tại điểm mã 124, vì vậy tôi không nghĩ có đủ chỗ ngọ nguậy để giới thiệu các ký tự mới ...
Sp3000 30/03/2015

30

/// , 7 dòng, 22 byte

/
//Hello
,
 Wor
l
d
!

Cơ hội hiếm có để /// có thể cạnh tranh (miễn là không ai bắt đầu với Unary và Lenguage ...).

Mã đầu tiên gặp a /và phân tích cú pháp

/
//

như một hướng dẫn thay thế loại bỏ tất cả các dòng mới từ phần còn lại của chương trình. Sau đó, chương trình chỉ đọc

Hello, World!

được in nguyên văn vì nó không chứa bất kỳ dấu gạch chéo nào nữa.


19
Tôi thậm chí không nhận ra rằng các URL có thể chứa nhiều dấu gạch chéo liên tiếp.
Alex A.

4
@AlexA. Phải mất vài tháng để URL đó hoạt động, IIRC. Chúng tôi phải tiếp tục đổi tên bài viết để đối phó với các thay đổi đối với cấu hình máy chủ và cấu hình MediaWiki.

17

JavaScript (67 66 62 dòng, 227 269 ​​byte)

(Lưu ý: chỉ được thử nghiệm trên Firefox 36 và Safari 8, chứa các tính năng ES6 nhỏ ( Setlớp))

Z
=
!""+
(0[[]]
+
(
!!""+Set
));c
=Z[~
-22]
$=Z[
3]
$$=Z[
15]
$$$=Z[
24]
$$$$=Z[
1]
$$$$$=Z[
0]
Set
[c
+
$$$+Z[
5]
+Z[
16]
+
$$$$$+
$$$$+Z[
2]
+c
+
$$$$$+
$$$+
$$$$]
(Z[
14]
+
$$+
$+
$$$$+
$$$$$+
"(\
'H\
"+
$+
$$+
$$+
$$$+
",\
 W\
"+
$$$+
$$$$+
$$+Z[
6]
+
"\
!')\
")
()

Các mã ở trên về cơ bản không:

alert("Hello, World!")

Rõ ràng alertlà không được sắp xếp. Vì vậy, thay vào đó chúng ta cần tạo câu lệnh dưới dạng một chuỗi và "eval" nó:

s = "alert('Hello, World!')";   // generate this using sorted code
eval(s)

Làm thế nào để tạo chuỗi? ES5 hỗ trợ tiếp tục dòng để

"AL\
ERT" === "ALERT"

Nhưng mã ký tự \xuất hiện trước tất cả các chữ cái viết thường, vì vậy chúng ta phải tạo các chữ cái thường bằng các phương thức khác.

Chúng tôi mượn một số ý tưởng về JSFuck ở đây. Các chữ cái viết thường liên quan đến các tuyên bố cảnh báo là:

t e r a o l d

tất cả những thứ này có thể được trích xuất từ ​​các ký tự của các đối tượng tiêu chuẩn, có thể được biểu thị theo một số thứ tự được sắp xếp:

t, e, r ← true      = !""
a, l    ← false     = !!""
o       ← function  = Set
d       ← undefined = 0[[]]

Làm thế nào để chúng ta đánh giá chuỗi? Chắc chắn chúng ta không thể sử dụng eval(s)vì nó không được sắp xếp. Ngoài ra, chúng tôi có thể sử dụng Function(s)(), nhưng chúng tôi không thể sử dụng Functionvì nó cũng không được sắp xếp. Tuy nhiên, Functionlà hàm tạo của tất cả các hàm, có nghĩa là Set.constructor === Function.

Thêm định danh constructorlàm cho danh sách các chữ cái viết thường trở thành:

t e r a o l d c u n s

điều may mắn vẫn có thể được tạo ra bởi "truefalseundefinedfunction":

t, e, r, u ← true      = !""
a, l, s    ← false     = !!""
o, c, n    ← function  = Set
d          ← undefined = 0[[]]

Sau khi chỉnh sửa, mã ở trên sẽ đọc như sau:

// lines 1~8 defines our string containing all lowercase letters we want
Z = true + (undefined + (false + Set))
// Z = "trueundefinedfalsefunction Set() { [native code] }"

// lines 8~20 defines the variables `c`, `$` (e), `$$` (l), `$$$` (o), 
// `$$$$` (r), `$$$$$` (t)
// for the corresponding lowercase letters extracted from `Z`

// the rest calls:
Set["constructor"]("alert('Hello, World')")()
// lines 22~36 generates the "constructor" string
// lines 37~61 generates the "alert('Hello, World')" string

Cập nhật: đổi tên E, L, O, R, Tđể lặp lại hình $để giảm 4 dòng.


2
Hoàn toàn rực rỡ! Tôi chắc chắn không biết liệu điều này có thể sử dụng cùng thời điểm chiến lược trong Python hay không (nó phân biệt chữ hoa chữ thường).
mbomb007

Rất đẹp! Lưu ý rằng =Z[3*7]có thể được viết vì =Z[~-22]chỉ cần ngắt một dòng thay vì hai.
tôi và con mèo của tôi

@ mbomb007 Vâng, nhưng không gian là và chúng là đầu tiên trong bộ ASCII ...
Harry Beadle

@meandmycat Cảm ơn! Cập nhật.
kennytm

13

Mất ngủ , 4 dòng, 59 byte

 FFFFGjnnnnooty
FLLddeejkopqyyyyy~~
(<ddjnoppppqrtu
<<Fddfj

Chương trình này được tạo ra bằng cách tối ưu hóa cho số lượng dòng.

10 dòng, 43 byte

(u
pt
(dppty
p~
j
<Fptt{
(otz
?o
FLu
<?FFu~

Chương trình trên được tạo ra bằng cách tối ưu hóa số byte.


11

Bash Cygwin, 16 dòng, 60 byte

Điều này chỉ hoạt động do tên tệp không phân biệt chữ hoa chữ thường trên Windows và thực tế là Cygwin tra cứu các tiện ích không phân biệt chữ hoa chữ thường ngay cả khi bạn không đặt nó để nhận ra đường dẫn không phân biệt chữ hoa chữ thường.

A\
=Hello
A\
+=\
",
"Wor
A\
+=l
A\
+=d
A\
+=\
!
E\
CHO\
 $A

Hãy lưu ý về điều đó ECHOở cuối.


Tôi không chắc đây là 17 hay 16 dòng (có một dòng mới ở cuối), nhưng dù sao đi nữa, điều này sẽ không giành được bất cứ điều gì.
n̴̖̋h̷͉̃a̷̭̿h̸̡̅ẗ̵̨́d̷̰̀ĥ̷̳

Bạn đã giành được 10 lượt upvote, đó là rất nhiều. Những người được đánh giá cao nhất (tính đến thời điểm hiện tại) có 12 lần nâng cấp! Và giải pháp /// với 23 upvote.
Ismael Miguel

11

> <> , 6 dòng, 111 byte

  """""""/;;Hello
        &\o
      &++\oooo~~
"++++++++\bbbdlr
    +++++\ccccccccfooo}
    $++66\cfffffooooopr

Tôi gặp khó khăn khi chơi golf thêm một dòng, nhưng trong mọi trường hợp, tôi rất vui vì đã đánh bại phương pháp 7 dòng.

Giải trình

> <> là ngôn ngữ 2D dựa trên ngăn xếp trong đó các hướng dẫn là các ký tự đơn và luồng chương trình có thể lên, xuống, trái hoặc phải. Các "hướng dẫn Toggles chuỗi phân tích cú pháp, đẩy chars cho đến khi một bế mạc "được đáp ứng, nhưng vì bản chất của> <> không có những điều như "đa-line chuỗi phân tích cú pháp" như với chuỗi CJam hoặc chuỗi trích dẫn ba của Python. Điều này hóa ra là một vấn đề lớn bởi vì bắt đầu và kết thúc một dòng với a "và có các ký tự khác ở giữa (ví dụ "some chars") không được phép!

Lưu ý rằng /\phản ánh luồng chương trình, vì vậy chúng tôi thực sự thực hiện dòng đầu tiên sau đó tất cả các dòng theo thứ tự ngược lại, và hầu hết các dòng thực sự được thực hiện ngược!

[Line 1]

""""""              Three empty strings, push nothing
"/;;Hello  "        Push "/;;Hello  ". Note the wrapping - ><> is toroidal!
""""""              Three empty strings, push nothing

[Line 6]
66++$               Turn the top " " into "," by adding 12, then swap top two
rp                  Reverse stack and pop top 3
ooooo               Print "Hello", stack is now " ,"
fffffc              Push some 15s and a 12

[Line 5]
+++++               Sum the 15s and 12 to give 87, or "W"
}ooo                Move "W" to the back and output ", W"
fcccccccc           Push a 15 and some 12s

[Line 4]
++++++++            Sum the 15 and 12s to give 111, or "o"
"rldbbb\++++++++"   Push chars to stack
r                   Reverse stack
ld                  Push length of stack and 13, not used
bbb                 Push three 11s

[Line 3]
++&                 Sum the 11s to give 33, or "!" and put in register
~~                  Pop top two
oooo                Print "orld"

[Line 2]
&                   Put "!" from register to stack
o                   Print "!"

[Line 1]
;                   Terminate

Bên cạnh đó, đây là một nỗ lực gây cười ở một> <> ít byte nhất (23 dòng, 47 byte):

v
"
!
d
l
r
o
W

,
o
l
l
e
H
"
/<
l
?
!
;
o
\^

2
Trong mã thứ hai, bạn có thể lưu 2 byte nhờ bao quanh dọc: pastebin.com/heqCr1vJ
Randomra 28/03/2015

10

CJam, 5 4 dòng, 162 byte

"Hello
")))))))))))))))))))))))))))))))))))68S\cel
"Wor
")))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))@SX\c|

Cùng một số dòng như Mất ngủ! (nhưng nhiều byte hơn)

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

Giải trình

"Hello\n"        Push "Hello" and a newline
)                Uncons the newline
)))...)))        Increment the newline into a ","
68S\             Push 68 and a space then swap, leaving 68 on top
c                Convert 68 into a char "D"
el               Lowercase "D" into "d"
"Wor\n"          Push "Wor" and a newline
)                Uncons the newline
)))...)))        Increment the newline into an "l"
@                Rotate top three elements, moving the "d" to the top
SX\              Push a space and 1 then swap, leaving the space on top
c                Convert the space (which is an array) into a char
|                Bitwise or the space (32) with 1 to give "!" (33)    

CJam tự động in ngăn xếp sau đó.

Cảm ơn @Optimizer đã nhắc nhở tôi rằng nó Schoạt động, vì nếu không thì SX|thất bại (nó thực hiện một setwise hoặc thay vào đó, đưa ra mảng bao gồm một khoảng trắng và 1).


8

> <> (Cá) , 5 dòng, nhiều byte

Mã này rất dài, khi tôi nói [6535529689086686142930090 '+' signs][6535529689086686142930090 'd' characters]trong dòng đầu tiên của mã, tôi có nghĩa là có 6535529689086686142930090các dấu cộng theo nghĩa đen liên tiếp!

(Và đối với các dòng sau, thêm các không gian tiền tố cần thiết.)

'[6535529689086686142930090 '+' signs]^`[6535529689086686142930090 'd' characters]
                                   **,/288
                                     -/:o
                             %**288:;?\
                                   (1:\

Một thay thế có thể kiểm tra ngắn hơn mà chỉ in Hi:

'+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++^`hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh
                                                                                                                               **,/288
                                                                                                                                 -/:o
                                                                                                                         %**288:;?\
                                                                                                                               (1:\

Phương pháp:

  • Trong dòng đầu tiên, chúng tôi tạo ra một số lượng lớn đại diện cho chuỗi trong cơ sở128.
  • Trong phần còn lại của dòng (đi từ dưới lên trên) chúng tôi in ký tự sau trong mỗi vòng lặp cho đến khi giá trị của số nguyên đạt 0.
  • Mã lặp là :1(?;:882**%:o-288**,.

(Chúng ta có thể in chuỗi ký tự dài hơn 2 ký tự tùy ý bằng phương pháp này.)


Không phải là một giải pháp hợp lệ; 6535529689086686142930090 không được đặt hàng.
theonlygusti

@theonlygusti "Mã này cực kỳ dài, diễn giải [6535529689086686142930090 '+' signs]và theo [6535529689086686142930090 'd' characters]nghĩa đen trong dòng đầu tiên của mã." (Nếu không rõ ý của tôi là gì, hãy kiểm tra đoạn mã thứ hai.)
Randomra

Ờ được rồi! Xin lỗi, ngớ ngẩn với tôi: PI đã hiểu theo nghĩa đen.
theonlygusti

2
Kích thước là 13 YB, gấp khoảng 1000 lần kích thước của Internet.
Charles

@Charles Tôi nhận được ~ 40YB bao gồm các dòng sau.
Veedrac

8

PHP (7/17 dòng, 36/59 byte):

Do số lượng câu trả lời không hợp lệ, tôi viết lại câu trả lời này.

Phiên bản trình duyệt? Không còn.

Nhưng tôi có 2 giải pháp, cả hai đều dựa trên chuỗi bitwise xor( ^) trong PHP.

Đây là một giải pháp cực kỳ mạnh mẽ! Đôi khi, nó cho phép tiết kiệm nhiều byte.

Đầu tiên, câu trả lời ngắn nhất:

Echo
Hello
,AM^mm
,Wor
,OOO^
"#+n
";

Tôi biết, nó có vẻ khủng khiếp, nhưng nó hoạt động!

Việc tiếp theo phụ thuộc vào dòng mới.

Có, nó sử dụng các dòng mới ( \n/ kiểu UNIX là bắt buộc)!

Echo
Bo
.ff
.e
.
"&*]ex
fn
"^
"\n
\n
\n
\n
\n
\n
\n
",B^c
;

Các dòng mới về điều này là bắt buộc để làm việc.

Nó không hoàn hảo, nhưng hoạt động!


Cả hai câu trả lời đều dựa trên giải pháp của @ MartinBüttner :

Echo
Hello
.
chr
(44
).
chr
(29
+3
).Wor
.l
.d
."!
";

Cảm ơn đặc biệt đến @ n̴̖̋h̷͉̃a̷̭̿h̸̡̅ẗ̵̨́d̷̰̀ĥ̷̳ , @CJDennis , @ MartinBüttner@skagedal vì đã phát hiện tất cả các lỗi của tôi và cho các đề xuất của họ.


1
Đầu ra trong trình duyệt là Hello , Wor l d !. Lưu ý các không gian thêm! Thật không may, đây không phải là một câu trả lời hợp lệ.
CJ Dennis

1
Đã thử nghiệm trong Firefox 36, IE 8, Opera 12.17 & Opera 28 (Chromium) trên Windows XP. Tất cả kết xuất đầu ra giống hệt nhau. Vì bất kỳ số lượng ký tự khoảng trắng nào được hiển thị dưới dạng một ký tự khoảng trắng (không có dấu cách, v.v.), mỗi dòng mới được chuyển đổi thành khoảng trắng. Tôi sẽ quan tâm để biết nếu bất kỳ trình duyệt nào kết xuất đầu ra của bạn mà không có không gian!
CJ Dennis

1
Đẹp lạm dụng ngôn ngữ! Vì các lỗi mà nó tạo ra về mặt kỹ thuật chuyển sang stderr chứ không phải stdout, mã của bạn hiện hợp lệ mặc dù trong trường hợp của tôi, tôi thấy rất nhiều lỗi trong trình duyệt của mình! Và, cực kỳ khó tính, thiết lập PHP của tôi bị tắt các thẻ ngắn nên dòng đầu tiên trên máy tính của tôi <?phpkhông hợp lệ! Tuy nhiên, tôi sẽ tha thứ cho bạn vì điều này! OK, vừa thử nghiệm <?Phpcái nào hoạt động, vì vậy tôi mới biết rằng thẻ bắt đầu không phân biệt chữ hoa chữ thường!
CJ Dennis

1
Hai giải pháp hàng đầu trong câu trả lời này không tuân theo các quy tắc. Đầu trang có, như dòng 8 ,. "!<br- cái này không được sắp xếp Cái thứ hai có dòng 10: ."!- không được sắp xếp.
skagedal 30/03/2015

1
@IsmaelMiguel Tôi xin lỗi, nhưng không. Dòng 7 của đề xuất đầu tiên không được sắp xếp. Dòng 5 và 7 của gợi ý thứ hai không được sắp xếp.
skagedal

7

Pyth, 7 dòng, 23 byte

-
"Hello
,
 Wor
l
d
!"b

Khá đơn giản, chỉ cần sử dụng một chuỗi nhiều dòng và loại bỏ các dòng mới.

Hãy thử nó ở đây.


@orlp Tôi đã thêm chuỗi multiline vài ngày trước và Pyth đã hỗ trợ cho các dòng mới trong đầu vào cho các lứa tuổi. Điều này hoàn toàn không sử dụng chế độ đa dòng. Hãy thử nó trên trình biên dịch trực tuyến, chắc chắn không có chế độ đa dòng.
isaacg

2
Nó gần như giống nhau trong CJam, với cùng một số byte.
Tối ưu hóa

4

Forth, 41 dòng, 143 byte

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

Tôi rất tự hào về điều này. Tôi đã đánh cắp nó khá nhanh khi tôi thấy mình có thể làm được, nhờ Google tìm kiếm các ngôn ngữ không phân biệt chữ hoa chữ thường và tôi đã biết rõ về Forth. Nó gần như chắc chắn có thể được rút ngắn, cả byte và dòng. Gợi ý được đánh giá cao. : D

Chương trình này về cơ bản đẩy giá trị thập phân của từng ký tự ASCII, sau đó in từng ký tự. Tôi đã cố gắng tối ưu hóa trong khi tôi viết nó, do đó nó ít đọc hơn tôi muốn.

33
99
1
+
DUp
8
+
2DUp
6
+
SWap
11
+
2OVer
SWap
8
9
*
EMit
1
+
EMit
DUp
DUp
EMit
EMit
3
+
EMit
29
3
2DUp
+
EMit
*
EMit
EMit
EMit
EMit
EMit
EMit

Các Emitdòng không hoạt động, vì i(105) nhỏ hơn m(109).
bcsb1001

Nó phải là "EMit", sau đó?
skagedal 30/03/2015

4

Tuyệt vời, 9 dòng, 94 byte

3333
    @ADD
    358C
++--29\\
++--3555DE
<<<<<<>>~~
+++++446666D
++++++++../\
      ++------

Kiểm tra nó trực tuyến ở đây. Using spaces for blank cellsphải được kiểm tra

Đại diện trực quan của nguồn:

Đại diện trực quan của nguồn trên

Giải thích: Mỗi giá trị thập lục phân trong chương trình này di chuyển xuống dưới mỗi "đánh dấu" (trừ khi nó bật \\, trong trường hợp này nó di chuyển sang phải). ++sẽ tăng giá trị, --giảm dần, ~~áp dụng một chút không, v.v ... Các giá trị rơi xuống đáy được in dưới dạng ký tự ASCII.

Ví dụ: Ở 33góc trên cùng trở thành (((0x33 +1 +1) << 1) +1 +1 = 0x6C (l).


2

Perl, 17 dòng

$_
=
'pr
int
"Hello
,
 Wor
l
d
!"';s
!
!!g
;s
!.
*
!$&
!eex

2

Rebol - 15 dòng (51 byte)

PRin
AJOin
[
'Hello
Sp 
+
12
Sp
'Wor
'l
'd
Sp
+
1
]

Từ Rebol là case-insensitive (ví dụ. PRINT, Printprint tất cả sẽ gọi hàm giống nhau).

Các mã trên được dọn dẹp:

prin ajoin [
    'Hello  sp + 12  sp  'Wor  'l  'd  sp + 1
]

Lưu ý sptrả về không gian char!


Chương trình của bạn không hợp lệ, {không thể trước bất kỳ chữ cái nào.
theonlygusti 28/03/2015

@theonlygusti - Đã sửa (đi từ 9 dòng xuống 13). Dòng duy nhất gây ra cho tôi một vấn đề là {,}. Bây giờ là Sp + 12(hơn 3 dòng) tương đương với ký tự không gian + 12 (tức là dấu phẩy)
Drainegtun

2

Unary , 1 dòng, rất nhiều byte

Mỗi nhân vật trong chương trình này là 0. Nguồn quá dài để đặt ở đây, nhưng nó bao gồm một chuỗi gồm nhiều số không:

327380789025192647555922325233404088310881092761595127419003295178342329930050528932118548

Đây là biểu diễn thập phân cho số nhị phân này:

0b1010010010010010010010010110000010010010010110000010010000010010010000010010010000010001001001001011111000010000010000011110001111001011111000000100000011011011100010010010010010010010100100010010010100000000100001011100001100010010010100011011011011011011100011011011011011011011011100000000010100

Được tạo từ chương trình BrainF *** này:

++++++++[>++++[>++>+++>+++>+<<<<-]>+>+>-[<]<-]>>.>---.+++++++..+++.>>.<-.<.+++.------.--------.>>+.

Xem cách tôi tạo nó: http://ideone.com/lMT40p


2

Batch - 39 dòng (202 byte)

Tôi muốn cắt giảm kích thước bằng cách cho phép mở rộng bị trì hoãn bằng cách chạy mã bên trong cmdcuộc gọi bằng cách sử dụng công /v ontắc, nhưng không thể vượt qua tất cả các carat.

@S^
ET^
LO^
C^
AL^
 EN^
ABL^
E^
DEL^
AY^
E^
DEX^
P^
ANS^
IO^
N
@S^
ET^
 0=Hello
@S^
ET^
 1=^
,^
 Wor
@S^
ET^
 2=l
@S^
ET^
 3=d
@E^
CHO^
 !^
0^
!!1^
!!2^
!!3^
!^^^
!

Không có dòng mới (và carat để thoát dòng mới):

@SETLOCAL ENABLEDELAYEDEXPANSION
@SET 0=Hello
@SET 1=, Wor
@SET 2=l
@SET 3=d
@ECHO !0!!1!!2!!3!^^!

1

Ruby, 19 dòng, 95 byte

$;=
$>
$;<<
:Hello
$;<<
44::chr
$.=
33::
-1
$;<<
$.::chr
$;<<
:Wor
$;<<
:l
$;<<
:d
$;<<
33::chr

Có thể là hạn chế mã khó thứ hai đối với Ruby mà tôi đã thấy trên trang web này, sau sự quái dị ở đây .

Chỉnh sửa để giải thích: Phương thức đầu ra Ruby duy nhất được sắp xếp là <<phương thức trên STDOUT. Thật không may, hằng số cho STDOUT là$>>ASCII cao hơn hầu hết các ký hiệu, vì vậy thực sự không thể gọi một phương thức trên nó. Chúng ta cần một câu lệnh gán nhiều dòng để đưa nó vào một tên biến dễ hiểu hơn,$; (dấu chấm phẩy vẫn còn khá cao, nhưng hầu hết các biến của dạng này đều không thể gán được hoặc chỉ có thể là chuỗi).

Biểu tượng ( :Wor, v.v.) là cách dễ nhất để thực hiện nghĩa đen và tôi không thấy cách nào để loại bỏ dòng mới khỏi chuỗi, vì vậy tôi cần nhiều câu lệnh in. Không gian và dấu chấm câu không thể đi vào một ký hiệu theo nghĩa đen, nhưng may mắn là chrphương pháp về số là hợp pháp, vì vậy tôi có thể nhận được một ký tự từ giá trị ASCII của nó. ::là một cách khác của phương thức gọi. Không gian là khó khăn vì tôi không thể viết 32, vì vậy tôi trừ 1 từ 33 và gán nó cho một biến.


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.