Xin chào, Thế giới


29

Nhiệm vụ của bạn là tạo ra một chương trình in "Lời chào, Hành tinh!" chính xác đến bàn điều khiển. Có vẻ đủ đơn giản, phải không? Vâng, đây là mẹo. Mã phải là một bảng màu, nghĩa là nó đọc từ phải sang trái giống như ở bên trái sang phải. Lỗ hổng tiêu chuẩn KHÔNG được phép.


Điều này dường như không phải là "xin chào thế giới".
Erik the Outgolfer

4
@ ΈρκΚωστ Mục tiêu là in một chuỗi ngắn gồm hai từ có dấu chấm câu chung trong các chương trình Hello World. Ngoài các bản dựng sẵn có in Hello World, các giải pháp sẽ hoàn toàn giống nhau (ngoài chuỗi thực tế) bất kể chuỗi thực được in. (Và tôi cho rằng cụm từ "Chúc mừng, Hành tinh!" Được chọn đặc biệt để làm cho những thứ vô dụng trở nên vô dụng.)
Martin Ender

1
@ MartinBüttner Tôi nghĩ rằng Hello, world!Hello World!là đầu ra duy nhất được phép cho một chương trình hello-world .
Erik the Outgolfer 18/05/2016

Câu trả lời:


33

/// , 37 byte

Greetings, Planet!/!tenalP ,sgniteerG

10
Điều này sẽ rất khó để đánh bại.
PhiNotPi

16

TI-BASIC, 67 byte

"!tenalP ,sgniteerG"
"Greetings, Planet!"

Điều này hoạt động vì dòng cuối cùng của chương trình được hiển thị trên màn hình, trong khi chuỗi đầu tiên về cơ bản được coi là một nhận xét.

Mỗi chữ cái viết thường được lưu trữ dưới dạng 2 byte và các ký tự còn lại là 1 byte. Nếu tôi uốn cong các quy tắc và in trong tất cả các mũ, nó sẽ là 41 byte :

"!TENALP ,SGNITEERG"
"GREETINGS, PLANET!"

Bạn có thể sử dụng ei(các số) để giảm số byte hơn nữa không?
Addison Crump

1
@VTCAKAVSMoACE Tôi đã xem xét điều đó, nhưng họ in nghiêng, vì vậy họ trông, hơi khác nhau.
NinjaBearMonkey

Để rõ ràng dòng đầu tiên không phải là một nhận xét, nó được lưu trữ vào biến trả lời.
Julian Lachniet

12

Tôi biết điều này hơi muộn (và hơi khó hiểu), nhưng ...

> <> (Cá), 47 45 47 Byte (thực sự là 43 45, nếu tôi không sử dụng hướng ngẫu nhiên)

x"!tenalP ,sgniteerG"!|o|!"Greetings, Planet!"x

Những câu trả lời này hơi khác nhau; có một cơ hội cho một trong hai hướng mã được thực thi.

Vì vậy, bằng cách "in ra bàn điều khiển", tôi giả sử bạn có nghĩa là in ra thiết bị xuất chuẩn. Điều này ném một lỗi; lỗi được ném vào thiết bị lỗi chuẩn SAU chuỗi được in thành thiết bị xuất chuẩn.

Để chứng minh rằng điều này hoạt động theo cả hai cách, tôi đã sử dụng đạo diễn "hướng ngẫu nhiên", "x". Cá là một ngôn ngữ hai chiều, vì vậy, cho dù giám đốc chỉ ra bằng cách nào, mã cuối cùng vẫn sẽ được thực thi.

Giả sử rằng giám đốc đầu tiên chỉ sang phải, các ký tự được tải vào "ngăn xếp" theo thứ tự ngược lại, sau đó đảo ngược của đảo ngược (hoặc văn bản bình thường) được in.

Giả sử rằng cả hai đạo diễn đều chỉ về bên trái, các ký tự, một lần nữa, được tải vào "ngăn xếp" theo thứ tự ngược lại (vì mã tải nó ngược về đây, hướng về bên trái), sau đó ngược lại (hoặc ngược lại văn bản bình thường) được in.

