Schreiben Sie einen Dolmetscher für *

20

Die Aufgabe ist einfach. Schreiben Sie einen Dolmetscher für die Sprache * .

Hier ist ein größerer Link zum Wiki.

Es gibt nur drei gültige * Programme:

  • * Druckt "Hallo Welt"
  •  *  Druckt eine Zufallszahl zwischen 0 und 2.147.483.647
  • *+* Läuft für immer.

Der dritte Fall muss eine Endlosschleife gemäß den Angaben in dieser Frage sein

Eingang:

  • Die Eingabe kann nach unseren Standard-E / A-Regeln über jede akzeptable Eingabemethode erfolgen
  • Es wird immer eines der oben genannten Programme sein

Ausgabe:

  • Der erste Fall sollte exakt Hello Worldmit oder ohne Zeilenumbruch gedruckt werden .
  • Wenn im zweiten Fall das ganzzahlige Maximum Ihrer Sprache kleiner als 2.147.483.647 ist, verwenden Sie das ganzzahlige Maximum Ihrer Sprache
  • Der erste und der zweite Fall können nach unseren Standard-E / A-Regeln mit jeder akzeptablen Ausgabe gedruckt werden.
  • Der dritte Fall sollte keine Ausgabe geben.

Wertung:

Da es sich um , die kürzeste Antwort, in Bytes, gewinnt.

TheOnlyMrCat
quelle
7
Wenn Sie zwischen 0und sagen 2,147,483,647, ist das inklusive oder exklusiv? (ZB ist 0eine gültige Ausgabe?)
Chas Brown
7
Das Ändern der Spezifikation nach dem Posten einer Herausforderung und dem Ungültigmachen vorhandener Lösungen erfolgt automatisch -1durch mich.
Shaggy
2
Gibt es für Sprachen, die keine integrierte Methode zum Generieren einer Zufallszahl haben, eine akzeptable Methode, um die Anforderung "Drucken einer Zufallszahl" zu erfüllen?
Tanner Swett
2
Wenn die Ganzzahlen unserer Sprache kein oder ein höheres Maximum haben, können wir eine höhere Obergrenze verwenden?
Jonathan Allan
7
@Shaggy Ich sehe keine Regeländerungen im Wiki für die Frage, nur ein Leerzeichen für ein nicht unterbrechendes Leerzeichen (überprüfen Sie die Markdown-Registerkarte), weil der SE-Markdown-Renderer es nicht gerendert hat, sondern die ursprüngliche Revision betrachtet , es ist klar, dass es normale Leerzeichen sein sollten, und der "Hack" wird nur für SE-Abschriften-Renderer-Probleme durchgeführt
Ferrybig

Antworten:

20

* , 0 Bytes


Da * keine Möglichkeit zum Lesen von Eingaben bietet, können Sie nach den Standardregeln festlegen, dass die Eingabe durch Verketten mit dem Programm erfolgen muss .

(... denke ich. Es gibt eine Bedingung, dass ich nicht den Repräsentanten habe, um zu überprüfen, dass mindestens doppelt so viele Upvotes wie Downvotes vorliegen.)

Henning Makholm
quelle
4
Ihr verknüpftes Meta ist in der Tat ein derzeit akzeptierter Site-Standard (+31 -7).
Jonathan Allan
2
@A__: Es sieht für mich so aus, als ob es speziell für die von jemandem vorgeschlagene Definition von 'Programmiersprache' entwickelt wurde ("Du kannst Hallo Welt schreiben!"). "Du kannst eine Endlosschleife schreiben!". "Du kannst ein Programm schreiben, das nicht funktioniert tu nicht immer das Gleiche! ").
Henning Makholm
Ich glaube, dass Malbolge dann auch technisch keine Programmiersprache ist.
Bob Jansen
1
Malbolge ist die Programmiersprache für endliche Automaten wie * und zum Beispiel Befunge-93. Daher ist Malbolge eine formale Programmiersprache, die mit * identisch ist, und technisch gesehen mit rekursiv aufzählbaren Sprachen, wenn es um die Definition von Programmiersprachen geht (obwohl formale Sprachen weniger mächtig sind).
Krzysztof Szewczyk
Ablehnung von mir, denn ehrlich gesagt ist diese Antwort so langweilig, dass es sich tatsächlich bereits um eine Standard-Lücke handelt , auch wenn wir die Frage ignorieren, ob * eine Programmiersprache ist
AlienAtSystem
8

