A veces me encuentro con ganas de un hot dog (no todos) y por eso hago uno. Ahora hacer un hot dog es muy simple.
1) Pon los hot dogs en agua hirviendo
2) Espere una cierta cantidad de tiempo (detallado a continuación)
3) Come el hot dog una vez que haya transcurrido el tiempo.
Puede que hayas notado que dije
cierto tiempo (detallado a continuación)
y así detallaré
Muchas marcas diferentes tienen muchas recomendaciones diferentes sobre cuánto tiempo debemos cocinar los hot dogs, pero he descubierto que es mejor cocinarlos exactamente durante 4 minutos y 27 segundos (no pregunte). He probado muchos temporizadores diferentes, pero he descubierto que un programa que genera continuamente es la mejor manera de llamar mi atención.
TU TAREA
Debe crear un programa que muestre el mensaje Not ready yet
durante exactamente 4 minutos y 27 segundos. Después de que haya transcurrido este tiempo, debe salir Eat your hot dog
hasta el final de los tiempos. Por favor no tome ninguna entrada.
CÓMO GANAR
Debes escribir el código más corto en bytes para ganar porque este es un código de golf
Not ready yet\nNot ready yet\n...
) o podemos simplemente emitirlo una vez y cambiar la salida una vez que hayan terminado los 4m 27s?Respuestas:
Scratch,
9378 bytesCódigo:
Generado por https://scratchblocks.github.io/ , que parece ser el estándar para la puntuación Scratch.
Bastante autoexplicativo. Cuando se inicie el programa, diga "Todavía no está listo" hasta que el temporizador (que se cuenta en segundos) sea mayor que 267. Luego comienza un ciclo infinito donde dice
Eat your hot dog
.Que es la salida continua, debido a que el
say
bloque se ejecuta siempre a menos quesay []
osay
algo más.fuente
Bash + coreutils, 50
Explicación
Bastante autoexplicativo, creo, pero por las dudas:
yes
coreutil continuamente emite repetidamente los parámetros que recibe en la línea de comandostimeout
coreutil toma un parámetro de tiempo de espera numérico seguido de un comando. El comando se ejecuta y luego se elimina después del tiempo de espera especificado.fuente
Lenguaje de script Operation Flashpoint , 67 bytes
Guardar como
"hotdog.sqs"
(o lo que sea) en la carpeta de la misión y llamar con[] exec "hotdog.sqs"
.Explicación:
Esta solución debería ser especialmente buena para atraer su atención, ya que el
hint
comando reproduce un efecto de sonido aferrado cada vez que se llama, lo que suena muy molesto cuando los sonidos simultáneos se recortan en un bucle cerrado.fuente
JavaScript ES6, 76 bytes
Explicación
Esto imprime algo en la consola cada 517 milisegundos. Al principio, imprime
'Not ready yet'
y disminuye el contador. Después de 517 iteraciones (= 517 * 517 = 267289 ms
), comienza a imprimir'Eat your hot dog'
.Prueba
fuente
setTimeout
solo ejecuta la función una vez. El desafío es generar continuamente una cadena, porsetTimeout
lo que sería inválido.(--_?
funciona en lugar de(--_>0?
(-2)_
disminuirá cada vez que se imprima algo, por lo que también irá por debajo de cero. Todos los enteros negativos son verdaderos, por lo'Not ready yet'
que también se imprimirían (que no es lo que queremos).Powershell,
857159 bytesProbablemente haya una forma mucho mejor, ¡así que las críticas son bienvenidas! Este es mi primer intento de golf :)
EDITAR Un total de 14 bytes gracias a AdmBorkBork! ¡Y definitivamente una técnica para recordar!
EDIT 2 Otros 12 bytes desaparecidos gracias a Matt. No llamar a escribir dos veces también eliminó 2 espacios, ¡muy útil!
fuente
1..276|%{}
lugar de unfor
bucle con un incremento. ¡Mira otros consejos en esa página también!write-output
cmdlet.Variante del lenguaje de scripting de GameMaker utilizada en el mod Nuclear Throne Together, 68 bytes
Explicación
0while
analiza como y0
, por lowhile
tanto, está bien)var
(igual que con JS).La variante GML utilizada en NTT introduce un
wait
operador, que empuja el "microhilo" en ejecución a una lista para el número especificado de tramas, reanudando después. Corutinas, básicamente.El juego tiene una velocidad de 30 fps, por lo que 4m27s == 267s == 8010 cuadros.
Si tienes instalado el videojuego + mod, puedes guardarlo como algo
test.mod.gml
y/loadmod test
ejecutarlo, inundando el chat con "informes de estado":fuente
Python 2, 92 bytes
Pruébalo en línea!
fuente
while 1:print'ENaott yroeuard yh oyte td o g'[time()-t<267::2]
por 90 byteswhile 1:print['Eat your hot dog','Not ready yet'][time()-t<267]
también sería 90 (siendo más claro y sin imprimir el espacio en blanco adicional).TI-Basic, 75 bytes
Explicación
fuente
Lote, 99 bytes
Batch no tiene aritmética de fechas, por lo que no se permite un tiempo de espera simple de 267 segundos, lo mejor que puedo hacer es un tiempo de espera de 267 segundos.
fuente
C # 144 bytes
Programa completo sin golf:
Desafortunadamente no pude usar el
?:
operador, ya que no he encontrado una manera de dejar de incrementari
sin elif
.fuente
if(i++<267e3)
guardar algunos bytes.i
cada milisegundo. Y una vez queint.MaxValue
se alcanza, el programa se bloqueará o comenzará a imprimirNot ready yet
nuevamente.C #,
174172147 bytes¡Ahorré 25 bytes al "tomar prestadas" algunas ideas de la respuesta C # de raznagul y fusionarlas con la suma del primer truco de n números!
Ahorró 2 bytes usando la suma del primer truco de n números para una pérdida de precisión de 185 milisegundos.
Programa sin golf:
Explicación:
Dado que el tiempo total de espera está codificado en 267 segundos, se puede considerar este número como una suma telescópica de los primeros n números naturales
n * (n + 1) / 2
, que debe ser igual a 267000 milisegundos.Esto es equivalente a
n^2 + n - 534000 = 0
.Al resolver esta ecuación de segundo orden,
n1 = 730.2532073142067
,n2 = -n1
. Por supuesto, solo se acepta la solución positiva y se puede aproximar a 730 .El tiempo total se puede calcular como
730 * (730 + 1) / 2 = 266815 milliseconds
. La imprecisión es de 185 milisegundos , imperceptible para los humanos. El código ahora hará que el subproceso principal (y solo) duerma durante 1 milisegundo, 2 milisegundos y así sucesivamente hasta 730, por lo que el período de suspensión total es de ~ 267 segundos.Actualizar:
La lógica del programa se puede simplificar aún más: básicamente, debe mostrar continuamente un mensaje y esperar un tiempo específico hasta cambiar al segundo mensaje.
El mensaje se puede cambiar utilizando un operador ternario para verificar el paso del tiempo especificado (~ 267 segundos).
El aspecto del tiempo se controla utilizando un contador creciente y pausando el hilo de ejecución.
Sin embargo, dado que la variable de contador continúa aumentando indefinidamente sin ninguna condición para verificar su valor, uno puede esperar un desbordamiento de enteros en algún momento, cuando el mensaje vuelve a
Not ready yet
.Se puede agregar una condición para detectar y mitigar el problema asignando un valor positivo mayor que 730 cuando se produce el desbordamiento, como
i=i<1?731:i
dentro delfor
bucle. Lamentablemente, tiene un costo de 11 bytes adicionales:La clave aquí es usar el valor del contador en milisegundos para retrasar en gran medida el momento de desbordamiento.
El tiempo hasta el desbordamiento se puede calcular de acuerdo con la
sum(1..n)
fórmula, donde n = el valor entero máximo de 32 bits con signo en C # (y el marco .NET) o 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
Después de 73 millones de años , podría no importar si aparece una falla en el sistema: el perro caliente, el OP hambriento y tal vez la raza humana en sí se han ido.
Versión anterior (172 bytes):
Programa sin golf:
Versión anterior (174 bytes):
Programa sin golf:
Alternativamente, el programa puede mostrarse
Not ready yet
solo una vez, esperar hasta que termine el tiempo especificado y luego emitirEat your hot dog
sobrescribiendo el mensaje anterior mientras se acortan bastantes bytes:C #, 145 bytes
Programa sin golf:
fuente
Rubí,
807167 BytesEditar: Gracias a manatwork por recortar 13 bytes completos
fuente
267.times{…}
?{
. Eso daría 67 bytes.05AB1E,
432928 bytes (Gracias a Adnan)No funciona en línea, ya que se agota el tiempo de espera. Fuera de línea funcionará.
267F
: Loop 267 veces…€–Žä‡«ª
: Primera cadena con diccionariow,
: Espere un segundo e imprima}[
: Finalizar si bucle e iniciar bucle infinito“Eat€ž…ß‹·“
: Segunda cadena con diccionario,
: Impresiónfuente
“NotŽä‡«“
puede ser reemplazado por…€–Žä‡«ª
Python, 115 bytes
La primera vez que intento algo como esto. También soy un principiante, así que aquí va en Python 3 para 115 bytes:
fuente
for
terminará enrange(267)
mucho más rápido que 4 minutos y 27 segundos y la solución dejará de ser válida. ☹Editor de bloques de JavaScript para micro: bit, 90 bytes
El código:
Puedes probarlo aquí.
Me inspiré en la respuesta de Scratch para resolver la tarea con mi micro: bit. El único problema es que el bloque de pausa comienza después de la salida de la primera cadena, por lo que necesitaba reducir la pausa en 13 segundos.
Nota: El antiguo Microsoft Block Editor para micro: bit es más corto de crear pero produce más código, por lo que en realidad es más largo.
fuente
Sobre la base de que el OP quiere perritos calientes continuamente, hasta el final de los tiempos, lo que entiendo por la frase:
Esta es mi respuesta:
C ++,
187188224167 bytesEspacio en blanco eliminado (167 bytes):
forma legible (224 bytes):
Si, por otro lado, OP disfruta sus perros calientes con moderación, entonces esta es mi respuesta:
Espacio en blanco eliminado (158 bytes):
forma legible (198 bytes):
fuente
delay
?Excel VBA, 82 bytes
El VBE anónimo evoca la función de ventana que no toma entrada y da salida si debe o no comer su hot dog a la celda
[A1]
.fuente
Excel VBA
12294 bytesGracias Taylor Scott
fuente
CDate("00:04:28")
puede condensarse#0:4:27#
, puede reemplazar suWhile ... Wend
bucle con unDo .. Loop
bucle y puede reemplazar suif
cláusula con unaiif
cláusulaJavascript, 83 bytes
Alertz para todos!
fuente
267000
a267e3
y guardar un byte.new Date
en lugar deDate.now()
, y otro mediante el uso de unos pocosfor(d=new Date;;)alert...
PERL, 76 bytes
fuente
PHP 88 bytes
fuente
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
fuente
Java 7, 152 bytes
Explanation:
fuente
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.fuente
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".
fuente
C - 130 bytes
It could be slightly shorter (128bytes), but I thought it neater to overwrite "Not ready yet"
fuente
#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
fuente
Python 2.7,
9088 bytesfuente