Viết một thông dịch viên cho *


20

Nhiệm vụ rất đơn giản. Viết một thông dịch viên cho ngôn ngữ * .

Đây là một liên kết lớn hơn đến wiki.

Chỉ có ba chương trình * hợp lệ:

  • * In "Xin chào thế giới"
  •  *  In một số ngẫu nhiên trong khoảng từ 0 đến 2.147.483.647
  • *+* Chạy mãi.

Trường hợp thứ ba phải là một vòng lặp vô hạn theo các thông số kỹ thuật trong câu hỏi này

Đầu vào:

  • Đầu vào có thể được thực hiện thông qua bất kỳ phương thức nhập có thể chấp nhận nào theo quy tắc I / O tiêu chuẩn của chúng tôi
  • Nó sẽ luôn là một trong những chương trình trên

Đầu ra:

  • Trường hợp đầu tiên nên in chính xác Hello World, có hoặc không có ngắt dòng.
  • Đối với trường hợp thứ hai, nếu tối đa số nguyên của ngôn ngữ của bạn nhỏ hơn 2.147.483.647, hãy sử dụng tối đa số nguyên của ngôn ngữ của bạn
  • Các trường hợp thứ nhất và thứ hai có thể in ra bất kỳ đầu ra chấp nhận được theo quy tắc I / O tiêu chuẩn của chúng tôi.
  • Trường hợp thứ ba không nên cho bất kỳ đầu ra.

Ghi điểm:

Vì đây là , câu trả lời ngắn nhất, tính bằng byte, thắng.


7
Khi bạn nói 'giữa 02,147,483,647', đó là bao gồm hay độc quyền? (Ví dụ: là 0một đầu ra hợp lệ?)
Chas Brown

7
Thay đổi thông số kỹ thuật sau khi đăng một thách thức và vô hiệu hóa các giải pháp hiện có là tự động -1từ tôi.
Shaggy

2
Đối với các ngôn ngữ không có cách tạo số ngẫu nhiên tích hợp, có cách nào có thể chấp nhận để đáp ứng yêu cầu "in số ngẫu nhiên" không?
Tanner Swett

2
Nếu số nguyên của ngôn ngữ của chúng tôi không có hoặc cao hơn, tối đa chúng tôi có thể sử dụng giới hạn trên cao hơn không?
Jonathan Allan

7
@Shaggy Tôi không thấy bất kỳ thay đổi quy tắc nào trong wiki cho câu hỏi, chỉ có một khoảng trắng đến một không gian không phá vỡ (kiểm tra tab đánh dấu), bởi vì trình kết xuất đánh dấu SE không hiển thị nó, nhưng nhìn vào bản xem lại ban đầu , rõ ràng nó phải là không gian bình thường và "hack" chỉ được thực hiện cho các sự cố kết xuất đánh dấu SE
Ferrybig

Câu trả lời:


20

* , 0 byte


Vì * không có cách đọc đầu vào, nên các quy tắc mặc định cho phép chỉ định rằng đầu vào phải được cung cấp bằng cách nối nó vào chương trình .

(... Tôi nghĩ. Có một điều kiện "ít nhất gấp đôi số lần upvote so với downvote" mà tôi không có đại diện để xác minh).


4
Meta được liên kết của bạn thực sự là một tiêu chuẩn trang web hiện được chấp nhận (+31 -7).
Jonathan Allan

2
@A__: Theo tôi thì nó phải được thiết kế riêng để đáp ứng định nghĩa 'ngôn ngữ lập trình' của ai đó ("Bạn có thể viết lời chào thế giới!" "Bạn có thể viết một vòng lặp vô hạn!" "Bạn có thể viết một chương trình không Luôn luôn làm điều tương tự! ").
Henning Makholm

Tôi tin rằng về mặt kỹ thuật Malbolge cũng không phải là ngôn ngữ lập trình.
Bob Jansen

1
Malbolge là ngôn ngữ lập trình cho automata hữu hạn, giống như *, và, ví dụ, Befunge-93. Do đó, Malbolge là ngôn ngữ lập trình chính thức, giống như *, về mặt kỹ thuật giống như ngôn ngữ đệ quy đệ quy khi định nghĩa ngôn ngữ lập trình (mặc dù ngôn ngữ chính thức ít mạnh hơn).
Krzysztof Szewchot