R , 69 Bytes

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

Probieren Sie es online!

switchversucht, mit den benannten Argumenten übereinzustimmen, und wählt, wenn keine Übereinstimmung vorliegt, das erste unbenannte Argument nach dem ersten aus, in diesem Fall die Endlosschleife repeat{}.

Giuseppe
quelle
6

Jelly ,  21 bis  20 Bytes

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

Ein monadischer Link, der eine Liste von Zeichen akzeptiert.

Probieren Sie es online!

vL’... funktioniert auch (siehe unten).

Wie?

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

Alternative

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)
Jonathan Allan
quelle
5

C (gcc) , 66 63 Bytes

Danke an attinat für die -3 Bytes.

Ich muss nur das zweite Zeichen überprüfen: Wenn das LSB gesetzt ist, ist es ein +(daher ist das Programm " *+*") und das Programm wiederholt sich. Wenn es danach ein ist NUL, war das Programm " *" und wir zeigen an Hello World; Andernfalls wird ein zufälliger Wert angezeigt ("  * ", die einzige andere verbleibende Option).

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

Probieren Sie es online!

ErikF
quelle
63 Bytes
Attinat
Rasieren Sie ein Byte:f(char*s){*++s&1?f(s-1):printf(*s?"%d":"Hello World",rand());}
Roman Odaisky
Pedantische Anmerkung: Es randwird nicht garantiert, dass ein ausreichend großer Wert zurückgegeben wird. RAND_MAXund INT_MAXsind nicht auf die gleiche sein garantiert (und nicht auf realen Welt Compiler, zB Visual Studio RAND_MAXist 32767, während INT_MAXist [auf modernen x86 - basierten Systemen] der 2147483647Wert in der OP Frage angegeben).
ShadowRanger
@ShadowRanger das ist völlig richtig, aber wenn man bedenkt, dass> 90% aller C-basierten CGCC-Einträge auf undefiniertem und nicht spezifiziertem Verhalten beruhen, mache ich mir darüber keine Sorgen! Ich hatte auch keine Lust, heute eine Code-Golf-LCG zu implementieren. :-)
ErikF
5

Python 2 , 103 93 89 87 Bytes

Ich kombinierte meine frühere Antwort mit Chas Browns die Antwort und bekam etwas ein paar Bytes kürzer.

Die Zufallszahl liegt zwischen 0 und 2 ** 31-1 einschließlich.

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

Probieren Sie es online!

Vorherige Versionen:

103 Bytes

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

93 Bytes