Nếu giám đốc ngẫu nhiên chỉ lên hoặc xuống, điều này sẽ không thành vấn đề - cá biết vòng lặp ở mặt dưới hoặc mặt trên của mã, quay lại bộ ngẫu nhiên. Theo cách này, nó sẽ tiếp tục lặp với các bộ ngẫu nhiên cho đến khi nó hướng vào trong, hướng tới mã để thực thi.

Các !|o|!bit làm như sau, từ cả hai phía:

  • !bỏ qua hướng dẫn tiếp theo (sẽ luôn bỏ qua |)

  • |là một phản xạ; nó hướng vào trong o.

  • o xuất mục hiện tại của ngăn xếp thành bàn điều khiển dưới dạng ký tự và xóa nó khỏi ngăn xếp.

Vì vậy, về cơ bản, đây là thủ thuật "hai tấm gương trong phòng tắm được ép lên nhau", nơi tôi xuất ra cho đến khi tôi không thể nữa.

Bây giờ sử dụng biểu tượng cảm xúc mèo. >o<chuyển hướng đầu ra vào bên trong vô tận, vẫn ném lỗi, nhưng tôi có thể thoát khỏi việc không sử dụng bỏ qua phản xạ.

Lần lượt ra tôi đã đúng lần đầu tiên - những nỗ lực thứ hai là không xuôi ngược , nhưng nó đã được phản chiếu .

Cá (không in ra stderr), 64 Byte (ew)

x"!tenalP ,sgniteerG"!;oooooooooooooooooo;!"Greetings, Planet!"x

Anh chàng này lâu hơn một chút.

Nó có cùng chức năng mũi tên ngẫu nhiên (để chứng minh rằng nó hoạt động theo cả hai cách) và không in ra stderr.

Sự khác biệt ở đây là rõ ràng; Tôi thực sự in ra tất cả các mục trong ngăn xếp, sau đó kết thúc thực hiện với ;.

Việc !;không kết thúc thực thi ngay lập tức, vì !bỏ qua mục tiếp theo (end exec, trong trường hợp này) và tiếp tục cho đến khi nó chạm vào phía bên kia, hoạt động như ;!trong đó nó kết thúc thực thi trước khi nó bỏ qua bất cứ điều gì.

Nó theo mô hình hướng ngẫu nhiên giống như câu trả lời ngắn hơn.


Tôi nghĩ bạn nên gọi ngôn ngữ> <> để phân biệt với vỏ Cá
Aaron

@Aaron Người ta thường cho rằng Cá ở đây có nghĩa là> <>, nhưng tôi đã gặp phải vấn đề đó trước đây - Tôi sẽ thêm nó. Cảm ơn!
Addison Crump

như tôi đoán, đó là điều không thể đoán được khi toàn bộ mã sẽ bị loại bỏ hay không. Điều gì xảy ra nếu bộ đếm chương trình bị kẹt giữa hai hướng dẫn ngẫu nhiên hoặc chỉ bị kẹt ở một trong các hướng dẫn ngẫu nhiên, ví dụ, nó quay xuống, chạm đến đáy, quay lại hướng dẫn đó và bắt đầu lại?

@GLASSIC Chương trình sẽ chỉ xuất một lần và toàn bộ mã sẽ không bao giờ được thực thi.
Addison Crump

11

Bong bóng , 38 byte

0000000: 73 2f 4a 4d 2d c9 cc 4b 2f d6 51 08 c8 49 cc 4b 2d 51 04  s/JM-..K/.Q..I.K-Q.
0000013: 04 51 2d 4b cc 49 c8 08 51 d6 2f 4b cc c9 2d 4d 4a 2f 73  .Q-K.I..Q./K..-MJ/s

10

Macaroni 0.0.2 , 52 byte

print "Greetings, Planet!""!tenalP ,sgniteerG" tnirp

Một giải pháp không sử dụng ý kiến. (Chủ yếu là vì Macaroni không có ý kiến ​​...)


15
Macaroni không có ý kiến? _ಠ
Alex A.



6

