Die meisten von uns LOST-Fans erinnern sich an den Computer, an dem Desmond alle 108 Minuten die Zeichen "4 8 15 16 23 42" eingeben musste, damit die Welt untergeht (oder?).
Hier besteht die Herausforderung darin, ein Programm zu erstellen, das dasselbe tut, indem alle 108 Sekunden die Eingabe 4 8 15 16 23 42
eingegeben wird oder die Meldung angezeigt wird
Sorry, the world has ended with status code -1
Es sollte den Benutzer nach 100 Sekunden warnen, dass er eine Nummer mit der Nachricht eingeben muss
Enter, Quick!
Das Programm muss die Eingabe jederzeit lesen können und wenn es die richtige Eingabe ist, wird der Timer zurückgesetzt. Bei falscher Eingabe passiert nichts.
Das Programm sollte auf unbestimmte Zeit ausgeführt werden. So sieht die Timeline nach der letzten gültigen Eingabe aus
Von 0 bis 99 Sekunden: keine Ausgabe
Bei 100 Sekunden: Enter, Quick!
Bei 108 Sekunden:Sorry, the world has ended with status code -1
.
Dies ist Codegolf, daher gewinnt die kürzeste Antwort (in Bytes), die diese Aufgabe erfüllt! Viel Glück!
quelle
Antworten:
Bash, 160 Bytes
Ich bin mir derzeit nicht sicher, was das erwartete Verhalten ist, nachdem "die Welt geendet hat".
Laufen Sie wie folgt:
2>&-
ist erforderlich, um STDERR zu ignorieren, was standardmäßig zulässig ist .quelle
Modern-Browser JavaScript,
252247242 BytesAnleitung: Führen Sie dies in der Konsole einer leeren Registerkarte aus, klicken Sie auf das Dokument, um den Fokus zu erhalten, und geben Sie die Zeichenfolge wiederholt ein. Solange es dir gut geht, bekommst du überhaupt kein Feedback. Aktualisieren und ändern Sie 1e5 in 1e4, um die Dinge interessanter zu gestalten.
quelle
Groovy, 244 oder 228 Bytes
Ich habe mich fälschlicherweise daran erinnert, dass Java eine nextLine-Methode hat, bei der überlegt wurde, wie lange gewartet werden soll. Deshalb dachte ich, dass dies einfach sein würde. Ich konnte keine Methode finden, die dies tat, also implementierte ich dies mit zwei Threads. Es ist ein bisschen sperrig. Naja.
Dies setzt voraus, dass das ordnungsgemäße Verhalten für das Ende der Welt darin besteht, dass der Prozess mit dem Statuscode -1 beendet wird. Wenn das beabsichtigte Verhalten darin besteht, in einer Schleife weiterzumachen und zu erwarten, dass eine externe Kraft die Welt (und damit das Programm) beendet, kann das
;System.exit(-1)
Teil weggelassen werden, um 16 Bytes zu sparen. Yay.Ich habe dies ursprünglich geschrieben, um den Hashcode der Zeichenfolge zu verwenden, aber das ist länger als ein exakter Vergleich, der die Zeichenfolge einbettet, weil
hashCode
es lang ist.quelle
APL (Dyalog Unicode) , 144 Byte SBCS
Wie sich herausstellt, laufen auf beiden Seiten APL ...
Probieren Sie es online!
:For t:in 100 8
Schleife zweimal, einmal mitt
(timput) being100
und dann mitt
as8
::For s:In⍳t
fürs
(ekunden eingestellt)1
durch und alle ɩ ndices bist
⎕RTL←1
setzen die R esponse T ime L imit bis 1 (Sekunde){
…}
Wende das folgende anonyme Lambda darauf an (obwohl dieses Argument nicht verwendet wird)1E3::
im Folgenden, wenn eine Ausnahme auftritt:⍬
Rückkehr[]
⋄
Versuchen:⍕4 8 15 16 23 42
Stringifiziere die gewünschten Zahlen⍞≡
Eingabeaufforderung und vergleiche damit (ergibt 0 oder 1)⍳
das erste, was viele finden ([]
oder [1])→
gehe zu dieser Zeile (1 wenn[1]
, fahre in der nächsten Zeile fort wenn[]
):End
Ende der inneren Schleife; Fahren Sie mit der nächsten Sekunde des aktuellen Timeouts fortt=3
Ist dies die zweite Zeitüberschreitung (0 oder 1)?…
⌽⍨
Drehen Sie die folgenden Schritte so oft:'Enter, Quick!' 'Sorry, the world has ended with status code -1'
Drucken Sie implizit den entsprechenden Text aus⊃
enthüllen (zum Drucken ohne führende und nachfolgende Leerzeichen):End
Ende der äußeren Schleife: nach Warnung Schleife; Nach dem Ausdruck "Entschuldigung ..." fahren Sie mit dem Beenden des Programms fortquelle
C ++ (gcc) , 395 Bytes
Für die Kompilierung unter Linux ist der
-pthread
Switch erforderlich . MinGW verzichtet darauf.Probieren Sie es online!
quelle