from random import*
i=cmp(input(),'*')
while i>0:1
print["Hello World",randint(0,2**31-1)][i]
mbomb007
quelle
Speicher 2 Bytes durch den Ersatz randint(0,2**31-1)mit randrange(2**31).
Chas Brown
while'*'<ispeichert 2
Jonathan Allan
Speichern Sie ein anderes Byte , indem randrange(2**31)auf getrandbits(31)(letztere zurückkehrt long, nicht int, sondern printwird die strDruckform, nicht die reprForm, so dass die hinteren Lnicht da sein wird).
ShadowRanger
Relativ unerfahren mit der Site, daher schnelle Klärung: Dürfen Sie verlangen, dass Ihre Eingabe zitiert wird? i=input()Funktioniert nur, wenn die Eingaben in Anführungszeichen gesetzt sind. Wenn Sie nur plain eingeben */ * /*+*, würde dies mit einem sterben SyntaxError(weil inputimplizit eingeschlossen eval). Sie müssten eingeben '*'/' * '/'*+*'(oder mit doppelten Anführungszeichen). Ich habe in den Standard-E / A-Regeln nichts Offensichtliches gesehen , was dies ermöglichen würde, was bedeuten könnte, dass Sie raw_input()vier Bytes kosten müssten .
ShadowRanger
@ShadowRanger input()nimmt einen String als Eingabe und wertet ihn aus. Ich füge der Eingabe nicht wirklich etwas hinzu, ich nehme lediglich eine Zeichenfolge als Eingabe, und Zeichenfolgen haben Anführungszeichen. Dies ist ziemlich normal, genauso wie ich ein Array wie [1,2,3]anstelle eines durch Trennzeichen getrennten Strings nehmen kann, den ich dann teilen und analysieren muss. Ziel der Site ist es nicht, Eingaben streng zu machen, sondern die Ein- / Ausgabe zu vereinfachen, damit wir den Code auf die jeweilige Herausforderung konzentrieren können.
mbomb007
5

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

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

-1 Byte mit Flags

Probieren Sie es online!

Antwortverlauf

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

Probieren Sie es online!

Verkürzt Hello Worldauf Wörterbuchzeichenfolge

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

Probieren Sie es online!

Ich war immer wieder erstaunt über die Kraft von Keg. Credits an Benutzer EdgyNerd für ein weiteres Byte gespeichert.

Frühere Versionen

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

Probieren Sie es online!

Gutschrift an Benutzer A__ für das zusätzlich gespeicherte Byte.

Alte Version

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

Im Wesentlichen nimmt das Eingabeprogramm und:

  • Überprüft, ob die Eingabelänge 1 ist, und gibt "Hello World" aus, wenn dies zutrifft
  • Prüft, ob das letzte Zeichen ein Leerzeichen ist, und gibt eine Zufallszahl aus
  • Ansonsten läuft eine Endlosschleife

Dann drucken Sie implizit den Stapel.

?                               #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 Bytes gespart aufgrund der Tatsache, dass Hallo Welt keine Interpunktion benötigt.

Probieren Sie es online! Alte Version

Probieren Sie es online! Neue Version

Jono 2906
quelle
Sie können 4 Bytes abschneiden, Sie brauchen kein Komma oder Ausrufezeichen in "Hello World".
TheOnlyMrCat
1
Jetzt muss ich eine andere unpopuläre Sprache lernen, um die Herausforderungen hier normal zu beantworten.
A
1
-1 Bytes: TIO . Ich bin froh, dass ich im Keg nicht die Fähigkeit zum Golfen verloren habe.
A
@A__ Genießen Sie es, wenn Keg auf TIO ist?
Jono 2906
2
24 Bytes :)
EdgyNerd
3

Befunge-93 , 54 Bytes

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

Probieren Sie es online!

Kommentiert:

~"*"-                      _                ~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

Die Zufälligkeit ist nicht einheitlich. Bei jedem Inkrement gibt es eine 50% ige Chance, das Inkrementieren zu beenden.

negative sieben
quelle
3

Japt , 22/25 Bytes

Die erste Lösung ist für die ursprüngliche Spezifikation, die *<space>als zweites Programm verwendet wurde, und die andere für die aktualisierte Spezifikation, in die sie willkürlich geändert wurde <space>*</space>, mit Dank an EoI für die vorgeschlagene "Korrektur".

Beide werfen einen Überlauffehler auf, wenn sie in die Endlosschleife des dritten Programms eintreten, aber theoretisch mit genügend Speicher (den wir für die Zwecke des annehmen können ) würde dies für immer funktionieren.

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

Versuchen Sie Programm 1
Versuchen Sie Programm 2
Versuchen Sie Programm 3

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

Versuchen Sie Programm 1
Versuchen Sie Programm 2
Versuchen Sie Programm 3

Zottelig
quelle
Ich denke, das zweite Programm ist "[LEERTASTE] * [LEERTASTE]", nicht "[LEERTASTE] *", also funktioniert Ihr Programm nicht
Verkörperung der Ignoranz
@EmbodimentofIgnorance, an der Zeit , die ich geschrieben, das zweite Programm in der Spezifikation war *<space> . Keine Zeit zum Aktualisieren.
Shaggy
Sie können es in drei Bytes korrigieren, UÌ>Sanstatt ¢auf dem zweiten Ternär
Verkörperung der Ignoranz,
@ Downvoter, bitte haben Sie die Höflichkeit, einen Kommentar zu hinterlassen.
Shaggy
2

JavaScript (ES7), 66 Byte

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

Probieren Sie es online! (Hallo Welt)

Probieren Sie es online! (Zufallszahl)

Probieren Sie es online! (Endlosschleife)

Arnauld
quelle
Funktioniert x=(z=>x())&&x()-1 Byte im Endlosschleifencode nicht, wenn ein Browser ohne maximale Aufrufstapelgröße verwendet wird?
Geza Kerecsenyi
@GezaKerecsenyi Wir können sie selbst nur nennen ( wie diese ) , aber ich bin nicht sicher , das wäre akzeptabel.
Arnauld
Das ist fair. Ich frage mich, ob es da draußen einen undurchsichtigen Browser gibt, der einfach
weiterläuft
1
@Arnauld, theoretisch würde das bei unendlichem Speicher für immer laufen, was wir für Code Golf annehmen können.
Shaggy
2

Jelly , 23 21 Bytes

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

Probieren Sie es online!

Ein monadischer Link, der ein einzelnes Argument aufnimmt und zurückkehrt Hello World , eine zufällige 31-Bit-Ganzzahl oder eine Endlosschleife gemäß der Spezifikation.

Alle Optionen: * * *+*

Erläuterung

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"
Nick Kennedy
quelle
2

Python 2 , 91 89 88 Bytes

from random import*
def f(p):
 while'*'<p:p
 print['Hello World',getrandbits(31)][p<'!']

Probieren Sie es online!

2 Bytes dank Jonathan Allan ; 1 Byte Danke an ShadowRanger .

Chas Brown
quelle
while'*'<pspart 2
Jonathan Allan
getrandbits(31)Speichert ein Byte über randrange(2**31).
ShadowRanger
Nett! Wussten Sie nicht über getrandbits ...
Chas Brown
1

Kohle , 30 Bytes

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

Probieren Sie es online! Link ist eine ausführliche Version des Codes. Missbrauch des Standardeingabeformats von Charcoal, das bei nur einer Zeile in Leerzeichen aufgeteilt wird, sodass die Zufallszahleneingabe tatsächlich wie drei Eingaben aussieht. Erläuterung:

W№θ*

Wiederholen, während die erste Eingabe a enthält *.

F⁼θ*

Wenn die erste Eingabe nur eine *...

≔Hello Worldθ

... dann ersetzen Sie es durch Hello World , wodurch die Schleife beendet wird. *+*wird nicht ersetzt, was zu einer Endlosschleife führt.

∨θ

Wenn der erste Eingang nicht leer ist, geben Sie ihn aus.

I‽X²¦³¹

Ist es jedoch leer, wird eine zufällige Ganzzahl im gewünschten Bereich ausgegeben.

Neil
quelle
1

Add ++ , 78 Bytes

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

Probieren Sie es online!

Erläuterung

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
Caird Coinheringaahing
quelle
1

Brachylog , 26 23 Bytes

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

Probieren Sie es online!

Nimmt das Programm als Zeichenfolge durch die Eingabevariable und ignoriert die Ausgabevariable. Die Garantie, dass die Eingabe immer nur eines der drei gültigen Programme ist, wird in hohem Maße ausgenutzt: Jede Eingabe der Länge drei verhält sich wie entweder " * "oder "*+*"abhängig davon, ob das erste Zeichen ein Leerzeichen ist oder nicht, und jede andere Eingabe verhält sich wie "*".

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!".
Nicht verwandte Zeichenfolge
quelle
Ups, falsches "Hello World" - Behebung jetzt
Unrelated String
1

PHP , 51 Bytes

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

Probieren Sie es online! (Hallo Welt)

Probieren Sie es online! (Zufallszahl)

Probieren Sie es online! (Endlosschleife)

Nimmt zweites Zeichen von Eingabe die sein kann '', '*'oder '+'. Im Fall eines '+'der '*'<'+'wahr ist, und die Schleife wird unendlich sein, sonst, nach der Schleife, „Hallo Welt“ oder eine Zufallszahl gezeigt. Der rand()gibt automatisch eine Zahl zwischen 0 und getrandmax()den RAND_MAXin der Standard-C-Bibliothek definierten Verwendungszwecken aus und ist standardmäßig 2147483647auf den meisten Plattformen / Umgebungen, einschließlich TIO, verfügbar.

Night2
quelle
1

05AB1E , 21 Bytes

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

Probieren Sie es online aus.(HINWEIS: Die Zufallsgenerierung ist bei großen Listen ziemlich langsam, daher kann es eine Weile dauern, bis das Ergebnis angezeigt wird.)

Erläuterung:

'*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)

Sehen Sie diese 05AB1E Spitze von mir (Abschnitt Wie das Wörterbuch benutzen? ) Zu verstehen , warum ”Ÿ™‚ïist "Hello World".

Kevin Cruijssen
quelle
1

Pyth , 32 Bytes

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

Probieren Sie es online!

Erklärung (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"
ar4093
quelle
Dies gibt eine Zahl zwischen 0 und 2 ^ 32 aus, nicht zwischen 0 und 2 ^ 31. Ein kürzerer Weg zum Schreiben hC*4\ÿist ^2 32, aber damit die Lösung korrekt ist, sollten Sie ^2 31stattdessen verwenden. Verwenden Sie zstattdessen auch Jw, um 1 Byte mehr zu sparen. Und Ihre Erklärung überspringt die Zeile mit tdirekt vor lJ.
randomdude999
Sie können den Befehl "loop forever" auch erkennen, indem Sie prüfen, ob die Eingabe ein +Zeichen enthält . Dadurch wird 1 Byte gespart, da Sie es nicht dekrementieren müssen.
randomdude999
0

APL (Dyalog Unicode) , 39 Byte SBCS

Anonymes Präfix Lambda.

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

Probieren Sie es online!

{ "dfn"; ist das Argument:

'+'∊⍵: if plus ist Mitglied des Arguments:

  ∇⍵ Schwanz rekursiv auf Argument

' '∊⍵ Wenn Space ein Mitglied des Arguments ist:

  ?0 zufälliger float (0–1)

  2E31× skaliere auf (0–2³¹)

   Fußboden

'Hello World' Andernfalls wird die Zeichenfolge zurückgegeben

Adam
quelle
0

Commodore BASIC (VIC-20, C64, TheC64Mini usw.) - 170 tokenize BASIC-Bytes

 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

Ich denke, um das genauer zu machen, muss ich in die seltsame Welt der 6502-Assemblersprache eintauchen, aber dies ist ein erster Entwurf.

Erster Punkt, das INPUTSchlüsselwort in Commodore BASIC ignoriert Leerzeichen, also die Unterroutine in Zeile9 eine schnelle und fehlerhafte Möglichkeit darstellt, Tastatureingaben einschließlich Leerzeichen zu akzeptieren.

Der zweite Punkt, Commodore BASIC-Ganzzahlen, haben einen Bereich von 16-Bit-Vorzeichen, also -32768 bis +32767 Quelle - also habe ich die generierte Zufallszahl auf 0 - 32767 einschließlich belassen

Shaun Bebbers
quelle
0

Zaunkönig ,143 135 Bytes

Ich bin kein guter Golfer ... Das RNG generiert jedes Mal den gleichen Wert, weil es ein Pseudozufallszahlengenerator ist.

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

Probieren Sie es online!

EIN
quelle
0

JavaScript, 63 Bytes, nicht unendlich rekursiv

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

schlechtes Netzwerk, also keine TIO-Verbindung

l4m2
quelle