JavaScript, 56 byte

Điều này có thể chạy trong bất kỳ trình duyệt.

alert("Greetings, Planet!")//)"!tenalP ,sgniteerG"(trela

Thay thế print/tnirpbằng alert/trela, nó cũng hoạt động trong các động cơ khác.
ETHproductions 4/12/2015

@ETHproductions không thể tin rằng tôi đã không nghĩ về điều đó, cảm ơn!
Hạ cấp


@jrich your right, alert`Greetings, Planet!`//`!tenalP ,sgniteerG`trelalà 52 byte
Aᴄʜᴇʀᴏɴғᴀɪʟ

5

GolfScript, 41 byte

"Greetings, Planet!":"!tenalP ,sgniteerG"

Nhìn ma, không no-ops! Dùng thử trực tuyến trong Web GolfScript .

Nửa sau của mã nguồn lưu trữ chuỗi trong chuỗi thứ hai.

"Greetings, Planet!":"!tenalP ,sgniteerG"
"!tenalP ,sgniteerG"

sẽ in

Greetings, Planet!Greetings, Planet!

5

C ++, 129 byte

Cố gắng làm điều này mà không có ý kiến ​​đã dẫn tôi vào một cơn ác mộng tiền xử lý đen tối sâu thẳm mà không có cách nào tôi có thể nhìn thấy. Thay vào đó tôi chỉ nhằm mục đích có được nó càng ngắn càng tốt.

/**/
#include<cstdio>
int main(){puts("Greetings Planet!");}//*/
/*//};)"!tenalP sgniteerG"(stup{)(niam tni
>oidtsc<edulcni#
/**/

5

Python 3, 57 byte

print('Greetings, Planet!')#)'!tenalP ,sgniteerG'(tnirp

Tôi đã sửa vấn đề với dấu ngoặc đơn.

Python 2, 53 byte

print'Greetings, Planet!'#'!tenalP ,sgniteerG'tnirp

Tôi đã sử dụng lợi thế của việc thiếu dấu ngoặc đơn và khoảng trắng cần thiết trong Python 2, nhưng không có gì khác biệt lớn.


5

Thạch, không cạnh tranh

25 byte Câu trả lời này không cạnh tranh, vì thử thách trước khi tạo ra Jelly.

»1ị“RsẈḄ,#ʠU“Uʠ#,ḄẈsR“ị1»

Nhìn 'ma, không có ý kiến! Hãy thử trực tuyến!

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

»1ị“RsẈḄ,#ʠU“Uʠ#,ḄẈsR“ị1»  Main link. No arguments.

   “        “        “  »  Decompress all three strings; yield a list of strings.
    RsẈḄ,#ʠU               (decompresses to 'Greetings, Planet!')
             Uʠ#,ḄẈsR      (decompresses to ' WafdkmC Posited,')
                      ị1   (decompresses to 'Taarhus')

»1                         Take the maximum of the default argument (0) and 1.
  ị                        Select the string at the index to the left.

4

Bị mắc kẹt , 41 byte

"Greetings, Planet!"p"!tenalP ,sgniteerG"

Khá giống với câu trả lời của CJam, ngoại trừ trong Stuck nếu lệnh in được ban hành, in ngăn xếp tự động bị loại bỏ.


3

Toán học, 52 byte

Print@"Greetings, Planet!""!tenalP ,sgniteerG"@tnirP

Cũng tạo ra một Null "!tenalP ,sgniteerG"[tnirP]cái không được in.


1
FYI, rất nhiều câu trả lời của bạn (bao gồm câu trả lời này) đã được đưa vào hàng đợi Chất lượng thấp vì chúng chỉ là một tiêu đề / điểm và mã. Mặc dù không có gì sai với điều đó, bạn có thể xem xét thêm văn bản (như giải thích) để chúng không bị gắn cờ tự động.
Mego

@Mego Được rồi, nghĩ rằng họ khá tự giải thích.
LegionMammal978

