Czasami mam ochotę na hot doga (nie wszyscy) i dlatego robię jednego. Teraz zrobienie hot doga jest bardzo proste.
1) Umieść hot dogi we wrzącej wodzie
2) Poczekaj pewien czas (szczegółowo poniżej)
3) Zjedz hot doga po upływie określonego czasu.
Być może zauważyłeś, że powiedziałem
określony czas (szczegółowo poniżej)
i tak opiszę.
Wiele różnych marek ma wiele różnych zaleceń dotyczących tego, jak długo powinniśmy gotować hot dogi, ale uważam, że najlepiej jest gotować je dokładnie przez 4 minuty i 27 sekund (nie pytaj). Wypróbowałem wiele różnych timerów, ale odkryłem, że program, który stale wydaje, jest najlepszym sposobem na zwrócenie mojej uwagi.
TWOJE ZADANIE
Musisz stworzyć program, który wyświetli komunikat Not ready yet
dokładnie przez 4 minuty i 27 sekund. Po upływie tego czasu powinieneś generować dane Eat your hot dog
do końca czasu. Proszę nie brać żadnych danych.
JAK WYGRAĆ
Aby wygrać, musisz napisać najkrótszy kod w bajtach, ponieważ jest to golf golfowy
Not ready yet\nNot ready yet\n...
), czy możemy po prostu wyprowadzić go raz i zmienić wyjście, gdy minie 4m 27s?Odpowiedzi:
Scratch,
9378 bajtówKod:
Wygenerowane przez https://scratchblocks.github.io/ , który wydaje się być standardem w punktacji Scratch.
Dość oczywiste. Kiedy program się uruchomi, powiedz „Jeszcze nie gotowy”, dopóki licznik czasu (liczony w sekundach) nie przekroczy 267. Następnie uruchomi się nieskończona pętla, w której mówi
Eat your hot dog
.Jest to ciągłe wyjście, ponieważ
say
blok działa wiecznie, chyba że tysay []
lubsay
coś innego.źródło
Bash + coreutils, 50
Wyjaśnienie
Myślę, że dość oczywiste, ale na wszelki wypadek:
yes
Coreutil ciągły wielokrotnie wysyła wszystkie parametry przekazywane do niego linii poleceńtimeout
Coreutil przyjmuje parametr liczbowy limitu czasu, po którym następuje rozkaz. Polecenie jest uruchamiane, a następnie zabijane po upływie określonego czasu.źródło
Operacyjny język skryptowy Flashpoint , 67 bajtów
Zapisz jako
"hotdog.sqs"
(lub cokolwiek) w folderze misji i dzwoń za pomocą[] exec "hotdog.sqs"
.Wyjaśnienie:
To rozwiązanie powinno być szczególnie dobre w przyciąganiu uwagi, ponieważ
hint
polecenie wywołuje przylegający efekt dźwiękowy za każdym razem, gdy jest wywoływane, co brzmi bardzo irytująco, gdy jednoczesne dźwięki zostają przycięte w ciasną pętlę.źródło
JavaScript ES6, 76 bajtów
Wyjaśnienie
To drukuje coś na konsoli co 517 milisekund. Na początku drukuje
'Not ready yet'
i zmniejsza licznik. Po 517 iteracjach (= 517 * 517 = 267289 ms
) rozpoczyna drukowanie'Eat your hot dog'
.Test
źródło
setTimeout
wykonuje funkcję tylko raz. Wyzwaniem jest ciągłe wyprowadzanie ciągu, więcsetTimeout
byłoby to nieprawidłowe.(--_?
działa zamiast(--_>0?
(-2)_
będzie to zmniejszane za każdym razem, gdy coś zostanie wydrukowane, więc również spadnie poniżej zera. Wszystkie ujemne liczby całkowite są zgodne z prawdą, więc te też by się wydrukowały'Not ready yet'
(czego nie chcemy).PowerShell,
857159 bajtówPrawdopodobnie jest o wiele lepszy sposób, więc proszę o krytykę! To moja pierwsza próba golfa :)
EDYCJA Zmniejsz całe 14 bajtów dzięki AdmBorkBork! I zdecydowanie technika do zapamiętania!
EDYCJA 2 Kolejne 12 bajtów zniknęło dzięki Mattowi. Dwukrotne wywołanie zapisu również usunęło 2 spacje, bardzo pomocne!
źródło
1..276|%{}
zamiastfor
pętli z przyrostem. Sprawdź także inne wskazówki na tej stronie!write-output
cmdlet.Wariant języka skryptowego GameMaker wykorzystywany w modzie Nuclear Throne Together, 68 bajtów
Wyjaśnienie
0while
Analizuje jak0
,while
a więc jest ok)var
(tak jak w JS).Wariant GML używany w NTT wprowadza
wait
operatora, który wypycha wykonujący się „mikro-wątek” na listę dla określonej liczby ramek, a następnie wznawia. Zasadniczo coroutines.Gra jest taktowana zegarem 30 klatek na sekundę, więc 4m27s == 267s == 8010 klatek.
Jeśli masz zainstalowaną grę wideo + mod, możesz ją zapisać jako część
test.mod.gml
i zrobić,/loadmod test
aby ją wykonać, zalewając czat „raportami stanu”:źródło
Python 2, 92 bajty
Wypróbuj online!
źródło
while 1:print'ENaott yroeuard yh oyte td o g'[time()-t<267::2]
dla 90 bajtówwhile 1:print['Eat your hot dog','Not ready yet'][time()-t<267]
również wynosiłby 90 (będąc wyraźniejszym i nie drukując dodatkowej białej spacji).TI-Basic, 75 bajtów
Wyjaśnienie
źródło
Partia, 99 bajtów
Wsad nie ma arytmetyki daty, ponieważ prosty 267 sekundowy limit czasu jest niedozwolony, co mogę zrobić, to 267 sekundowych limitów czasowych.
źródło
C # 144 bajtów
Pełny program bez golfa:
Niestety nie mogłem użyć opcji
?:
-operator, ponieważ nie znalazłem sposobu na zatrzymanie przyrostui
bezif
.źródło
if(i++<267e3)
zaoszczędzić kilka bajtów.i
co milisekundę. A gdyint.MaxValue
zostanie osiągnięty, program albo zawiesi się, albo zacznieNot ready yet
ponownie drukować .C #,
174172147 bajtówZaoszczędzono 25 bajtów, „pożyczając” niektóre pomysły z odpowiedzi C # raznagul i łącząc je z sumą pierwszych n liczb!
Zaoszczędzono 2 bajty, wykorzystując sumę pierwszych n liczb lewy dla utraty precyzji 185 milisekund.
Program bez golfa:
Wyjaśnienie:
Ponieważ całkowity czas oczekiwania jest ustalony na 267 sekund, można uznać tę liczbę za teleskopową sumę pierwszych n liczb naturalnych
n * (n + 1) / 2
, która musi wynosić 267000 milisekund.Jest to równoważne z
n^2 + n - 534000 = 0
.Rozwiązując to równanie drugiego zamówienia,
n1 = 730.2532073142067
,n2 = -n1
. Oczywiście tylko pozytywne rozwiązanie jest akceptowane i może być przybliżone jako 730 .Całkowity czas można obliczyć jako
730 * (730 + 1) / 2 = 266815 milliseconds
. Niedokładność wynosi 185 milisekund , niezauważalna dla ludzi. Kod sprawi teraz, że główny (i tylko) wątek śpi przez 1 milisekundę, 2 milisekundy i tak dalej do 730, więc całkowity okres uśpienia wynosi ~ 267 sekund.Aktualizacja:
Logikę programu można jeszcze bardziej uprościć - w zasadzie musi on stale wyświetlać komunikat i czekać określony czas, aż przełączy się na drugą wiadomość.
Komunikat można zmienić za pomocą operatora trójskładnikowego, aby sprawdzić upływ określonego czasu (~ 267 sekund).
Aspekt czasowy jest kontrolowany przez użycie rosnącego licznika i wstrzymanie wątku wykonania.
Ponieważ jednak zmienna licznika nadal rośnie w nieskończoność, bez żadnych warunków sprawdzania jej wartości, można spodziewać się przepełnienia liczb całkowitych w pewnym momencie, gdy komunikat powróci do
Not ready yet
.Można dodać warunek w celu wykrycia i złagodzenia problemu poprzez przypisanie wartości dodatniej większej niż 730, gdy nastąpi przepełnienie - jak
i=i<1?731:i
wfor
pętli. Niestety kosztuje to 11 dodatkowych bajtów:Kluczem jest tutaj użycie wartości licznika w milisekundach, aby znacznie opóźnić moment przepełnienia.
Czas do przepełnienia można obliczyć zgodnie ze
sum(1..n)
wzorem, w którym n = maksymalna 32-bitowa liczba całkowita ze znakiem w języku C # (i .NET Framework) lub 2 ^ 31 - 1 = 2147483647:2 147 483 647 * 2 147 483 648 / 2 = 2,305843008 x 10^18 milliseconds = 2,305843008 x 10^15 seconds = 26 687 997 779 days = ~73 067 755 years
Po 73 milionach lat może nie mieć znaczenia, czy pojawi się usterka w systemie - hot dog, głodny PO i może sama rasa ludzka już dawno minęła.
Poprzednia wersja (172 bajty):
Program bez golfa:
Poprzednia wersja (174 bajtów):
Program bez golfa:
Alternatywnie, program może wyświetlić
Not ready yet
tylko raz, poczekać, aż upłynie określony czas, a następnie wyrejestrowaćEat your hot dog
, zastępując poprzednią wiadomość, będąc krótszym o kilka bajtów:C #, 145 bajtów
Program bez golfa:
źródło
Ruby,
807167 bajtówEdycja: Dzięki maniakom za golenie 13 całych bajtów
źródło
267.times{…}
?{
. To dałoby 67 bajtów.05AB1E,
432928 bajtów (Podziękowania dla Adnana)Nie działa online, ponieważ upłynął limit czasu. Offline będzie działać.
267F
: Pętla 267 razy…€–Žä‡«ª
: Pierwszy ciąg ze słownikiemw,
: Poczekaj sekundę i wydrukuj}[
: Zakończ pętlę if i rozpocznij pętlę nieskończoną“Eat€ž…ß‹·“
: Drugi ciąg ze słownikiem,
: Drukujźródło
“NotŽä‡«“
można zastąpić…€–Žä‡«ª
Python, 115 bajtów
Pierwszy raz próbuję czegoś takiego. Jestem również początkującym, więc tutaj jest w Pythonie 3 na 115 bajtów:
źródło
for
zakończy sięrange(267)
znacznie szybciej niż 4 minuty 27 sekund i rozwiązanie staje się nieważne. ☹JavaScript Blocks Editor dla micro: bit, 90 bajtów
Kod:
Możesz spróbować tutaj.
Zainspirowałem się odpowiedzią Scratch, aby rozwiązać zadanie za pomocą mojego micro: bit. Jedynym problemem jest to, że blok pauzy zaczyna się po wypisaniu pierwszego ciągu, więc musiałem zmniejszyć pauzę o 13 sekund.
Uwaga: stary Microsoft Block Editor dla micro: bit jest krótszy do utworzenia, ale wytwarza więcej kodu, więc w rzeczywistości jest dłuższy.
źródło
Na tej podstawie, że OP chce hot-dogi ciągle, aż do końca czasu - co rozumiem ze zdania:
Oto moja odpowiedź:
C ++,
187188224167 bajtówUsunięto białe znaki (167 bajtów):
czytelna forma (224 bajty):
Jeśli natomiast OP lubi swoje hot dogi z umiarem, to moja odpowiedź:
Usunięto białe znaki (158 bajtów):
czytelna forma (198 bajtów):
źródło
delay
?Excel VBA, 82 bajty
Anonimowy VBE natychmiast uruchamia funkcję okna, która nie przyjmuje danych wejściowych i wyjściowych, niezależnie od tego, czy powinieneś jeść hot dog do komórki
[A1]
.źródło
Excel VBA
12294 bajtyDzięki Taylor Scott
źródło
CDate("00:04:28")
możesz się skondensować#0:4:27#
, możesz zamienić swojąWhile ... Wend
pętlę naDo .. Loop
Pętlę i możesz zastąpić swojąif
klauzulęiif
klauzuląJavaScript, 83 bajtów
Alertz dla wszystkich!
źródło
267000
, aby267e3
i zapisać bajt.new Date
zamiastDate.now()
, a kolejne kilka, używającfor(d=new Date;;)alert...
PERL, 76 bajtów
źródło
PHP 88 bajtów
źródło
Eat your hot dog
do końca czasu.” Musisz więc powtórzyć również drugą wiadomość. Że doda do swojej długości, ale na szczęście nie jest miejsce, aby go skrócić:for($t=267;$t--;sleep(1))echo"Not ready yet";for(;;)echo"Eat your hotdog";
. Nawiasem mówiąc, uruchamianie kodu zphp -r
jest akceptowane, więc nie trzeba tagów PHP (zwłaszcza nie zamykających, co w tym przypadku jest uważane za zły nawyk: „?>
Tag zamykający MUSI zostać pominięty w plikach zawierających tylko PHP” - PSR-2 ).REXX, 82 bajty
źródło
Java 7, 152 bajty
Wyjaśnienie:
źródło
PHP, 68 bajtów
ciągła wydajność;
←
to ASCII 10 = LF. Uruchom z-r
.wyjście jednorazowe, 50 bajtów
gdzie
←
jest ASCII 13 = CR. Zapisz do pliku lub uruchom potokowanie.źródło
RBX.Lua , 69 bajtów
RBX.Lua jest językiem używanym na ROBLOX.com . Jest to zmodyfikowana wersja Lua 5.1 z wbudowaną funkcją „Czekaj”. Powyższy kod jest dość zrozumiały, poniżej znajduje się bardziej czytelna wersja:
Kod nieprzerwanie wysyła komunikat „Jeszcze niegotowy” do STDOUT przez 267 sekund (4 minuty 27 sekund), a następnie wypisuje „Zjedz hot doga”.
źródło
C - 130 bajtów
Może być nieco krótszy (128 bajtów), ale pomyślałem, że fajniej jest zastąpić „Niegotowy”
źródło
#include<unistd.h>
(wygeneruje ostrzeżenie, ale nadal się kompiluje). Robienie tego, co robisz (nadpisywanie poprzedniej wiadomości) jest twoim prawem, ale ponieważ wyzwanie tak naprawdę nie wymaga tego, radzę nie robić tego. Pozwoliłoby ci to zrobićint main(){puts("Not ready yet");sleep(267);puts("Eat your hot dog");}
(bez uwzględnienia, nie są potrzebne) - ale oczywiście nie ma obowiązku.VBA, 126 bajtów
źródło
Python 2.7,
9088 bajtówźródło