Chữ và số Hello World [đã đóng]


43

Mục tiêu của bạn là viết "Xin chào, Thế giới!" (trừ dấu ngoặc kép). Đây là một , vì vậy hầu hết các phiếu bầu đều thắng. Chiều dài mã sẽ được sử dụng để phá vỡ mối quan hệ.
Bất cứ điều gì đi, miễn là nó nằm trong các quy tắc sau:

  • Tất cả các ký tự phải là chữ cái hoặc số, vì vậy bạn chỉ có thể sử dụng các ký tự trong chuỗi "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789".
  • Tất cả mã bạn sử dụng phải nằm trong một tệp, ngoại trừ các mô-đun / lớp đã nhập / bất cứ thứ gì chúng được gọi bằng ngôn ngữ yêu thích của bạn.
  • Chỉ cho phép các thư viện / khung tiêu chuẩn cho ngôn ngữ bạn chọn (ví dụ: mô-đun Toán học của Python được cho phép, nhưng Numpy, Scipy và Pygame thì không). Tôi sẽ cho phép TkInter vì đây là tiêu chuẩn thực tế cho GUI trong Python.
  • Không được phép nhập liệu, có thể là đọc từ stdin, đọc tệp, từ chối hình ảnh hoặc đọc từ web.

+10 điểm brownie nếu bạn tìm ra cách thực hiện trong Java mà không bẻ cong quy tắc.


Trên nhãn hiệu của bạn, nhận được thiết lập, mã!

EDIT: dấu ngoặc ({}), ngoặc ([]) và dấu ngoặc đơn (()) được cho phép vì điều này sẽ không thể thực hiện được đối với hầu hết các ngôn ngữ nếu không có chúng. Tôi cũng đang loại bỏ quy tắc giới hạn ký tự. Hy vọng điều này sẽ làm cho nó thú vị hơn.

EDIT ^ 2: khoảng trắng cũng được cho phép. Bộ não của tôi không hoạt động đúng, xin lỗi. >. <


1
Tùy thuộc vào bạn, tôi chỉ chắc chắn. Còn khoảng trắng thì sao?
Geobits

1
Ồ, đúng không gian màu trắng. Bộ não của tôi rõ ràng là không hoạt động đúng ngày hôm nay. Điều đó nên được cho phép. Một giây, để tôi sửa các quy tắc.
WEC

8
Vì vậy, không có nhà khai thác? Và, quan trọng nhất, không ;? Làm thế nào tôi có thể viết bất cứ điều gì trong C?
Oberon