1
Tôi không nói rằng việc thiếu một lời giải thích là một điều xấu (mặc dù câu trả lời với lời giải thích có xu hướng nhận được nhiều hơn), tôi chỉ cho bạn biết rằng câu trả lời (hợp lệ) của bạn đã được gắn cờ tự động vì độ dài của chúng. :)
Mego

2
bạn có thể tiết kiệm 2 byte với Echotrong v10.3.
shrx

3

Phân hạch , 45 43 byte

Cảm ơn jimmy23013 vì đã lưu 2 byte.

;"!tenalP ,sgniteerG"R"Greetings, Planet!";

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

Rkhởi tạo một nguyên tử di chuyển sang phải. "bật chế độ chuỗi chỉ đơn giản là in chuỗi mong muốn sang STDOUT trước khi nhấn ;, nó sẽ phá hủy nguyên tử và chấm dứt chương trình. Nửa đầu đơn giản là không bao giờ được thực hiện.


@ jimmy23013 Tôi không có manh mối, phải trung thực. Cảm ơn.
Martin Ender

3

05AB1E , 16 byte

Mã số:

”!º¥,ÁÙ””ÙÁ,¥º!”

Giải trình:

”!º¥,ÁÙ”          # Compressed string which results in "! Crm, Everywhere".
        ”ÙÁ,¥º!”  # Compressed string which results in "Greetings, Planet!".
                  # Top of stack is implicitly outputted.

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


2

STATA, 52 byte

di "Greetings, Planet!"//"!tenalP ,sgniteerG" id

Phiên bản dài hơn (53 byte) không sử dụng nhận xét là:

#d
di "Greetings, Planet!";"!tenalP ,sgniteerG" id
d#

#d [something]thay đổi dấu phân cách (ban đầu là trở về vận chuyển) thành ;trừ khi [một cái gì đó] cr, vì vậy lệnh đầu tiên thay đổi dấu phân cách thành ;, chuỗi thứ hai in chuỗi và thứ ba (tiếp tục cho đến hết) rõ ràng là một nop, mặc dù tôi không có ý tưởng tại sao. Tôi đã đoán rằng điều này sẽ gây ra lỗi (lệnh không được nhận dạng "! TenalP, sgniteerG" hoặc một cái gì đó), nhưng dường như không.


2

Japt , 29 byte

Ngôn ngữ lập trình này được tạo ra sau khi câu hỏi được đăng, nhưng không được thực hiện cho câu hỏi này.

`!t?ÓP ,?Ä>ÎG`;`GÎ>Ä?, PÓ?t!`

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

Mỗi cái ?là một ký tự Unicode không thể in được: U + 0082, U + 000F, U + 000F và U + 0082, tương ứng.

Sự thật thú vị: Nếu Japt được xuất bản sớm hơn một tháng, nó sẽ chiến thắng một cách hợp pháp thử thách này.


2

APL, 41 byte

'Greetings, Planet!'⍝'!tenalP ,sgniteerG'

Trong APL, giá trị cuối cùng được in và ký tự đèn (⍝) bắt đầu nhận xét.


Xin chào, và chào mừng đến với PPCG! Câu trả lời chính xác!
NoOneIsHere


2

TCL, 80 byte

proc unknown args {puts "Hello World!"}
}"!dlroW olleH" stup{ sgra nwonknu corp

giải thích: TCL thực thi một Proc toàn cầu unknownkhi nó gặp một lệnh gọi đến một lệnh không xác định, dòng đầu tiên xác định lại rằng Proc thành một chương trình "hello world" đơn giản.

Các quy tắc trích dẫn của TCL khá tinh tế, một dấu ngoặc mở bắt đầu một từ được trích dẫn kéo dài đến dấu ngoặc gần phù hợp tiếp theo , cho phép các từ được lồng, trích dẫn. Niềng răng được coi là nhân vật bình thường. năm chữ: }"!dlroW olleH", stup{, sgra, nwonknucorp. Không có lệnh nào được đặt tên }"!dlroW olleH"đã được xác định, do đó, undefinedProc từ dòng đầu tiên được gọi thay thế.