Vì tôi thật sự thất vọng, câu trả lời này thật nhàm chán, nó thực sự đã là một lỗ hổng tiêu chuẩn , ngay cả khi chúng tôi bỏ qua câu hỏi liệu * có phải là ngôn ngữ lập trình hay không
AlienAtSystem

8

R , 69 byte

switch(scan(,""),"*"="Hello, World!"," * "=sample(2^31,1)-1,repeat{})

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

switchcố gắng khớp các đối số được đặt tên và nếu không có đối số, chọn đối số không tên đầu tiên sau đối số đầu tiên, trong trường hợp này là vòng lặp vô hạn repeat{}.


6

Thạch ,  21  20 byte

ḊOSØ%HX’¤“½,⁾ẇṭ»¹Ḃ¿?

Một liên kết đơn âm chấp nhận một danh sách các nhân vật.

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

vL’... cũng hoạt động (xem bên dưới).

Làm sao?

ḊOSØ%HX’¤“½,⁾ẇṭ»¹Ḃ¿? - Link: list of characters   e.g.: "*"        or  " * "    or  "*+*"
Ḋ                    - dequeue                          ""             "* "         "+*"
 O                   - to ordinals                      []             [42,32]      [43,42]
  S                  - sum                              0              74           85
                   ? - if...
                  ¿  - ...if-condition: while...
                 Ḃ   -    ...while-condition: modulo 2  0              0            1
                ¹    -    ...while-true-do: identity                                85
                     -                                  0              74           (looping)
        ¤            - ...then: nilad followed by link(s) as a nilad:
   Ø%                -    literal 2^32                                 2^32
     H               -    half                                         2^31
      X              -    random integer in [1,n]                      RND[1,2^31]
       ’             -    decrement                                    RND[0,2^31)
         “½,⁾ẇṭ»     - ...else: dictionary words        "Hello World"

Thay thế

vL’... - Link: list of characters                 e.g.: "*"        or  " * "    or  "*+*"
 L     - length                                         1              3            3
v      - evaluate (left) as Jelly code with input (right)
       -                                                1^1            3^3          (3^3+3)^3
       -                                                1              27           27000
  ’    - decrement                                      0              26           26999
   ... - continue as above                              "Hello World"  RND[0,2^31)  (looping)

5

C (gcc) , 66 63 byte

Cảm ơn attinat cho -3 byte.

Tôi chỉ phải kiểm tra ký tự thứ hai: nếu LSB được đặt, đó là một +(vì vậy chương trình là " *+*") và các vòng lặp của chương trình. Sau đó, nếu là một NUL, chương trình là " *" và chúng tôi hiển thị Hello World; mặt khác, nó sẽ hiển thị một giá trị ngẫu nhiên ("  * ", chỉ còn lại tùy chọn khác.)

f(char*s){for(s++;*s&1;);printf(*s?"%d":"Hello World",rand());}

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



Cạo một byte:f(char*s){*++s&1?f(s-1):printf(*s?"%d":"Hello World",rand());}
Roman Odaisky

Lưu ý Pedantic: randkhông được đảm bảo để trả về một giá trị đủ lớn; RAND_MAXINT_MAXkhông được đảm bảo giống nhau (và không có trên các trình biên dịch trong thế giới thực, ví dụ như Visual Studio RAND_MAX32767, trong khi INT_MAX[trên các hệ thống dẫn xuất x86 hiện đại] 2147483647giá trị được chỉ định trong câu hỏi của OP).
ShadowRanger

@ShadowRanger hoàn toàn đúng, nhưng xem xét rằng> 90% tất cả các mục CGCC dựa trên C dựa trên hành vi không xác định và không xác định Tôi không lo lắng về điều đó! Tôi cũng không cảm thấy muốn thực hiện một LCG có mã số ngày hôm nay. :-)
ErikF

5

Python 2 , 103 93 89 87 byte

Tôi kết hợp câu trả lời trước của tôi với Chas của Browns câu trả lời và nhận được một cái gì đó một vài byte ngắn hơn.

Số ngẫu nhiên sẽ nằm trong khoảng từ 0 đến 2 ** 31-1.

from random import*
i=input()
while'*'<i:1
print["Hello World",randrange(2**31)][i<'!']

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

Những phiên bản trước:

103 byte

from random import*
exec['print"Hello World"','while 1:1','print randint(0,2**31-1)'][cmp(input(),'*')]

93 byte