3
+1 để tìm ra cách loại trừ J theo cách tự nhiên: 72 101 108 108 111 44 32 87 111 114 108 100 33{a.yêu cầu khoảng thời gian ở cuối để hoạt động và một con đường thông qua u:tương tự đòi hỏi phải có dấu hai chấm. Không có .:chúng ta chẳng là gì cả.
thuật toán

Câu trả lời:


103

Perl

Một số người nói perl là một ngôn ngữ đầy tiếng ồn ascii và các ký hiệu ngẫu nhiên như $... Điều đó không đúng: P

s zzHelloq worldmz and s zqzchr 44ze and s zmzchr 33ze and print

Chúng ta hãy chia nó thành các phần phụ:

(s zzHelloq worldmz) and (s zqzchr 44ze) and (s zmzchr 33ze) and (print)
Rõ ràng là nó thực thi từ trái sang phải miễn là mọi biểu thức trả về đúng. Nhưng những gì trên trái đất là s zqzchr 44ze?

Trong perl, có một nhóm các "quote giống như các nhà khai thác" trong đó bao gồm q(str), qw(li st), /regex/, s/from/to/trong số những thứ khác. Hóa ra tất cả các toán tử này có thể sử dụng hầu hết mọi ký tự như một dấu phân cách, với một vài phân tử: mệnh đề mở phải được đóng bằng dấu ngoặc đơn đóng phù hợp và nếu bạn muốn sử dụng một chữ cái làm dấu phân cách, bạn phải đặt dấu cách sau thư điều hành (để định hướng nó từ một bareword).

Trong trường hợp này, chúng ta thấy ba cách sử dụng s///toán tử (thay thế regex):

s//Helloq worldm/
s/q/chr 44/e
s/m/chr 33/e
Tất cả được phân định bởi các nhân vật z. Các /ecờ trên hai cuối cùng gây ra sự thay thế được hiểu là mã để được đánh giá, văn bản chứ không phải theo nghĩa đen.

Một thực tế khá nổi tiếng về perl là hầu hết các hoạt động mặc định hoạt động trên $_biến dựng sẵn trừ khi có quy định khác. Tất cả ba thay thế này và printhoạt động $_trong trường hợp này, vì vậy trước tiên chúng tôi đặt các từ Hello world vào biến, sau đó chúng tôi sửa dấu câu bằng cách sử dụng các giá trị ascii số của các ký tự, sau đó chúng tôi in nội dung của biến.


46
+1 Tôi không biết cái quái gì đang diễn ra ở đây, nhưng nó hoạt động!
squossish ossifrage

95
@squeamishossifrage Đó có thể là phương châm perl
mniip

6
Nếu bạn có thể, bạn sẽ thêm một lời giải thích nhỏ?
ace_HongKongInependence

10
Tôi không có nghĩa là một chuyên gia, nhưng trong một thay thế thường được chỉ định bởi s/PATTERN/REPLACEMENT/FLAGS, nhưng bạn thực sự có thể sử dụng hầu hết mọi thứ bạn muốn thay vì dấu gạch chéo. Mã ở đây sử dụng "z" thay vì gạch chéo và biến (không có gì) thành "Helloq Worldm" sau đó thay thế "q" cho chr 44 (sử dụng cờ \ e để đánh giá REPLACEMENT hay còn gọi là "chr 44" làm biểu thức), ", ". Sau đó, nó thay thế "m" bằng chr 33, "!" Và in nó.
Amory

3
@ace trong một toán tử giống như trích dẫn, ví dụ q//, bất kỳ dấu phân cách nào cũng có thể được sử dụng , q!! q** q\\ q;;. Một vài trường hợp ngoại lệ là để đóng (bạn sử dụng ), q() q[] q{} q<>và để sử dụng một chữ số như là một dấu phân cách, nó nên được đặt cách xa toán tử để không cho phép sự mơ hồ, ví dụ q qq, q 66. Các thủ thuật tương tự áp dụng cho các nhà khai thác giống như trích dẫn khác.
mniip

73

C

int main(void) {
  if (putchar(72))
    if (putchar(101))
      if (putchar(putchar(108)))
        if (putchar(111))
          if (putchar(44))
            if (putchar(32))
              if (putchar(87))
                if (putchar(111))
                  if (putchar(114))
                    if (putchar(108))
                      if (putchar(100))
                        if (putchar(33)) 
                        {
                        }
}

4
Tuyệt vời! Nó có thể được thực hiện ở C. Và tôi nghĩ rằng tôi đã giành được điều này ...
Level River St

2
@ace Chỉ khi bạn có trường hợp được xác định. Bạn có thể dễ dàng viết lại cái này như switch(putchar(72)){}switch(putchar(101)){}, v.v.
Comi INTERN

27
+1 choputchar(putchar(108))
Ilmari Karonen

2
Chỉ thiếu một "if (putchar (44))" cho dấu phẩy.
Desty

1
Cũng phát hiện ra, không chắc làm thế nào tôi bỏ lỡ dấu phẩy trong câu hỏi. Đã sửa.
mattnewport

49

(chỉnh sửa - BBC cơ bản chuyển sang câu trả lời riêng biệt như được đề xuất. Hầu hết các phiếu về điều này chắc chắn là cho câu trả lời LOGO.)

LOGO

Thông dịch viên tại http://www.calormen.com/jslogo/#

TO h        pd  fd 100 rt  90  pu  fd 50  rt 90  pd  fd 100  rt 180 fd 50  lt 90  fd 50  rt 90  pu END 
TO e        pu  fd 25  rt  90  pd  fd 25  rt 90  arc 270 25  lt 90  fd 25  lt 90  pu END  
TO l        pd  fd 100 pu  END  
TO o        rt  45 fd  35  pd  arc 360 25  lt  45  pu END 
TO comma    pd  rt 90  arc 90  15  lt  90  pu END 
TO w         l  rt 180 l   pd  lt  135 fd  35  rt  90  fd 35  lt 135  l  END  
TO r        pd  fd 25  rt  90  pu  fd  25  rt 180  arc 180 25 rt 90 END 
TO d         o  rt 135 fd  35  lt  135  l  END      
TO exclaim arc 360 5   fd  10  l  END 

clearscreen  
setpencolor 4 pu 
setxy 0 150      h 
setxy 100 150    e  
setxy 200 150    l 
setxy 250 150    l 
setxy 300 150    o 
setxy 350 150    comma  
setpencolor 1 
setxy 0 0        w 
setxy 100 0      o 
setxy 200 0      r  
setxy 300 0      l 
setxy 350 0      d 
setxy 450 0      exclaim 
fd 100

Đầu ra (hình tam giác màu xanh là con trỏ rùa)

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


2
Bạn nên chia câu trả lời này thành hai.
Justin

@WallyWest Tôi hầu như không biết ngôn ngữ, nhưng nó là công cụ cho công việc. Bạn cũng có thể in văn bản (nó được gọi là nhãn trên bản vẽ của bạn) nhưng bạn cần một dấu ngoặc kép cho điều đó (tôi nghĩ chỉ cần trích dẫn mở đầu và trích dẫn đóng là tùy chọn.)
Level River St

1
+1 để vẽ nó thay vì in từ.
WEC

@steveverril Trích dẫn thứ hai thực sự là một lỗi cú pháp.
tomsmeding

29

Táo

Không có dấu ngoặc [], dấu ngoặc {}hoặc dấu ngoặc đơn ()nào trong cái này:

set s to ASCII character 72
set s to s as list
set end of s to ASCII character 101
set end of s to ASCII character 108
set end of s to end of s
set end of s to ASCII character 111
set end of s to ASCII character 44
set end of s to space
set end of s to ASCII character 87
set end of s to item 5 of s
set end of s to ASCII character 114
set end of s to third item of s
set end of s to ASCII character 100
set end of s to ASCII character 33
display dialog s as text

Đầu ra là: nhập mô tả hình ảnh ở đây


10
Không thể tin được! (Phải viết đầy đủ từ "ký tự", ý tôi là vậy!) Bây giờ tôi đã hiểu ý nghĩa của chúng về Táo là đắt đỏ. Chỉ nói đùa, +1 cho một cái gì đó khác biệt :-)
Level River St

10
AppleScript rất dài dòng một cách lố bịch, nhưng kết quả là nó thực sự là một trong những ngôn ngữ lập trình dễ hiểu nhất cho một giáo dân.
Jonathan Van Matre

3
@JonathanVanMatre Khó viết, dễ đọc
Chấn thương kỹ thuật số

2
thậm chí C dễ đọc hơn ...
SUND Borsch

1
@Cruncher - Điều này thật dễ dàng. Lệnh set s to s as listbiến "H"thành {"H"}(một danh sách). Trong các ngôn ngữ khác, như Java, thường thì phức tạp hơn để làm điều đó.
Nicolas Barbulesco

24

Bash

Đây là loại công việc, nếu bạn nheo mắt:

echo NN i NN i i i iNN NNi i i i i i i NN i NN i i i i i i i NNi i i NN NN
echo NN i NNi i i i NN NN i i i i i i iNN i NN i i i i i i i NN i i iNN NN
echo NN i NN iNNNNi NN NN iNNNNi i i i NN i NN iNNNNi NN NN iNN iNNN NN NN
echo NNNNNNN NN iNN NN NN NN iNN i i i NN i NN NN iNN NNN iN NN NN iNNN N
echo NN i NN NNNNNN NN NN NNi NN i i i NN N NN NNi NN NN i i NN NNi iNN N
echo NN i NN NN i i NN NN NN iNN i i i NNN NNN NN iNN NN i i NN NN i NN
echo NN i NN iNNNi iNN NN iNNNNi N i i NN i NN iNNNNi NN i i NN iNNNN N NN
echo i i i i i i i i i i i i i i N

1
cái này cũng hoạt động trong tập tin bat / cmd của windows
phuclv

banner Hello Worldhoặcfiglet Hello World

2
@professorfish Phần khó khăn của thử thách này là nhận được ,!. Nếu không, tôi chỉ sử dụng cũ đơn giản echo.
Chấn thương kỹ thuật số

@DigitalTrauma oh, xin lỗi, đã không thấy rằng ... hơi chậm

19

cơ sở64

SGVsbG8sIFdvcmxkIQ

Đáp ứng các quy tắc ban đầu.


2
Base64 có phải là ngôn ngữ không? Và đầu ra của bạn là gì? Liệu nó có viết hoa đúng không?
Cấp sông St

23
Chắc chắn đó là một ngôn ngữ, nó chỉ không hoàn chỉnh. Ngoài ra, base64decode.org
Kendall Frey

1
Haha. Đối với phản hồi đó, +1 bình luận của bạn, nhưng không phải câu trả lời của bạn. Có lẽ câu trả lời của bạn sau nếu tôi cảm thấy thích nó.
Cấp sông St

2
@ Bạn đã sử dụng"
mniip

2
@KendallFrey Theo logic đó, cơ sở 10 là một ngôn ngữ: 1234567890.
Cole Johnson

19

Con trăn

Vì vậy, những gì, chúng ta chỉ giả sử mọi người đọc theo chiều ngang? Đối với những người dùng thích đọc theo chiều dọc:

print chr(72) 
print chr(101)
print chr(108)
print chr(108)
print chr(111)
print chr(44)
print chr(32)
print chr(87)
print chr(111)
print chr(114)
print chr(108)
print chr(100)
print chr(33)

+1 và hahaha! Câu hỏi này đã có rất nhiều ý kiến ​​ban đầu, bởi vì mọi người tin rằng nó là không thể. Tôi không biết Python, nhưng với tất cả những tiếng rên rỉ, tôi không thể tin rằng nó thật dễ dàng trong một ngôn ngữ phổ biến như vậy.
Cấp sông St

1
Tôi chỉ viết chính xác cùng mã trước khi câu trả lời này được đăng. Tôi đã làm mới để đăng câu trả lời của mình và tìm thấy điều này ...
grovesNL

1
@steveverrill Tiếng rên rỉ không vì lý do gì. Ở đây không có một câu trả lời nào có thể vượt qua các quy tắc ban đầu (không có dấu ngoặc / dấu ngoặc / dấu ngoặc, không có ký tự nào được lặp lại nhiều lần)
Geobits

1
@grovesNL Nếu nó làm bạn cảm thấy tốt hơn, đây là điều đầu tiên tôi từng sử dụng python cho. Tôi đã dành một khoảng thời gian để tìm hiểu các tài liệu, cố gắng tìm hiểu xem có cách nào khả thi để ghép chúng thành một dòng trước khi đăng không.
Geobits

@Geobits sys.stdout.writelà cách tiêu chuẩn để xuất văn bản mà không có dòng mới trong hầu hết các phiên bản trên Python (hành vi được thay đổi một chút trong 3.0). Chúng tôi không thể làm điều đó ở đây vì thời gian.
GrovesNL

19

Polyglot: HQ9 +, H9 +, HQ9 ++, CHIQRSX9 +, HQ9 + B và HQ9 + 2D (1 byte)

H

Cảm ơn bạn @victor cho danh sách các ngôn ngữ.


5
Đây là một polyglot. Nó cũng hoạt động trong H9 +, HQ9 ++, CHIQRSX9 +, HQ9 + B và HQ9 + 2D.
Victor Stafusa

Tôi khá chắc chắn rằng nó cũng hoạt động trong Hello.
WEC

5
Nó hoạt động trong bất kỳ ngôn ngữ mà bạn phát minh.
Zero Fiber

2
Tôi đã không phát minh ra bất cứ điều gì ...
Ismael Miguel

6
Thật không may, đầu ra là "xin chào, thế giới" ( esolangs.org/wiki/HQ9%2B ) hoặc theo thông dịch viên này "Xin chào thế giới". ( almnet.de/esolang/hq9plus.php ) Để nhận "Xin chào, thế giới!" bạn có thể cần phải tăng bộ tích lũy một vài lần.
tttppp

17

OMGROFL

Tôi là một fan hâm mộ lớn của các ngôn ngữ bí truyền. May mắn thay OMGROFL là chữ và số:

lol iz 72
rofl lol
lol iz 101
rofl lol
lol iz 108
rofl lol
rofl lol
lool iz 111
rofl lool
loool iz 44
rofl loool
loool iz 32
rofl loool
loool iz 87
rofl loool
rofl lool
lool iz 114
rofl lool
rofl lol
lol iz 100
rofl lol
lol iz 33
rofl lol
stfu

Các izlệnh thiết lập một giá trị cho một biến, trong trường hợp này lol, loollooolđóng vai trò là biến ...