Một câu hỏi tương tự đã được đăng trên StackOverflow của thời cổ đại; mà đã bị đóng cửa và bị xóa. Tôi đã sử dụng giải pháp của mình như một cái lưỡi trong mẫu TCL má trong câu trả lời này và hiện đang nhận được ý kiến ​​yêu cầu giải thích, vì vậy tôi tạo lại câu trả lời của mình ở đây.



1

Vitsy , 41 byte

Ngôn ngữ lập trình này được tạo ra sau khi câu hỏi được đăng, nhưng không được thực hiện cho câu hỏi này.

"! tenalP, sgniteerG" Z "Chúc mừng, Hành tinh!"

Nhân Zvật xuất ra mọi thứ trong ngăn xếp thành STDOUT.

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


1

Hủy kết nối 98 - 49 byte

"!tenalP ,sgniteerG<DC1>"k,@,k"<DC1>Greetings, Planet!"

Đoạn mã trên chứa hai ký tự không thể in được với mã 17 (điều khiển thiết bị 1) được đại diện bởi <DC1>.


1

MSM , 73 byte

GGreetings, Planet!.................,.................!tenalP ,sgniteerGG

Nửa đầu ngay trước khi giữa ,xây dựng một chuỗi chào ngược lại bao gồm cả bổ sung Gở bên phải. Phần giữa ,thả nó và phần còn lại là một chương trình "Xin chào / Chào hỏi / bất cứ điều gì" chuẩn. Các ký tự bổ sung ở cả hai đầu là cần thiết, bởi vì thông báo chứa a ,. Một bên trái được thực hiện và thả s. Cả hai ,scần một sự thay thế cho các chấm nối trái, do đó Gs. Bên ,phải không được thực thi, nhưng xây dựng thành chuỗi cuối cùng.


1

CoffeeScript, 53 byte

Tương tự như Ruby và Lua và khá nhiều biến thể ở đây.

alert 'Greetings, Planet!'#'!tenalP ,sgniteerG' trela


1

Bash, 52 48 byte

echo Greetings, Planet!||!tenalP ,sgniteerG ohce

Cũng hoạt động trong ksh, zsh, yash, dash. Nhưng không phải tcsh.

$ cat x.sh
echo Greetings, Planet!||!tenalP ,sgniteerG ohce
$ bash x.sh
Greetings, Planet!
$ ksh x.sh
Greetings, Planet!
$ zsh x.sh
Greetings, Planet!
$ yash x.sh
Greetings, Planet!
$ dash x.sh
Greetings, Planet!
$ tcsh x.sh
tenalP: Event not found.
$

1
Xóa tất cả các trích dẫn.
manatwork

1
Trời ơi, một câu trả lời bash ngắn hơn python = /. Trở lại với bản vẽ!
Ashwin Gupta

1

Lua, 52 byte

print"Greetings, Planet!"--"!tenalP ,sgniteerG"tnirp

Trong thiết bị đầu cuối Lua, nó chỉ có 44 byte với

="Greetings, Planet!"--"!tenalP ,sgniteerG"=

Lỗi của tôi. Cảm ơn đã cảnh báo!
Digital Veer

Xóa tất cả dấu ngoặc đơn. Đối với các hàm có tham số chuỗi đơn, chúng là tùy chọn.
manatwork

Lua 5.3 không yêu cầu =trong thiết bị đầu cuối, vì vậy nó là 2 byte ở đó. Tôi nghĩ nó tồn tại vào năm 2015, không chắc tho.
val nói Phục hồi lại

1

Dải ngân hà 1.5.10 , 43 41 39 byte

"Greetings, Planet!"!tenalP ,sgniteerG"

Giải trình

"Greetings, Planet!"                       # push the string to the stack
                    !                      # output the TOS
                     tenalP ,sgniteerG"    # throws an error and exits

Sử dụng

python3 milkyway.py <path-to-code>

Bạn có thực sự cần một bình luận? Nếu đây là dựa trên ngăn xếp (không có đầu ra ngầm định), thì chỉ cần xuất ra ngăn xếp sẽ hoạt động.
Addison Crump

Bạn đúng! Cảm ơn. @FlagAsSpam
Zach Gates
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.