Większość z nas, zagubionych fanów, pamięta komputer, na którym Desmond musiał pisać znaki „4 8 15 16 23 42” co 108 minut, inaczej świat się skończy (a może tak?).
Wyzwaniem jest tutaj stworzenie programu, który zrobiłby to samo, wymagając, aby co 108 sekund wprowadzano dane wejściowe 4 8 15 16 23 42
lub wyświetlał komunikat
Sorry, the world has ended with status code -1
Powinien ostrzec użytkownika po 100 sekundach, że musi wprowadzić numer wraz z wiadomością
Enter, Quick!
Program musi być w stanie odczytać dane wejściowe w dowolnym momencie i jeśli jest to prawidłowe dane wejściowe, zresetuje licznik czasu. Jeśli podano nieprawidłowe dane, nic się nie dzieje.
Program powinien działać bez końca. Tak wygląda oś czasu po ostatnim prawidłowym wejściu
Od 0 do 99 sekund: brak wyjścia
Na 100 sekund: Enter, Quick!
Na 108 sekund: Sorry, the world has ended with status code -1
.
To jest kod golfowy, więc wygrywa najkrótsza odpowiedź (w bajtach), która zrealizuje to zadanie! Powodzenia!
źródło
Odpowiedzi:
bash, 160 bajtów
Obecnie nie jestem pewien, jakie jest oczekiwane zachowanie po „skończeniu świata”.
Uruchom tak:
2>&-
jest wymagane do zignorowania STDERR, co jest domyślnie dozwolone .źródło
JavaScript nowoczesnej przeglądarki,
252247242 bajtówInstrukcje: uruchom to w konsoli pustej karty, kliknij dokument, aby uzyskać fokus i zacznij wielokrotnie pisać ciąg. Tak długo, jak dobrze sobie radzisz, nie otrzymasz żadnych informacji zwrotnych. Odśwież i zmień 1e5 na 1e4, aby uczynić rzeczy bardziej interesującymi.
źródło
Groovy, 244 lub 228 bajtów
Źle pamiętałem, że Java ma metodę nextLine, która wymagała argumentu, jak długo trzeba czekać, więc pomyślałem, że będzie to łatwe. Nie mogłem znaleźć metody, która to zrobiłaby, więc zaimplementowałem to z dwoma wątkami. To trochę nieporęczne. No cóż.
Zakłada się, że właściwym zachowaniem dla zakończenia świata jest zakończenie procesu z kodem statusu -1. Jeśli zamierzonym zachowaniem jest ciągłe zapętlenie i oczekiwanie, że siła zewnętrzna zakończy świat (a przez to program),
;System.exit(-1)
część można pominąć, aby zaoszczędzić 16 bajtów. TakOryginalnie napisałem to, aby użyć hashCode ciągu, ale to skończyło się dłużej niż dokładne porównanie z osadzeniem ciągu, ponieważ
hashCode
jest długie.źródło
APL (Dyalog Unicode) , 144 bajty SBCS
Jak się okazuje, obie strony korzystają z APL…
Wypróbuj online!
:For t:in 100 8
pętli dwukrotnie, raz zt
(timput) jest100
a następniet
jako8
::For s:In⍳t
dlas
(econds)1
poprzez i wszystkich ɩ ndices ażt
⎕RTL←1
ustaw R esponse T ime L imit na 1 (sekundę){
…}
Zastosuj do tego następującą anonimową lambdę (chociaż ten argument nie jest używany)1E3::
poniżej, jeśli wystąpi jakiś wyjątek:⍬
powrót[]
⋄
próbować:⍕4 8 15 16 23 42
skreślić wymagane liczby⍞≡
monituj o wprowadzenie i porównaj z tym (daje 0 lub 1)⍳
Pierwsze że wiele ɩ ndices ([]
lub [1] `→
przejdź do tej linii (1 jeśli[1]
, kontynuuj w następnej linii jeśli[]
):End
koniec wewnętrznej pętli; przejdź do następnej sekundy bieżącego limitu czasut=3
czy to jest drugi limit czasu (0 lub 1)?…
⌽⍨
Obróć o tyle kroków:'Enter, Quick!' 'Sorry, the world has ended with status code -1'
niejawnie wydrukuj odpowiedni tekst⊃
ujawniać (drukować bez spacji początkowych i końcowych):End
koniec zewnętrznej pętli: po ostrzeżeniu pętla; po wydrukowaniu „Przepraszamy…”, kontynuuj programźródło
C ++ (gcc) , 395 bajtów
Kompilacja w systemie Linux wymaga
-pthread
przełącznika. MinGW robi to bez.Wypróbuj online!
źródło