from random import*
i=cmp(input(),'*')
while i>0:1
print["Hello World",randint(0,2**31-1)][i]

Lưu 2 byte bằng cách thay thế randint(0,2**31-1)bằng randrange(2**31).
Chas Brown

while'*'<itiết kiệm 2
Jonathan Allan

Lưu một byte khác bằng cách thay đổi randrange(2**31)thành getrandbits(31)(trả về sau long, không int, nhưng printsẽ in strbiểu mẫu chứ không phải reprbiểu mẫu, do đó, dấu Lsẽ không ở đó).
ShadowRanger

Tương đối thiếu kinh nghiệm với trang web, vì vậy hãy làm rõ nhanh chóng: Bạn có được phép yêu cầu đầu vào của bạn được trích dẫn không? i=input()chỉ hoạt động nếu các đầu vào được trích dẫn, nếu bạn chỉ nhập đơn giản */ * /*+*, nó sẽ chết với một SyntaxError(vì inputbao gồm một ẩn eval); thay vào đó, bạn cần nhập '*'/' * '/'*+*'(hoặc tương đương với dấu ngoặc kép). Tôi không thấy bất cứ điều gì rõ ràng về các quy tắc I / O tiêu chuẩn sẽ cho phép điều này, điều đó có thể có nghĩa là bạn cần sử dụng raw_input(), tốn bốn byte.
ShadowRanger

@ShadowRanger input()lấy một chuỗi làm đầu vào và đánh giá nó. Tôi không thực sự thêm vào đầu vào, tôi chỉ đơn thuần lấy một chuỗi làm đầu vào và chuỗi có dấu ngoặc kép. Điều này là khá chuẩn, theo cùng một cách mà tôi có thể lấy một mảng như [1,2,3]thay vì như một chuỗi phân tách mà sau đó tôi phải phân tách và phân tích cú pháp. Mục tiêu của trang web không phải là làm cho đầu vào trở nên nghiêm ngặt, nó làm cho I / O trở nên dễ dàng để chúng tôi có thể tập trung mã vào thử thách trong tầm tay.
mbomb007

5

Keg , -lp, -ir 30 26 25 24 20 19 byte

!1=[_“H%c¡“| =[~.|{

-1 byte sử dụng cờ

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

Trả lời lịch sử

?!1=[_“H%c¡“| =[~.|{

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

Rút gọn Hello Worldthành chuỗi từ điển

!1=[_Hello World| =[~.|{

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

Tôi không bao giờ hết ngạc nhiên trước sức mạnh của Keg. Tín dụng cho người dùng EdgyNerd cho một byte khác được lưu.

Phiên bản trước

_!0=[Hello World|\*=[~.|{

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

Tín dụng cho người dùng A__ cho byte được lưu thêm.

Phiên bản cũ

?!1=[_Hello World| =[__~|{

Về cơ bản, có chương trình đầu vào và:

  • Kiểm tra xem độ dài đầu vào là 1, in "Hello World" nếu đúng
  • Kiểm tra xem ký tự cuối cùng có phải là khoảng trắng không và in một số ngẫu nhiên
  • Nếu không thì chạy một vòng lặp vô hạn

Sau đó ngầm in ngăn xếp.

?                               #Get input from the user
 !1=                            #Compare the stack's length to 1
    [_Hello World           #Push "Hello, World!" to the stack
                     | =        #See if top item is a space
                        [__~|{  #If so, generate a random number, otherwise, infinite loop.

4 byte được lưu do thực tế là hello world không cần chấm câu.

Hãy thử trực tuyến! Phiên bản cũ

Hãy thử trực tuyến! Phiên bản mới


Bạn có thể cắt 4 byte, bạn không cần dấu phẩy hoặc dấu chấm than trong "Hello World".
TheOnlyMrCat

1
Bây giờ tôi phải học một ngôn ngữ không phổ biến khác để trả lời những thách thức ở đây một cách bình thường.
A̲̲

1
-1 byte: TIO . Tôi vui vì tôi đã không mất khả năng chơi gôn ở Keg.
A̲̲

@A__ Thưởng thức Keg trên TIO?
Jono 2906


3

Befunge-93 , 54 byte

~"*"-_~1+#^_"dlroW olleH">:#,_@.%*2**:*::*88:*`0:?1#+<

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

Chú thích:

~"*"-                      _                ~1+                   #^_        "dlroW olleH">:#,_    @      .%*2**:*::*88:   *`0:             ?1#+<
Compare first      If equal, go right       Compare second       If equal,        Output          Exit    Modulo by 2^31   If less than      Add 1
character to       Otherwise, go left       character to       loop forever   "Hello World"                 and output     0, multiply     a random amount
'*'                and wrap around          -1 (EOF)                                                                         by 0            of times

Sự ngẫu nhiên không đồng nhất. Ở mỗi mức tăng có 50% cơ hội để ngừng tăng.


3

Japt , 22/25 byte

Giải pháp đầu tiên là dành cho thông số ban đầu có *<space>chương trình thứ hai và chương trình còn lại dành cho thông số kỹ thuật được cập nhật tùy ý thay đổi nó <space>*</space>, nhờ EoI cho "sửa chữa" được đề xuất.

Cả hai đều đưa ra một lỗi tràn khi vào vòng lặp vô hạn của chương trình thứ ba, nhưng về mặt lý thuyết, có đủ bộ nhớ (mà chúng ta có thể giả sử cho các mục đích của ), sẽ chạy mãi mãi.

Å?¢?ß:2pHÉ ö:`HÁM Wld

Thử chương trình 1
Thử chương trình 2
Thử chương trình 3

Å?UÎ>S?ß:2pHÉ ö:`HÁM Wld

Thử chương trình 1
Thử chương trình 2
Thử chương trình 3


Tôi nghĩ chương trình thứ hai là "[KHÔNG GIAN] * [KHÔNG GIAN]", không phải "[KHÔNG GIAN] *", vì vậy chương trình của bạn không hoạt động
Hiện thân của sự thiếu hiểu biết

@EmbodimentofIgnorance, tại thời điểm tôi đăng, chương trình thứ hai trong thông số kỹ thuật *<space> . Không có thời gian để cập nhật ngay bây giờ.
Xù xì

Bạn có thể sửa nó thành ba byte UÌ>Sthay vì ¢trên ternary thứ hai
Hiện thân của sự thiếu hiểu biết

@Downvoter, xin vui lòng để lại nhận xét.
Xù xì

2

JavaScript (ES7), 66 byte

s=>s[1]?s<'!'?Math.random()*2**31|0:eval(`for(;;);`):'Hello World'

Hãy thử trực tuyến! (Chào thế giới)

Hãy thử trực tuyến! (số ngẫu nhiên)

Hãy thử trực tuyến! (vòng lặp vô hạn)


Sẽ x=(z=>x())&&x()không hoạt động cho -1byte từ mã vòng lặp vô hạn, giả sử trình duyệt không có kích thước ngăn xếp cuộc gọi tối đa?
Geza Kerecsenyi

@GezaKerecsenyi Chúng tôi chỉ có thể gọi chính chúng tôi ( như thế này ) nhưng tôi không chắc điều đó có thể chấp nhận được.
Arnauld

thật công bằng Tôi tự hỏi liệu có một trình duyệt tối nghĩa nào đó ngoài kia cứ tiếp tục (ít nhất là cho đến khi hết RAM)
Geza Kerecsenyi

1
@Arnauld, về mặt lý thuyết, sẽ chạy mãi mãi với bộ nhớ vô hạn, mà chúng ta có thể giả sử cho môn đánh gôn.
Xù xì

2

Thạch , 23 21 byte

OS¹Ḃ¿ịØ%HX’;““½,⁾ẇṭ»¤

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

Một liên kết đơn âm lấy một đối số duy nhất và trả về Hello World, một số nguyên 31 bit ngẫu nhiên hoặc lặp vô hạn theo thông số kỹ thuật.

Tất cả các tùy chọn: * * *+*

Giải trình

O                     | Convert to codepoints
 S                    | Sum
  ¹Ḃ¿                 | Loop the identity function while odd 
     ị              ¤ | Index into the following as a nilad:
      Ø%              | - 2 ** 32
        H             | - Halved
         X            | - Random integer in the range 1..2**31
          ’           | - Decrease by 1 
           ;          | - Concatenated to:
            ““½,⁾ẇṭ»  |   - "", "Hello World"








1

Than , 30 byte

W№θ*F⁼θ*≔Hello Worldθ∨θI‽X²¦³¹

Hãy thử trực tuyến! Liên kết là phiên bản dài dòng của mã. Lạm dụng định dạng đầu vào mặc định của Char than sẽ phân tách trên các khoảng trắng nếu chỉ có một dòng, do đó, đầu vào số ngẫu nhiên thực sự trông giống như ba đầu vào. Giải trình:

W№θ*

Lặp lại trong khi đầu vào đầu tiên chứa a *.

F⁼θ*

Nếu đầu vào đầu tiên *chỉ là ...

≔Hello Worldθ

... Sau đó thay thế nó bằng Hello World, do đó làm cho vòng lặp chấm dứt. *+*không được thay thế, dẫn đến một vòng lặp vô hạn.

∨θ

Nếu đầu vào đầu tiên không trống thì đầu ra.

I‽X²¦³¹

Nhưng nếu nó trống thì xuất ra một số nguyên ngẫu nhiên trong phạm vi mong muốn.


1

Thêm ++ , 78 byte

z:"Hello World"
`y
xR2147483647
x:?
a:"*"
b:" * "
c:"*+*"
Ix=a,Oz
Ix=b,O
Wx=c,

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

Giải trình

z:"Hello World"	; Set z = "Hello World"
`y		; Set y as the active variable
xR2147483647	; Set y to a random number between 0 and 2147483647
x:?		; Set x to the input
a:"*"		; Set a = "*"
b:" * "		; Set b = " * "
c:"*+*"		; Set c = "*+*"
Ix=a,		; If x == a then...
	Oz	;	...output z
Ix=b,		; If x == b then...
	O	;	...output y
Wx=c,		; While x == c then...
		;	...do nothing

1

Brachylog , 26 23 byte

l₃∈&hṢ∧2^₃₁-₁ṙw∨Ḥ⊇ᶠ³⁶tw

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

Đưa chương trình thành một chuỗi thông qua biến đầu vào và bỏ qua biến đầu ra. Khai thác mạnh mẽ đảm bảo rằng đầu vào chỉ là một trong ba chương trình hợp lệ: bất kỳ đầu vào ba chiều dài nào cũng sẽ hoạt động giống như " * "hoặc "*+*"tùy thuộc vào việc ký tự đầu tiên có phải là khoảng trắng hay không, và bất kỳ đầu vào nào khác sẽ hoạt động như thế nào "*".

l₃                         The input has length 3
  ∈                        and is an element of something,
   &h                      and the input's first element
     Ṣ                     is a space
  ∈                        (if not, try some other thing it's an element of),
      ∧2^₃₁-₁              so take 2,147,483,647 and
             ṙw            print a random number between 0 and it inclusive.
               ∨           If the input's length isn't 3,
                Ḥ⊇ᶠ³⁶tw    print the 36th subsequence of "Hello, World!".

Rất tiếc, sai "Xin chào thế giới" - sửa lỗi ngay bây giờ
Chuỗi không liên quan

1

PHP , 51 byte

for(;'*'<$l=$argn[1];);echo$l?rand():'Hello World';

Hãy thử trực tuyến! (Chào thế giới)

Hãy thử trực tuyến! (Số ngẫu nhiên)

Hãy thử trực tuyến! (Vòng lặp vô hạn)

Có ký tự thứ hai của đầu vào có thể '', '*'hoặc '+'. Trong trường hợp của '+'các '*'<'+'sẽ là đúng và vòng lặp sẽ là vô hạn, nếu không, sau khi vòng lặp, "Hello World" hoặc một số ngẫu nhiên được hiển thị. Việc rand()tự động xuất ra một số từ 0 đến getrandmax()sử dụng được xác định RAND_MAXtrong thư viện C tiêu chuẩn và theo mặc định là 2147483647trên hầu hết các nền tảng / môi trường, bao gồm cả TIO.


1

05AB1E , 21 byte

'*KgDi[ë<ižIL<Ω딟™‚ï

Hãy thử trực tuyến. (LƯU Ý: Bản dựng ngẫu nhiên khá chậm với các danh sách lớn, do đó có thể mất một lúc trước khi kết quả được đưa ra.)

Giải trình:

'*K           '# Remove all "*" from the (implicit) input
   g           # Get the length of what's remain (either 0, 1, or 2)
    D          # Duplicate this length
     i         # If the length is exactly 1:
      [        #  Start an infinite loop
     ë<i       # Else-if the length is 2:
        žI     #  Push builtin 2147483648
          L    #  Create a list in the range [1,2147483648]
           <   #  Decrease each by 1 to make the range [0,2147483647]
            Ω  #  Pop and push a random value from the list
               #  (after which the top of the stack is output implicitly as result)
     ë         # Else:
      ”Ÿ™‚ï    #  Push dictionary string "Hello World"
               #  (after which the top of the stack is output implicitly as result)

Xem mẹo 05AB1E này của tôi (phần Làm thế nào để sử dụng từ điển? ) Để hiểu tại sao ”Ÿ™‚ï"Hello World".


1

Bình thường , 32 byte

It/Jw\*#;?tlJOhC*4\ÿ"Hello World

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

Giải thích (Python-ish)

I                                   # if 
  /Jw\*                             #    (J:=input()).count("*"))
 t                                  #                             - 1:
       #;                           #     try: while True: pass;except: break;
         ?                          # if (ternary)
           lJ                       #    len(J):
             O                      #     randInt(0,                    )
               C                    #                int(     , 256)
                *4\ÿ                #                    4*"ÿ"
              h                     #                                + 1
                    "Hello World    # else: (implicitly) print "Hello World"

Điều này in một số từ 0 đến 2 ^ 32, không phải 0 và 2 ^ 31. Một cách ngắn hơn để viết hC*4\ÿ^2 32, nhưng để giải pháp được chính xác, bạn nên sử dụng ^2 31thay thế. Ngoài ra, sử dụng zthay vì Jw, tiết kiệm thêm 1 byte. Và lời giải thích của bạn bỏ qua dòng với tngay trước đó lJ.
Randomdude999

Ngoài ra, bạn có thể phát hiện lệnh "lặp mãi mãi" bằng cách kiểm tra xem đầu vào có chứa bất kỳ +ký tự nào không , tiết kiệm 1 byte vì bạn không cần phải giảm nó.
Randomdude999

0

APL (Dyalog Unicode) , 39 byte SBCS

Tiền tố nặc danh lambda.

{'+'∊⍵:∇⍵⋄' '∊⍵:⌊2E31×?0'Hello World'}

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

{ "dfn"; là đối số:

'+'∊⍵: if plus là thành viên của đối số:

  ∇⍵ đuôi tái diễn trên lập luận

' '∊⍵ nếu không gian là thành viên của đối số:

  ?0 float ngẫu nhiên (0 Hóa1)

  2E31× chia tỷ lệ thành (0 mộc2³¹)

   sàn nhà

'Hello World' khác trả về chuỗi


0

Hàng hóa BASIC (VIC-20, C64, TheC64Mini, v.v.) - 170 token hóa các byte BASIC

 0a%=32767:goS9:b$=leF(b$,len(b$)-1):ifb$="*"tH?"hello world
 1ifb$=" * "tH?int(rN(ti)*a%)
 2ifb$="*+*"tHfOi=.to1:i=.:nE
 3end
 9b$="":fOi=.to1:geta$:i=-(a$=cH(13)):b$=b$+a$:?a$;:nE:reT

Tôi nghĩ để làm điều này chính xác hơn, tôi sẽ phải đi sâu vào thế giới kỳ lạ của ngôn ngữ lắp ráp 6502, nhưng đây là bản thảo đầu tiên.

Điểm đầu tiên, INPUTtừ khóa trong Commodore BASIC bỏ qua khoảng trắng, do đó, thói quen phụ tại dòng 9là một cách nhanh chóng và bẩn thỉu để chấp nhận các mục nhập bàn phím bao gồm cả khoảng trắng.

Điểm thứ hai, số nguyên BASIC BASIC có phạm vi ký hiệu 16 bit, từ -32768 đến +32767 nguồn - vì vậy tôi đã giữ số ngẫu nhiên được tạo thành 0 - 32767


0

Wren ,143 135 byte

Tôi không phải là một tay golf giỏi ... RNG tạo ra cùng một giá trị mỗi lần vì nó là một trình tạo số giả ngẫu nhiên.

Fn.new{|a|
import"random"for Random
if(a=="*+*"){
while(1){}
}else System.write(a[0]==" "?Random.new(9).int((1<<31)-1):"Hello World")
}

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


0

JavaScript, 63 byte, không có đệ quy vô hạn

s=>s[1]?Math.random()*2**31|eval("while(s>'!');"):'Hello World'

mạng xấu nên không có liên kết TIO

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.