Các rofllệnh vang ra ASCII tương đương với số lượng được lưu trữ trong biến.

Các stfulệnh chấm dứt chương trình;)


haha, tốt lắm! Tôi muốn thử phiên bản LOLCODE nhưng ngôn ngữ yêu cầu sử dụng dấu hai chấm và dấu ngoặc kép để ép ints thành ký tự.
Jonathan Van Matre

17

Bạc hà

   ID DIVISION 
   DATA DIVISION 
   01  HELLOWORLDBINARY 
       05  HE                       COMP    PIC 9999 
       05  LL                       COMP    PIC 9999 
       05  OCOMMA                   COMP    PIC 9999 
       05  SPACEW                   COMP    PIC 9999 
       05  ORTEXT                   COMP    PIC 9999 
       05  LD                       COMP    PIC 9999 
       05  EXCLAMATION              COMP    PIC 9999 
   01  FILLER REDEFINES HELLOWORLDBINARY 
       05  HELLOWORLDTEXT                   PIC XXXXXXXXXXXXX
       05  FILLER                           PIC X 
   PROCEDURE DIVISION 
       MOVE 51333                   TO HE 
       MOVE 37779                   TO LL 
       MOVE 38507                   TO OCOMMA 
       MOVE 16614                   TO SPACEW 
       MOVE 38553                   TO ORTEXT 
       MOVE 37764                   TO LD 
       MOVE 23104                   TO EXCLAMATION 
       DISPLAY HELLOWORLDTEXT 
       GOBACK 

Yêu cầu một số thay đổi để chỉ trở thành nguồn chữ và số thực sự.

CHƯƠNG TRÌNH-ID có thể được loại bỏ. Bạn nhận được một tên chương trình được tạo (xem tin nhắn).

LÀM VIỆC-BẢO QUẢN có thể được bỏ. Một lần nữa trình biên dịch rên rỉ.

Do cả hai dòng này trước đây đã thiếu các điểm dừng / thời gian đầy đủ, hiện không còn phù hợp nữa khi các mô tả bị thiếu hoàn toàn, số lượng thông báo lỗi vẫn giống như trước đây và vẫn không ảnh hưởng đến mã được tạo cho chương trình.

Khi thay đổi COMP-5 thành COMP, các mệnh đề VALUE không còn được phép, vì COMP 9999 chỉ có bốn chữ số thập phân trong khi COMP-5 là nhị phân hai byte với tất cả các giá trị bit có sẵn.

Các giá trị trong MOVE là các giá trị thập phân cung cấp các giá trị nhị phân cho các cặp ký tự.

Mặc dù các trường COMP có bốn chữ số và không cho phép các mệnh đề GIÁ TRỊ có nhiều hơn bốn chữ số, bạn có thể sử dụng nhiều chữ số hơn trong M CHUYỂN của một giá trị bằng chữ mà không cắt ngắn tại thời điểm đó ... đừng hỏi tôi tại sao. Tùy chọn trình biên dịch DIAGTRUNC (mà tôi đã tắt) sẽ tạo ra chẩn đoán cảnh báo cho những điều này.

Tùy chọn trình biên dịch TRUNC (BIN) có thể được sử dụng để coi COMP là COMP-5, nhưng MOVE là một cách khác để làm điều đó.

Vì nó là COBOL, đầu ra phải ở dạng UPPER CASE (một lời nói dối, nhưng chỉ để cho vui).

HELLO WORLD!

OK, đã đồng ý, bây giờ sản xuất:

Hello, World!

Mà, là một số ký tự lẻ, yêu cầu một số thay đổi hơn nữa, vì chúng ta không thể có các trường nhị phân byte số lẻ với trình biên dịch này. Nhìn vào dòng 13 Xs! Nó thường được viết là X (13), nhưng có thể như tôi đã chỉ ra ...

Và ORTEXT là cần thiết (hoặc không phải OR, dù sao) như một tên vì OR là một từ dành riêng cho trình biên dịch (tất nhiên nó có nghĩa là OR).

Đây là các giá trị EBCDIC, không phải ASCII, vì nó đang chạy trên hộp nhận biết EBCDIC và Big Endian ,.

Ồ, COBOL yêu cầu rất nhiều điểm dừng / thời gian. Tôi đã để chúng ra ngoài (chúng bị cấm) vì vậy có rất nhiều tin nhắn biên dịch. Chỉ cần nói với trình biên dịch để tạo mã bằng mọi cách (không có thông báo nào liên quan đến mã đối tượng).

Ngay cả khi không có DIAGTRUNC, các tin nhắn hiện đã lên tới 17 ...

  1  IGYDS1003-E   A "PROGRAM-ID" paragraph was not found. 
  Program-name "CBLNAM01" was assumed. 

  2  IGYDS1082-E   A period was required.  A period was assumed 
  before "DATA". 

  3  IGYDS1082-E   A period was required.  A period was assumed 
  before "01". 

                   Same message on line:     11 

  3  IGYDS1040-E   A data item was found in the "DATA DIVISION" 
                   before a section header was encountered. 
                   "WORKING-STORAGE SECTION" was assumed. 

  4  IGYDS1082-E   A period was required.  A period was assumed 
  before "05". 

                   Same message on line:      5      6      7      8
                   9     10     12     13 

 14  IGYDS1082-E   A period was required.  A period was assumed 
 before "PROCEDURE". 

 15  IGYPS2145-E   A period was required.  A period was assumed 
 before "MOVE". 

 23  IGYSC1082-E   A period was required.  A period was assumed 
 before "END OF PROGRAM". 

1
Tôi không nghĩ -là được phép
mniip

1
Điểm tốt. Sửa chữa. Thói quen.
Bill Woodger

