Parfois, je me retrouve à vouloir un hot-dog (pas nous tous) et donc j'en fais un. Maintenant, pour faire un hot-dog, c'est très simple.
1) Mettez les hot-dogs dans de l'eau bouillante
2) Attendez un certain temps (détaillé ci-dessous)
3) Mangez le hot-dog une fois le temps écoulé.
Vous avez peut-être remarqué que j'ai dit
certain temps (détaillé ci-dessous)
et je vais donc détailler.
De nombreuses marques différentes ont de nombreuses recommandations différentes concernant la durée de cuisson des hot-dogs, mais j'ai trouvé préférable de les faire cuire pendant exactement 4 minutes et 27 secondes (ne demandez pas). J'ai essayé de nombreuses minuteries différentes, mais j'ai découvert qu'un programme qui sort continuellement est le meilleur moyen d'attirer mon attention.
TA TÂCHE
Vous devez créer un programme qui produira le message Not ready yet
pendant exactement 4 minutes et 27 secondes. Une fois ce temps écoulé, vous devez sortir Eat your hot dog
jusqu'à la fin des temps. Veuillez ne prendre aucune entrée.
COMMENT GAGNER
Vous devez écrire le code le plus court en octets pour gagner car il s'agit d'un code-golf
Not ready yet\nNot ready yet\n...
) ou peut-on simplement le sortir une fois et changer la sortie une fois le 4m 27 terminé?Réponses:
Scratch,
9378 octetsCode:
Généré par https://scratchblocks.github.io/ , qui semble être la norme pour la notation Scratch.
Assez explicite. Lorsque le programme démarre, dites "Pas encore prêt" jusqu'à ce que la minuterie (qui est comptée en secondes) soit supérieure à 267. Commence alors une boucle infinie où il est dit
Eat your hot dog
.Il s'agit d' une sortie continue, car le
say
bloc s'exécute indéfiniment, sauf si voussay []
ousay
quelque chose d'autre.la source
Bash + coreutils, 50
Explication
Je pense assez explicite, mais juste au cas où:
yes
coreutil émet en continu de façon répétée tous les paramètres qui lui sont transmis sur la ligne de commandetimeout
coreutil prend un paramètre de délai d'attente numérique suivi d'une commande. La commande est exécutée, puis supprimée après le délai spécifié.la source
Opération FlashpointLangage de script , 67 octets
Enregistrer sous
"hotdog.sqs"
(ou autre) dans le dossier de mission et appelez avec[] exec "hotdog.sqs"
.Explication:
Cette solution devrait être particulièrement efficace pour attirer votre attention, car la
hint
commande joue un effet sonore accrocheur à chaque appel, ce qui semble très ennuyeux lorsque les sons simultanés sont coupés en boucle serrée.la source
JavaScript ES6, 76 octets
Explication
Cela imprime quelque chose sur la console toutes les 517 millisecondes. Au début, il imprime
'Not ready yet'
et diminue le compteur. Après 517 itérations (= 517 * 517 = 267289 ms
), l'impression démarre'Eat your hot dog'
.Tester
la source
setTimeout
n'exécute la fonction qu'une seule fois. Le défi est de sortir en continu une chaîne, cesetTimeout
serait donc invalide.(--_?
fonctionne au lieu de(--_>0?
(-2)_
sera pas décrémenté chaque fois que quelque chose sera imprimé, il passera donc également en dessous de zéro. Tous les entiers négatifs sont véridiques, donc ceux-ci s'imprimeraient'Not ready yet'
également (ce qui n'est pas ce que nous voulons).Powershell,
857159 octetsIl y a probablement une bien meilleure façon, donc critique bien accueillie! Ceci est ma première tentative de golf :)
EDIT vers le bas tout un 14 octets grâce à AdmBorkBork! Et certainement une technique à retenir!
EDIT 2 Encore 12 octets disparus grâce à Matt. Ne pas appeler écrire deux fois a également supprimé 2 espaces, très utile!
la source
1..276|%{}
au lieu d'unefor
boucle avec un incrément. Découvrez également d'autres conseils sur cette page!write-output
applet de commande.Variante du langage de script de GameMaker utilisée dans le mod Nuclear Throne Together, 68 octets
Explication
0while
analyse comme0
,while
et est donc correct)var
(comme avec JS).La variante GML utilisée dans NTT introduit un
wait
opérateur, qui pousse le "micro-thread" d'exécution à une liste pour le nombre spécifié de trames, reprenant ensuite. Coroutines, en gros.Le jeu est cadencé à 30fps, donc 4m27s == 267s == 8010 images.
Si vous avez installé le jeu vidéo + le mod, vous pouvez l'enregistrer comme certains
test.mod.gml
, et le faire/loadmod test
pour l'exécuter, inondant le chat de "rapports d'état":la source
Python 2, 92 octets
Essayez-le en ligne!
la source
while 1:print'ENaott yroeuard yh oyte td o g'[time()-t<267::2]
pour 90 octetswhile 1:print['Eat your hot dog','Not ready yet'][time()-t<267]
serait également 90 (tout en étant plus clair et sans imprimer l'espace blanc supplémentaire).TI-Basic, 75 octets
Explication
la source
Lot, 99 octets
Le lot n'a pas d'arithmétique de date, donc comme un simple délai d'attente de 267 secondes n'est pas autorisé, le mieux que je puisse faire est de 267 délais d'attente d'une seconde.
la source
C # 144 octets
Programme complet non golfé:
Malheureusement, je n'ai pas pu utiliser
?:
-operator car je n'ai pas trouvé de moyen d'arrêter l'incrémentationi
sansif
.la source
if(i++<267e3)
pour économiser quelques octets.i
toutes les millisecondes. Et une foisint.MaxValue
atteint, le programme plante ou recommence à imprimerNot ready yet
.C #,
174172147 octetsVous avez économisé 25 octets en "empruntant" quelques idées à la réponse C # de raznagul et en les fusionnant avec la somme des premiers n nombres.
Enregistrement de 2 octets en utilisant la somme des n premiers nombres pour une perte de précision de 185 millisecondes.
Programme non golfé:
Explication:
Étant donné que le temps total d'attente est codé en dur à 267 secondes, on peut considérer ce nombre comme une somme télescopique des n premiers nombres naturels
n * (n + 1) / 2
, qui doivent être égaux à 267000 millisecondes.C'est équivalent à
n^2 + n - 534000 = 0
.En résolvant cette équation du second degré,
n1 = 730.2532073142067
,n2 = -n1
. Bien sûr, seule la solution positive est acceptée et peut être estimée à 730 .Le temps total peut être calculé comme
730 * (730 + 1) / 2 = 266815 milliseconds
. L'imprécision est de 185 millisecondes , imperceptible pour l'homme. Le code va maintenant faire en sorte que le thread principal (et uniquement) dort pendant 1 milliseconde, 2 millisecondes et ainsi de suite jusqu'à 730, de sorte que la période de sommeil totale est d'environ 267 secondes.Mise à jour:
La logique du programme peut être encore simplifiée - en gros, il doit afficher en continu un message et attendre un temps spécifié jusqu'au passage au deuxième message.
Le message peut être modifié en utilisant un opérateur ternaire pour vérifier le temps écoulé (~ 267 secondes).
L'aspect temporel est contrôlé en utilisant un compteur croissant et en interrompant le thread d'exécution.
Cependant, étant donné que la variable compteur continue d'augmenter indéfiniment sans aucune condition pour vérifier sa valeur, on peut s'attendre à un débordement d'entier à un moment donné, lorsque le message revient à
Not ready yet
.Une condition peut être ajoutée pour détecter et atténuer le problème en attribuant une valeur positive supérieure à 730 lorsque le débordement se produit - comme
i=i<1?731:i
à l'intérieur de lafor
boucle. Malheureusement, cela coûte 11 octets supplémentaires:La clé ici est d'utiliser la valeur du compteur en millisecondes pour retarder considérablement le moment du débordement.
Le temps avant le débordement peut être calculé selon la
sum(1..n)
formule, où n = la valeur entière signée 32 bits maximale en C # (et le framework .NET) ou 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
Après 73 millions d'années , peu importe si un problème survient dans le système - le hot-dog, le PO affamé et peut-être la race humaine elle-même ont disparu depuis longtemps.
Version précédente (172 octets):
Programme non golfé:
Version précédente (174 octets):
Programme non golfé:
Alternativement, le programme peut s'afficher
Not ready yet
une seule fois, attendre la fin de l'heure spécifiée, puis sortirEat your hot dog
en écrasant le message précédent tout en étant plus court de quelques octets:C #, 145 octets
Programme non golfé:
la source
Rubis,
807167 octetsEdit: Merci à manatwork pour avoir rasé 13 octets entiers
la source
267.times{…}
?{
. Il en résulterait 67 octets.05AB1E,
432928 octets (Merci à Adnan)Ne fonctionne pas en ligne, car il arrive à expiration. Hors ligne, cela fonctionnera.
267F
: Boucle 267 fois…€–Žä‡«ª
: Première chaîne avec dictionnairew,
: Attendez une seconde et imprimez}[
: Fin de la boucle if et démarrage de la boucle infinie“Eat€ž…ß‹·“
: Deuxième chaîne avec dictionnaire,
: Impressionla source
“NotŽä‡«“
can be replaced by…€–Žä‡«ª
Python, 115 bytes
My first time trying something like this. I am also a beginner so here it goes in Python 3 for 115 bytes:
la source
for
will finish looping overrange(267)
much faster than 4 minutes 27 seconds and the solution becomes invalid. ☹JavaScript Blocks Editor for micro:bit, 90 Bytes
The code:
You can try it here.
Got inspired by the Scratch answer to solve the task with my micro:bit. The only Problem is that the pause-block starts after outputting the first string so i needed to reduce the pause by 13s.
Note: The old Microsoft Block Editor for micro:bit is shorter to create but produces more code so is in fact longer.
la source
On the basis that the OP wants hotdogs continuously, until the end of time - which I understand from the phrase:
This is my answer:
C++,
187188224167 bytesWhitespace removed (167 bytes):
readable form (224 bytes):
If, on the other hand, OP enjoys his hot dogs in moderation, then this is my answer:
Whitespace removed (158 bytes):
readable form (198 bytes):
la source
delay
?Excel VBA, 82 Bytes
Anonymous VBE immediates window function that takes no input and outputs whether or not you should eat your hot dog to cell
[A1]
.la source
Excel VBA
12294 bytesThanks Taylor Scott
la source
CDate("00:04:28")
can be condensed to#0:4:27#
, you can replace yourWhile ... Wend
loop with aDo .. Loop
Loop and you can replace yourif
clause with aniif
clauseJavascript, 83 Bytes
Alertz for everyone!
la source
267000
to267e3
and save a byte.new Date
in place ofDate.now()
, and another few by usingfor(d=new Date;;)alert...
PERL, 76 bytes
la source
PHP 88 bytes
la source
Eat your hot dog
until the end of time.” So you have to repeat the 2nd message too. That will add to its length, but fortunately there is place to shorten it:for($t=267;$t--;sleep(1))echo"Not ready yet";for(;;)echo"Eat your hotdog";
. By the way, running code withphp -r
is accepted, so no need for the PHP tags (especially not the closing one, which is considered bad habit in that case: “The closing?>
tag MUST be omitted from files containing only PHP” – PSR-2).REXX, 82 bytes
la source
Java 7, 152 bytes
Explanation:
la source
PHP, 68 bytes
continuous output;
←
is ASCII 10 = LF. Run with-r
.one-time output, 50 bytes
where
←
is ASCII 13 = CR. Save to file or use piping to run.la source
RBX.Lua, 69 bytes
RBX.Lua is the language used on ROBLOX.com. It is a modified version of Lua 5.1 that features a built-in 'Wait' function. The above code is pretty self-explanatory, below is a more readable version:
The code outputs "Not ready yet" continuously into STDOUT, for 267 seconds (4 minutes 27 seconds) before outputting "Eat your hot dog".
la source
C - 130 bytes
It could be slightly shorter (128bytes), but I thought it neater to overwrite "Not ready yet"
la source
#include<unistd.h>
(it will emit a warning but still compile). Doing as you do (overwriting the previous message) is your right, but since the challenge doesn't really ask for it, I'd suggest not to do it. It would allow you to doint main(){puts("Not ready yet");sleep(267);puts("Eat your hot dog");}
(with no includes, they aren't needed) - but no obligation to do it of course.VBA,126 Bytes
la source
Python 2.7,
9088 bytesla source