Manchmal will ich einen Hot Dog (nicht wir alle) und mache mir einen. Nun, um einen Hot Dog zu machen, ist es sehr einfach.
1) Die Hot Dogs in kochendes Wasser legen
2) Warten Sie eine gewisse Zeit (siehe unten)
3) Essen Sie den Hot Dog, sobald die Zeit abgelaufen ist.
Sie haben vielleicht bemerkt, dass ich sagte
bestimmte Zeit (unten detailliert)
und so werde ich ins Detail gehen.
Viele verschiedene Marken haben viele verschiedene Empfehlungen, wie lange wir die Hot Dogs kochen sollen, aber ich habe festgestellt, dass es am besten ist, sie genau 4 Minuten und 27 Sekunden lang zu kochen (fragen Sie nicht). Ich habe viele verschiedene Timer ausprobiert, aber festgestellt, dass ein Programm, das kontinuierlich ausgegeben wird, der beste Weg ist, meine Aufmerksamkeit zu erregen.
DEINE AUFGABE
Sie müssen ein Programm erstellen, das die Nachricht Not ready yet
genau 4 Minuten und 27 Sekunden lang ausgibt . Nach Ablauf dieser Zeit sollten Sie Eat your hot dog
bis zum Ende der Zeit ausgeben . Bitte nehmen Sie keine Eingaben.
WIE GEWINNT MAN
Sie müssen den kürzesten Code in Bytes schreiben , um zu gewinnen, da dies ein Code-Golf ist
Not ready yet\nNot ready yet\n...
) oder können wir es einfach einmal ausgeben und die Ausgabe ändern, wenn die 4m 27s vorbei sind?Antworten:
Scratch,
9378 BytesCode:
Erstellt von https://scratchblocks.github.io/ , dem Standard für Scratch-Scoring.
Ziemlich selbsterklärend. Wenn das Programm startet, sagen Sie "Noch nicht bereit", bis der Timer (der in Sekunden gezählt wird) größer als 267 ist. Dann startet eine Endlosschleife, in der es heißt
Eat your hot dog
.Es ist eine kontinuierliche Ausgabe, da der
say
Block für immer ausgeführt wird, es sei denn, Siesay []
odersay
etwas anderes.quelle
Bash + Coreutils, 50
Erläuterung
Ziemlich selbsterklärend, denke ich, aber nur für den Fall:
yes
coreutil gibt kontinuierlich wiederholt alle Parameter aus, die ihm in der Befehlszeile übergeben wurdentimeout
coreutil akzeptiert einen numerischen Timeout-Parameter, gefolgt von einem Befehl. Der Befehl wird ausgeführt und nach dem angegebenen Timeout beendet.quelle
Operation Flashpoint- Skriptsprache, 67 Byte
Speichern Sie als
"hotdog.sqs"
(oder was auch immer) im Missionsordner und rufen Sie mit an[] exec "hotdog.sqs"
.Erläuterung:
Diese Lösung sollte besonders gut geeignet sein, um Ihre Aufmerksamkeit auf sich zu ziehen, da der
hint
Befehl bei jedem Aufruf einen anhaftenden Soundeffekt ausgibt, der sehr ärgerlich klingt, wenn die gleichzeitigen Sounds in einer engen Schleife abgeschnitten werden.quelle
JavaScript ES6, 76 Bytes
Erläuterung
Dies druckt alle 517 Millisekunden etwas auf die Konsole. Zuerst wird
'Not ready yet'
der Zähler gedruckt und verringert. Nach 517 Iterationen (= 517 * 517 = 267289 ms
) wird der Druckvorgang gestartet'Eat your hot dog'
.Prüfung
quelle
setTimeout
Führt die Funktion nur einmal aus. Die Herausforderung besteht darin, kontinuierlich eine Zeichenfolge auszugeben. DiessetTimeout
wäre ungültig.(--_?
funktioniert anstelle von(--_>0?
(-2)_
jedes Mal dekrementiert, wenn etwas gedruckt wird, so dass es auch unter Null geht. Alle negativen Ganzzahlen sind wahr, daher werden auch diese gedruckt'Not ready yet'
(was wir nicht wollen).Powershell,
857159 BytesEs gibt wahrscheinlich einen viel besseren Weg, also Kritik willkommen! Dies ist mein erster Golfversuch :)
EDIT unten ein ganzes 14 Bytes dank AdmBorkBork! Und definitiv eine Technik zum Erinnern!
EDIT 2 Weitere 12 Bytes sind dank Matt weg. Nicht zweimal aufrufend schreibe auch 2 Leerzeichen entfernt, sehr hilfreich!
quelle
1..276|%{}
anstelle einerfor
Schleife mit einem Inkrement auszuführen . Schauen Sie sich auch einige andere Tipps auf dieser Seite an!write-output
Cmdlet erforderlich.GameMakers Skriptsprachenvariante, die in der Nuclear Throne Together-Modifikation verwendet wird, 68 Byte
Erläuterung
0while
analysiert als0
,while
und somit ist ok)var
(wie bei JS) .Die in NTT verwendete GML-Variante führt ein
wait
Operator ein, der den ausführenden "Mikrothread" in eine Liste für die angegebene Anzahl von Frames schiebt und anschließend fortsetzt. Im Grunde genommen Coroutinen.Das Spiel ist mit 30 fps getaktet, also 4m27s == 267s == 8010 Frames.
Wenn du den videogame + mod installiert hast, kannst du das als einiges speichern
test.mod.gml
und es/loadmod test
ausführen , indem du den Chat mit "Statusberichten" überflutest:quelle
Python 2, 92 Bytes
Probieren Sie es online!
quelle
while 1:print'ENaott yroeuard yh oyte td o g'[time()-t<267::2]
für 90 Byteswhile 1:print['Eat your hot dog','Not ready yet'][time()-t<267]
wäre auch 90 (während es klarer ist und keinen zusätzlichen Leerraum druckt ).TI-Basic, 75 Bytes
Erläuterung
quelle
Batch, 99 Bytes
Batch hat keine Datumsberechnung, so dass eine einfache Zeitüberschreitung von 267 Sekunden nicht zulässig ist. Das Beste, was ich tun kann, ist eine Zeitüberschreitung von 267 Sekunden.
quelle
C # 144 Bytes
Ungolfed volles Programm:
Leider konnte ich den
?:
-operator nicht verwenden, da ich keine Möglichkeit gefunden habe, das Inkrementiereni
ohne den zu stoppenif
.quelle
if(i++<267e3)
, ein paar Bytes zu sparen.i
jede Millisekunde erhöht . Und sobaldint.MaxValue
es erreicht ist, stürzt das Programm entweder ab oder startet den DruckvorgangNot ready yet
erneut.C #,
174172147 Bytes25 Bytes gespart durch "Ausleihen" einiger Ideen aus Raznaguls C # -Antwort und mit der Summe der ersten n Zahlen zusammengeführt wurden!
2 Bytes mit der Summe der ersten n Tricks für einen Genauigkeitsverlust von 185 Millisekunden gespart.
Ungolfed-Programm:
Erläuterung:
Da die Gesamtwartezeit mit 267 Sekunden fest codiert ist, kann man diese Zahl als teleskopische Summe der ersten n natürlichen Zahlen betrachten.
n * (n + 1) / 2
, die 267000 Millisekunden entsprechen müssen.Dies ist äquivalent zu
n^2 + n - 534000 = 0
.Durch diese Gleichung zweiter Ordnung zu lösen,
n1 = 730.2532073142067
,n2 = -n1
. Natürlich wird nur die positive Lösung akzeptiert und kann als 730 angenähert werden .Die Gesamtzeit kann wie folgt berechnet werden
730 * (730 + 1) / 2 = 266815 milliseconds
. Die Ungenauigkeit beträgt 185 Millisekunden und ist für den Menschen nicht wahrnehmbar. Der Code bewirkt nun, dass der Haupt-Thread (und nur dieser) für 1 Millisekunde, 2 Millisekunden usw. bis zu 730 Sekunden in den Ruhezustand wechselt, sodass die gesamte Ruhezeit ~ 267 Sekunden beträgt.Aktualisieren:
Die Programmlogik kann weiter vereinfacht werden - im Grunde muss eine Nachricht kontinuierlich angezeigt und eine bestimmte Zeit gewartet werden, bis zur zweiten Nachricht gewechselt wird.
Die Nachricht kann mithilfe eines ternären Operators geändert werden, um das Verstreichen der angegebenen Zeit (~ 267 Sekunden) zu überprüfen.
Der Timing-Aspekt wird gesteuert, indem ein zunehmender Zähler verwendet und der Ausführungsthread angehalten wird.
Da die Zählervariable jedoch unbegrenzt weiter ansteigt, ohne dass Bedingungen zur Überprüfung ihres Werts erfüllt sind, kann irgendwann ein ganzzahliger Überlauf erwartet werden, wenn die Nachricht auf zurückgesetzt wird
Not ready yet
.Eine Bedingung kann hinzugefügt werden, um das Problem zu erkennen und zu mindern, indem ein positiver Wert größer als 730 zugewiesen wird, wenn der Überlauf auftritt - wie
i=i<1?731:i
in derfor
Schleife. Leider kostet es 11 zusätzliche Bytes:Der Schlüssel hier ist die Verwendung des Zählerwerts in Millisekunden zu verwenden, um den Moment des Überlaufs stark zu verzögern.
Die Zeit bis zum Überlauf kann gemäß der
sum(1..n)
Formel berechnet werden, wobei n = der maximale vorzeichenbehaftete 32-Bit-Integer-Wert in C # (und .NET Framework) oder 2 ^ 31 - 1 = 2147483647 ist: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
Nach 73 Millionen Jahren ist es vielleicht egal, ob ein Fehler im System auftritt - der Hot Dog, der hungrige OP und vielleicht die Menschheit selbst sind längst verschwunden.
Vorherige Version (172 Bytes):
Ungolfed-Programm:
Vorherige Version (174 Bytes):
Ungolfed-Programm:
Alternativ kann das Programm auch
Not ready yet
nur einmal angezeigt werden. Warten Sie, bis die angegebene Zeit abgelaufen ist, und geben Sie es dann aus,Eat your hot dog
indem Sie die vorherige Nachricht überschreiben, während Sie einige Bytes kürzer sind:145 Bytes
Ungolfed-Programm:
quelle
Ruby,
807167 BytesEdit: Dank Manatwork für das Abschneiden von 13 ganzen Bytes
quelle
267.times{…}
?{
. Das würde 67 Bytes ergeben.05AB1E,
432928 Bytes (Dank an Adnan)Funktioniert nicht online, da es eine Zeitüberschreitung gibt. Offline wird es funktionieren.
267F
: 267-mal wiederholt…€–Žä‡«ª
: Erste Zeichenfolge mit Wörterbuchw,
: Warten Sie eine Sekunde und drucken Sie}[
: End if-Schleife und Endlosschleife starten“Eat€ž…ß‹·“
: Zweiter String mit Wörterbuch,
: Druckenquelle
“NotŽä‡«“
kann ersetzt werden durch…€–Žä‡«ª
Python, 115 Bytes
Ich habe zum ersten Mal so etwas ausprobiert. Ich bin auch ein Anfänger, also hier geht es in Python 3 für 115 Bytes:
quelle
for
Schleiferange(267)
viel schneller als 4 Minuten 27 Sekunden und die Lösung wird ungültig. ☹JavaScript Blocks Editor für Micro: Bit, 90 Bytes
Der Code:
Sie können es hier ausprobieren.
Ich habe mich von der Scratch-Antwort inspirieren lassen, die Aufgabe mit meinem Mikro-Bit zu lösen. Das einzige Problem ist, dass der Pause-Block nach der Ausgabe des ersten Strings startet, so dass ich die Pause um 13s reduzieren musste.
Hinweis: Der alte Microsoft Block Editor für micro: bit ist kürzer zu erstellen, produziert jedoch mehr Code und ist daher länger.
quelle
Auf der Grundlage, dass das OP ständig Hotdogs will, bis ans Ende der Zeit - was ich aus dem Satz verstehe:
Das ist meine Antwort:
C ++,
187188224167 BytesLeerzeichen entfernt (167 Bytes):
lesbare Form (224 Bytes):
Wenn OP dagegen seine Hotdogs in Maßen mag, dann ist dies meine Antwort:
Leerzeichen entfernt (158 Bytes):
lesbare Form (198 Bytes):
quelle
delay
?Excel VBA, 82 Bytes
Anonymous VBE bietet sofort eine Fensterfunktion, die keine Ein- und Ausgaben vornimmt, ob Sie Ihren Hot Dog in die Zelle essen sollen oder nicht
[A1]
.quelle
Excel VBA
12294 BytesVielen Dank, Taylor Scott
quelle
CDate("00:04:28")
kann kondensiert werden#0:4:27#
, können Sie Ihre ersetzenWhile ... Wend
Schleife mit einerDo .. Loop
Schleife und Sie können Ihre ersetzenif
Klausel mit eineriif
KlauselJavascript, 83 Bytes
Alertz für alle!
quelle
267000
zu267e3
und ein Byte speichern.new Date
anstelle vonDate.now()
und ein paar weitere verwenden.for(d=new Date;;)alert...
PERL, 76 Bytes
quelle
PHP 88 Bytes
quelle
Eat your hot dog
bis zum Ende der Zeit ausgeben .“ Sie müssen also auch die 2. Nachricht wiederholen. Das wird auf seine Länge hinzufügen, aber zum Glück gibt es Platz , es zu verkürzen:for($t=267;$t--;sleep(1))echo"Not ready yet";for(;;)echo"Eat your hotdog";
. Übrigens wird das Ausführen von Code mitphp -r
akzeptiert, daher werden keine PHP-Tags benötigt (insbesondere nicht das schließende, was in diesem Fall als schlechte Angewohnheit angesehen wird: "Das schließende?>
Tag MUSS in Dateien, die nur PHP enthalten, weggelassen werden" - PSR-2 ).REXX, 82 Bytes
quelle
Java 7, 152 Bytes
Erläuterung:
quelle
PHP, 68 Bytes
kontinuierliche Ausgabe;
←
ist ASCII 10 = LF. Laufen Sie mit-r
.einmalige Ausgabe, 50 Bytes
wo
←
ist ASCII 13 = CR. In Datei speichern oder mit Piping ausführen.quelle
RBX.Lua , 69 Bytes
RBX.Lua ist die Sprache, die auf ROBLOX.com verwendet wird . Es ist eine modifizierte Version von Lua 5.1, die eine eingebaute 'Wait'-Funktion bietet. Der obige Code ist ziemlich selbsterklärend, unten ist eine besser lesbare Version:
Der Code gibt 267 Sekunden (4 Minuten 27 Sekunden) lang kontinuierlich "Noch nicht bereit" in STDOUT aus , bevor "Eat your hot dog" ausgegeben wird.
quelle
C - 130 Bytes
Es könnte etwas kürzer sein (128 Byte), aber ich fand es besser, "Noch nicht fertig" zu überschreiben
quelle
#include<unistd.h>
(es wird eine Warnung ausgegeben, aber immer noch kompiliert). Das zu tun, was Sie tun (die vorherige Nachricht zu überschreiben), ist Ihr Recht, aber da die Herausforderung nicht wirklich danach fragt, würde ich vorschlagen, es nicht zu tun. Dies würde es Ihnen ermöglichenint main(){puts("Not ready yet");sleep(267);puts("Eat your hot dog");}
(ohne Includes, sie werden nicht benötigt) - aber natürlich ohne Verpflichtung, dies zu tun.VBA, 126 Bytes
quelle
Python 2.7,
9088 Bytesquelle