@mniip Mmmm .... khó khăn hơn một chút ... Tôi sẽ phải sửa chữa CÔNG VIỆC-BẢO QUẢN sau. Tôi phải rời đi ngay bây giờ ...
Bill Woodger

1
Tôi đã cười nhạo "Vì đó là COBOL, đầu ra phải ở dạng LỚN". Công việc tốt đẹp!
Jonathan Van Matre

15

Ruby (chỉ sử dụng alnums và khoảng trắng)

putc 72
putc 101
putc 108
putc 108
putc 111
putc 44
putc 32
putc 87
putc 111
putc 114
putc 108
putc 100
putc 33

Đầu ra: Hello, World!


15

Javascript

with (function SGVsbG8sIFdvcmxkIQ(){}) atob(name)

Sử dụng bảng điều khiển của trình duyệt để kiểm tra.


14

JavaScript

with (String) with ([]) {
    push(fromCharCode(72))
    push(fromCharCode(101))
    push(fromCharCode(108))
    push(fromCharCode(108))
    push(fromCharCode(111))
    push(fromCharCode(44))
    push(fromCharCode(32))
    push(fromCharCode(87))
    push(fromCharCode(111))
    push(fromCharCode(114))
    push(fromCharCode(108))
    push(fromCharCode(100))
    push(fromCharCode(33))
    alert(join([]))
}

1
ARGH! Tôi đánh một giải pháp tương tự, nhưng quyết định rằng vì đã 2 giờ sáng, tôi nên đi ngủ và đăng nó vào buổi sáng. Thanh danh cho bạn!
DocMax

12

ferNANDo

h E R
e I S
h E
l L O
w O
r L
d U S
i N G
o N L
y L E
t T E
r S

H e L L o W O R
L d h E L l O w
O r l D h e L L
O w o R l d H E
L l o W o r l d
H E l L o w O R
L D h E L L O W
O r L d H e l l
O w o R l d h e
L l o w O R l D
H e l L o w O R
L d h E L l O W
O R l D H E L l
O w O
r L d

Thiếu dấu phẩy và!
VoronoiPotato

@VoronoiPotato: hoạt động tốt hơn ở đây
marinus

Rất tiếc: X
VoronoiPotato

12

Nổi loạn

Giải pháp chữ và số:

prin quote Hello prin add space 12 prin space prin quote World print add space 1

Trên đây là bản cập nhật sử dụng đề xuất tuyệt vời của Dr Rebmu add space 1(sản xuất !) để nhận được tất cả các nhân vật.

Dưới đây là phiên bản gốc:

prin quote Hello prin pick mold system 264 prin space prin quote World print pick mold system 12

Phiên bản ngắn hơn với dấu ngoặc:

print rejoin [quote Hello pick mold system 264 space quote World pick mold system 12] 

Và thậm chí phiên bản ngắn hơn với niềng răng:

print join {Hello} join pick mold system 264 join { World} pick mold system 12

Và phiên bản ngắn nhất với cả dấu ngoặc & dấu ngoặc:

print rejoin [{Hello} pick mold system 264 { World} pick mold system 12]

Rebol sử dụng dấu ngoặc nhọn {}để trích dẫn nhiều dòng. Vì vậy, hoàn toàn hợp lệ theo các thay đổi quy tắc nhưng không hoàn toàn trong tinh thần (IMHO) như hai câu trả lời đầu tiên của tôi ở trên.


Lưu ý In ấn !là một nỗi đau!

Rebol cho phép và sử dụng các ký tự dấu chấm câu thường xuyên cho các tên hàm và kiểu dữ liệu. Vì vậy, các tùy chọn như to-char 33hoặc to char! 33sẽ không được phép theo quy tắc (mặc dù các dấu chấm câu này không phải là toán tử par se).

May mắn thay tôi đã tìm thấy một cách táo tợn bằng cách biến đối tượng hệ thống Rebol: make object! [...]thành một chuỗi và anh đào chọn !nó từ đó :)

Cập nhật: Và bây giờ anh đào cũng chọn dấu phẩy từ văn bản giấy phép trong đối tượng hệ thống.


1
!không được phép
grovesNL

2
@grovesNL - Giải pháp không còn sử dụng nữa -hoặc !bây giờ bạn có thể xóa bỏ phiếu bầu xuống
Drainegtun

1
Bạn đang thiếu dấu phẩy
mniip

1
@mniip - Cảm ơn đã bỏ lỡ điều đó! Hiện đã sửa.
Drainegtun

1
Khá khó khăn, nhưng bạn có thể vừa thêm vào không gian để lấy các ký tự ... ;-) Xem giải pháp Rebmu , đồng hồ ở 46 chars ...
Tiến sĩ Rebmu

12

C

Chỉ sử dụng các ký tự chữ và số, dấu cách và dấu ngoặc {}, ngoặc vuông [] và dấu ngoặc đơn ().

main()
{
        if(printf((long long []){0x202c6f6c6c6548}))
                if(printf((long long []){0x21646c726f57})){}
}

printf () chấp nhận char * làm đối số, nhưng vì chúng ta không thể sử dụng dấu ngoặc kép ("), nên tôi đánh máy chuỗi dưới dạng một mảng dài. Các giá trị được thấy ở đây là các chuỗi ASCII, ở dạng endian nhỏ (0x48 = H, 0x65 = e, 0x6c = l, v.v.) Tôi đánh máy nó dài ra [] vì cách đó tôi có thể truyền một đối số 8 byte và do đó chỉ sử dụng hai lệnh gọi printf () thay vì bốn.


Điều này phá vỡ quy tắc số 1
Timtech

1
Chars, số, dấu cách và {} () [] được cho phép.
pank4j

bạn có thể truyền một int intal để mảng? Tôi chưa bao giờ thấy điều này trước đây
phuclv

Cái này làm gì
Nicolas Barbulesco

@ LưuViênPhúc Mảng là một con trỏ. Con trỏ là một số nguyên.
xem

11

BBC CƠ BẢN

Trình giả lập tại bbcbasic.co.uk

Tách từ câu trả lời LOGO của tôi.

Cách dễ dàng

Các số bên phải chỉ là mã ASCII. Điều này cũng giống như in ấn. Nếu tôi được phép có dấu phẩy, tôi có thể thực hiện trên một dòng ( VDU 72,101,108,etc.)

   10 VDU 72
   20 VDU 101
   30 VDU 108
   40 VDU 108
   50 VDU 111
   55 VDU 44
   60 VDU 32
   70 VDU 87
   80 VDU 111
   90 VDU 114
  100 VDU 108
  110 VDU 100
  120 VDU 33

Một cách sáng tạo hơn

    5 MODE 6
   10 READ B
   12 WHILE B
   15   PROC1(B)
   16   PRINT
   17   READ B
   18 ENDWHILE
   20 END

REM procedure prints first square on line, 
REM then calls itself recursively with A DIV 2 to print the next
REM VDU 17 tell VDU controller we want to change colour
REM Next line changes background colour. 
REM Then following line VDU 32 prints a space in that background colour.

  110 DEFPROC1(A)
  115 VDU 17
  120 IF A AND 1 THEN VDU VPOS DIV 6 EOR 133 ELSE VDU 128
  125 VDU 32
  130 IF A THEN PROC1(A DIV2)
  140 ENDPROC

REM binary bitmap data for each row, least significant at left
  150 DATA 463221
  160 DATA 332053
  170 DATA 332151
  180 DATA 332053
  190 DATA 2586485
  200 DATA 1048576
  210 DATA 4395895
  220 DATA 4527447
  230 DATA 4526935
  240 DATA 333143
  250 DATA 4420981
  260 DATA 0

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



11

DC

DC chỉ là về công cụ hoàn hảo cho công việc.

5735816763073854918203775149089P

DCs P-command bật một số từ ngăn xếp và xuất đại diện máy tính thô của nó cho STDIO. Nhìn thấy 5735816763073854918203775149089 = 0x48656C6C6F2C20576F726C6421, được thể hiện như 0x21, 0x64, 0x6C... = 'H', 'e', 'l'...trong một kiến ​​trúc cuối cùng, nó xuất ra Hello, World!.


Cái này hoạt động ra sao? Bạn có phiền thêm một lời giải thích?
WEC

1
Không có gì. Một lời giải thích sẽ được bổ sung trong thời gian ngắn.
Dành cho

2
+1. Bạn có thể làm điều đó trong hex để lưu một vài ký tự:16i48656C6C6F2C20576F726C6421P
Chấn thương kỹ thuật số

9

JavaScript!

Và họ nói rằng điều đó không thể được thực hiện ... Không có toán tử chuyển nhượng, không hòa giải, không trích dẫn! Arghhhh!

Đừng sợ ... Đối với lực lượng là withbạn ...

function w(x){
    with(document){
        with(String){
            write(fromCharCode(x))
        }
    }
}
w(72)
w(101)
w(108)
w(108)
w(111)
w(44)
w(32)
w(87)
w(111)
w(114)
w(108)
w(100)
w(33)

Output (on browser screen): Hello, World!

Ông nói "Tiền thưởng nếu bạn có thể làm điều đó trong Java" chứ không phải Javascript.
Almo

@Almo Tôi không định làm điều đó bằng Java ... Tôi đã tập trung vào JavaScript, đó là thế mạnh chính của tôi ở đây trên trang web này ...
WallyWest

Nhưng bạn nói "Và họ nói rằng điều đó không thể thực hiện được" mà tôi nghĩ là đề cập đến phần thưởng cho câu đố khi làm điều đó trong Java. Nhiều người vẫn nhầm lẫn Java với Javascript.
Almo

@ Almo, tôi chỉ sử dụng một câu nói chung chung ... Và khi tôi nói đến "Javascript", tôi dự định sử dụng JavaScript ... Tin tôi đi, tôi không có ý định nhận tiền thưởng ...
WallyWest

9

Javascript

Cập nhật: Được quản lý để cắt một loạt các ký tự bằng cách giới thiệu một chức năng Thế giới.

Một giải pháp Javascript khác ghi vào console.log:

function World() { with (World) return name }
function Hello() {}
with (console)
with (String)
with (Hello)
with (name)
with (concat(fromCharCode(44)))
with (concat(fromCharCode(32)))
with (concat(World()))
log(concat(fromCharCode(33)))

Lấy cảm hứng từ mục này .

Đầu tiên, tôi định nghĩa các hàm có tên Hello và World. Điều này sẽ được sử dụng sau này.

Sau đó, tôi bắt đầu chuỗi withs lồng nhau. Các with (console)with (String)được sử dụng để sau này tôi có thể gọi console.logString.fromCharCodekhông sử dụng dấu chấm.

Kế hoạch bây giờ là xây dựng chuỗi Hello, World!bằng cách lạm dụng withs lồng nhau. Mỗi lần tôi gọi concat (), chuỗi kết quả sẽ là bối cảnh trong khối tiếp theo. Tôi cắt ngắn để nhanh chóng có được "Hello"bằng cách truy cập vào thuộc nametính của Hellohàm. Sau đó, tôi ghép các ký tự dấu phẩy và dấu cách bằng cách sử dụng String.fromCharCode.

Thủ thuật tiếp theo là lấy "World"một phần của chuỗi. Tôi không thể sử dụng cùng một phương thức mà tôi đã sử dụng để có được Hello, vì tôi không thể gọi World.name. Thay vào đó, tôi đặt logic đó vào bên trong phương thức World và gọi nó.

Cuối cùng, tôi nối thêm dấu chấm than cuối cùng và gửi kết quả ngay đến chức năng đăng nhập, tất nhiên là console.log.


7

Perl

Trong một Perl hiện đại (5.10 hoặc mới hơn):

print q{Hello} and print chr 44 and print q{ World} and say chr 33

Trong Perl cũ hơn:

print q{Hello} and print chr 44 and print q{ World} and print chr 33 and print chr 10


Cả hai giải pháp trên đều sử dụng qtoán tử giống như trích dẫn Perl và cho phép các dấu phân cách chọn lọc để trích dẫn một chuỗi, ví dụ. q{} q[] q() q//

Giải pháp này yêu cầu thay đổi quy tắc cho phép niềng răng, ngoặc hoặc parens. Vì vậy, trong khi hoàn toàn hợp lệ, tôi nghĩ rằng mniipcâu trả lời Perl xuất sắc là nhiều hơn theo tinh thần thực sự của các quy tắc (+1).

Tuy nhiên, lấy một lá ra khỏi mniipcâu trả lời, giải pháp của tôi có thể được viết như vậy:

print q xHellox and print chr 44 and print q x Worldx and say chr 33

và trong khi khó hơn trên mắt nó làm việc.


1
Bạn đang thiếu dấu phẩy
mniip

1
@mniip - Cảm ơn một lần nữa. Bây giờ đã thêm dấu phẩy bị thiếu.
Drainegtun

Trông giống như AppleScript mà không có sự dài dòng
Ming-Tang

Trên máy Mac của tôi, dòng Perl thứ nhất và thứ ba không hoạt động, chỉ dòng Perl thứ hai hoạt động. Tôi có Perl 5.16.2.
Nicolas Barbulesco

syntax error at -e line 1, near "say chr"
Nicolas Barbulesco

7

Perl

print chr hex for qw z48 65 6c 6c 6f 2c 20 57 6f 72 6c 64 21z

6

Con trăn

import antigravity 

nguyên nhân "Xin chào, thế giới!" để xuất hiện trên màn hình của bạn. Đừng tin tôi? Tự mình thử nó xem! Ngoài ra, điều này không thực sự sử dụng web, nó mở một trình duyệt, có thể tra cứu một trang web.


1
Tôi có màn hình chiều cao 768 pixel, vì vậy "Xin chào, thế giới!" không xuất hiện trên màn hình của tôi.
Olivier Grégoire

1
Điều này không viết "Xin chào, thế giới!" bất cứ nơi nào trong lĩnh vực tầm nhìn của tôi. Nhưng điều này sẽ mở xkcd.com/353/ trong Safari!
Nicolas Barbulesco

Tôi hiện không sử dụng Web. Tôi đang viết trong một trình duyệt, có thể kết nối với một trang web.
Nicolas Barbulesco

sciyoshi.com/2008/12/import-antigravity Mã yêu cầu Python 3 xuất hiện nhưng sẽ không chạy trong Python 3 (trừ khi điều đó đã được nhập vào).
Hồ tháng ba

6

Khoảng trắng

Được rồi, chúng ta có thể sử dụng khoảng trắng. Nó chỉ sử dụng Space, Tab, LineFeedvà bỏ qua bất kỳ ký tự khác.

   	  	   
	
     		  	 	
	
     		 		  
	
     		 		  
	
     		 				
	
     	 		  
	
     	     
	
     			 			
	
     		 				
	
     			  	 
	
     		 		  
	
     		  	  
	
     	    	
	
  


Với nhận xét: S, Thoặc Lphương tiện Space, Tabhoặc LineFeedtương ứng.

S S S T S S T   S S S L
T   L
S S S S S T T   S S T   S T L
T   L
S S S S S T T   S T T   S S L
T   L
S S S S S T T   S T T   S S L
T   L
S S S S S T T   S T T   T   T   L
T   L
S S S S S T S T T   S S L
T   L
S S S S S T S S S S S L
T   L
S S S S S T T   T   S T T   T   L
T   L
S S S S S T T   S T T   T   T   L
T   L
S S S S S T T   T   S S T   S L
T   L
S S S S S T T   S T T   S S L
T   L
S S S S S T T   S S T   S S L
T   L
S S S S S T S S S S T   L
T   L
S S L
L
L

Với phần tô sáng: http://en.wikipedia.org/wiki/Whitespace_(programming_lingu)#Sample_code


5

dc, (26 byte cho người chơi gôn)

Khoảng trắng và []dấu ngoặc hiện được phép:

[Hello]n44P[ World]n33P[]p

Đầu ra:

$ dc <<< "[Hello]n44P[ World]n33P[]p"
Hello, World!
$ 

5

Rebmu , 46 ký tự

pnUPPqHELLO01pnADsp12pnSPpnUPPqWORLD01pnADsp01

Mạnh mẽ song song @ giải pháp dragetun trong Rebol (Bởi vì Rebmu là một công cụ giảng dạy Rebol / đỏ mà là một "phương ngữ" nhằm gây sự chú ý đến ngôn ngữ bằng cách bập bênh tại Mã Golf. :-P)

Tuy nhiên, để có được các nhân vật mất tích, tôi đã làm một cái gì đó rõ ràng hơn. Tôi chỉ thêm vào không gian, thay vì đi và xem qua các chuỗi hệ thống. Bạn có thể nhận thêm không gian 1 để nhận ký tự # "!" và thêm không gian 12 để có được ký tự # ",".

Nếu chúng ta chạy nó, chúng ta có thể thấy nó bị "tắt":

>> rebmu/debug/stats "pnUPPqHELLO01pnADsp12pnSPpnUPPqWORLD01prADsp01"
Original Rebmu string was: 46 characters.
Rebmu as mushed Rebol block molds to: 46 characters.
Unmushed Rebmu molds to: 62 characters.
Executing: [pn upp q hello 1 pn ad sp 12 pn sp pn upp q world 1 pr ad sp 1]
Hello, World!

Đó là khá logic:

; print with no newline the result of doing an uppercase/part
; on the quoting of the symbolic word hello, of only the first
; N characters (where N is 1)
pn upp q hello 1

; print the character you get when you add 12 to the space
; character literal, a.k.a. comma...again no newline
pn ad sp 12

; print a space, no newline
pn sp

; do the same trick of printing the quoted word hello with the
; first letter converted to uppercase
pn upp q world 1

; print the character you get when you add 1 to the space
; character literal, a.k.a. exclamation point...with newline now
pr ad sp 1

4

T-SQL, 52

Ah, cái này tốt hơn! Chuyển đổi nhị phân trực tiếp, chỉ có 52 ký tự.

SELECT CAST(0x48656C6C6F2C20576F726C6421 AS VARCHAR)

Trước đây ...

Có một giải pháp thông minh hơn và mạnh mẽ hơn cho giải pháp này sẽ hoạt động nếu chúng ta có thể sử dụng =+(Tra cứu dữ liệu tích hợp chuẩn trong msdb và sử dụng điều đó để xây dựng chuỗi truy vấn có thể EXEC)

Nhưng vì chúng tôi không thể, bạn có được cách tiếp cận ngây thơ này:

SELECT CHAR(72)SELECT CHAR(101)SELECT CHAR(108)SELECT CHAR(108)SELECT CHAR(111)SELECT CHAR(44)SELECT CHAR(32)SELECT CHAR(87)SELECT CHAR(111)SELECT CHAR(114)SELECT CHAR(108)SELECT CHAR(100)SELECT CHAR(33)

1
Tôi biết, việc thiếu các toán tử ghép nối đang giết chết tôi ... Tôi đang cố nghĩ cách để làm điều đó với JavaScript ...
WallyWest

1
Vâng, mặc dù thử thách này dường như tạo ra những câu trả lời chủ yếu là ngây thơ, nhưng nó chắc chắn đã truyền cảm hứng cho một số động tác xoắn não thú vị để cố gắng tìm ra những cách tiếp cận không liên quan thú vị.
Jonathan Van Matre

Bạn có thể làm tốt hơn. Sử dụng IN chứ không phải CHỌN. Và ngầm định với LTRIM () hoặc RTRIM (). Tôi làm một cái gì đó tương tự ở đây .
Muqo

4

Con trăn

Pfff, ai cần phần số của chữ và số?

from string import lowercase
from string import uppercase
from string import punctuation
print uppercase[len(str([[[len(str())]]]))]
print lowercase[len(str([[]]))]
print lowercase[len(str([[[[[len(str())]]]]]))]
print lowercase[len(str([[[[[len(str())]]]]]))]
print lowercase[len(str([[[[[[[]]]]]]]))]
print punctuation[len(str([[[[[len(str())]]]]]))]
print
print uppercase[len(str([[[[[[[[[[[]]]]]]]]]]]))]
print lowercase[len(str([[[[[[[]]]]]]]))]
print lowercase[len(str([[[[[[[[len(str())]]]]]]]]))]
print lowercase[len(str([[[[[len(str())]]]]]))]
print lowercase[len(str([len(str())]))]
print punctuation[len(str())]

Điều này phụ thuộc vào địa phương, do đó, milage của bạn có thể thay đổi. Tuy nhiên, nếu bạn thực sự muốn sao chép kết quả này, bạn có thể sử dụng các thay đổi sau đây cho câu lệnh nhập:

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

(đây không phải là một phần trong bài đăng của tôi, nó chỉ chia sẻ với người dân địa phương của tôi để có thể tái tạo)


4

J - 73 char

có thể được thực hiện, sau khi tất cả!

72 101 108 108 111 44 32 87 111 114 108 100 33{do 1 8{show 0 def 0
take
)

Đây là điều về J. Hầu hết các nguyên thủy là dấu chấm câu ASCII, theo sau là hai dấu chấm hoặc dấu hai chấm. Những nguyên thủy không được tạo dấu chấm câu là một ký tự chữ và số theo sau đến hai dấu chấm hoặc dấu hai chấm. Vì vậy, chúng tôi không cho phép bất kỳ ai trong số đó, ngoại trừ { } [ ]. []là động từ danh tính và do đó là vô dụng.

May mắn thay, {lập chỉ mục các mảng, vì vậy, nếu chúng ta có một chuỗi với mỗi ký tự ASCII duy nhất ( a., được gọi là Bảng chữ cái ), chúng ta có thể kéo các chữ cái ra bằng các mật mã ASCII của chúng. Chúng tôi cũng có một cách sao lưu để tạo chuỗi , 0 : 0và sau đó nhồi và đơn độc ); dấu hai chấm trong đó có một bí danh trong thư viện chuẩn , def.

Sau đó, có một động từ trong thư viện tiêu chuẩn, showcung cấp cho bạn đại diện bên trong của một động từ nếu bạn chuyển tên đó dưới dạng một chuỗi. Có một động từ khác do, đó sẽ là một chuỗi. Vì vậy, nếu chúng ta có thể rút ra a.từ bất kỳ đại diện nào như vậy, chúng ta có thể đánh giá điều đó và rút ra Hello, World!.

Vị cứu tinh của chúng ta xuất hiện dưới dạng take, một bí danh cho {.cái có atên của nó. show'take'sẽ trở lại take=: {., vì vậy chúng tôi có của chúng tôi a.và do đó một giải pháp.

Chúng ta có thể thoát khỏi {bằng cách sử dụng tương đương về cơ bản picktừ thư viện tiêu chuẩn, nhưng không thể tránh được paren ở cuối.

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.