Este es mi primer concurso de golf.
Qué necesitas hacer
Construirme, en la menor cantidad de bytes posible, mi sistema de control remoto de CA. Mi habitación está muy fría en este momento, y me falta mi control remoto.
Ahora, no quiero que literalmente lo construyas ni nada, solo juega al golf:
Un incremento lento de temperatura, que comienza en 40 grados y termina exactamente en 72. El tiempo de incremento siempre debe ser de 500 milis por incremento. Puede esperar otros 500 ms al final. Sin embargo, preferiría que se detuviera. El incremento en sí mismo debe aumentar en dos cada vez, como mi control remoto.
No deberías borrar la pantalla. Deberías tener nuevas líneas.
Qué debería pasar
Ejemplo de salida (todo lo que está entre paréntesis no se debe mostrar).
40
(wait 500 millis)
42
(wait 500 millis)
44
(..repeat until 72..)
72
(stop or wait 500ms)
Tenga en cuenta que este es mi primer golf, así que me disculpo si es demasiado difícil para el golf. :(
¡Mucha suerte, golfistas!
Respuestas:
Bash + utilidades de Linux, 19
seq
genera la salida numérica.pv
lo limita a 2 líneas / seg.fuente
-q
supresión de salida va a STDERR, por lo que no creo que lo necesite.Minecraft 1.9.0+,
204162 bytes +5836282420 bloques =262240232186182 blytesEsta solución está mejorada y no se puede ver completa en una, o incluso en dos capturas de pantalla. Utiliza dos fallas y abusa de otras dos características del juego.
Esta solución utiliza los mismos principios que el siguiente, solo un diseño más compacto de 4 bloques.
Abusa del hecho de que los bloques de comandos de Cadena (bloques verdes) no pueden ser alimentados por redstone, solo por una señal de un bloque de comandos de impulso (naranja).
Abusa del hecho de que los pistones tardan 0,30 segundos en extenderse por completo, y Redstone solo necesita 0,10 segundos para registrar una señal.
También abusa de una falla doble para apagar el temporizador (TNT): la piedra roja al lado del temporizador (TNT) no solo se activa, sino que también piensa que la TNT es otra piedra roja y la alimenta.
Además de todos estos abusos, el acortador de señal (bajo el TNT) es de un solo uso, después de que se enciende, cambia de forma, permitiendo pasar la señal a través del "incrementador" (bloque naranja superior)
Se puede ver un poco de explicación sobre la funcionalidad de sus diferentes partes en las soluciones más antiguas (pero mejor en la que se encuentra a continuación). ¡También puedes probarlo sin conexión! (la solución simplificada se incrementa en 4, funciona solo en 1.11+) ejecutando este comando en un bloque de comandos .
Solución anterior, Minecraft 1.9.0+, 186 blytes:
Como TNT normalmente explota después de 3.0s en Minecraft, este debe ser colocado por un comando (
/setblock
) con un fusible especificado. También utiliza un diseño más compacto para eliminar el bloque de comandos redundante (que contiene 42 bytes) y redstone en las versiones anteriores. Estoy seguro de que esto no puede bajar más ...Solución anterior, Minecraft 1.9.0+, 232 blytes:
Vaya, descubrí que estas soluciones anteriores aumentan en 4 ...
Utiliza la función de cadena de bloque de comando 1.9 (cosa de bloque verde) para guardar bloques. También utiliza un acortador de señal más compacto que en las soluciones más antiguas.
Solución aún más antigua, Minecraft 1.7.0+, 240 blytes:
Utiliza un temporizador más compacto (TNT) que la primera solución (a continuación).
La solución más antigua, Minecraft 1.7.0+, 262 blytes:
Esto es tan largo debido a la forma en que Minecraft maneja las variables:
Para definir una variable (int):
scoreboard objectives add <variable> dummy
Para establecer un valor en una variable (cada entidad, incluidos los jugadores, tiene su propio valor de variable):
scoreboard players set <entity> <variable> <value>
*
se puede usar<entity>
para seleccionar todas las entidades y guardar bytes.solo se pueden usar variables definidas
el valor de la variable debe establecerse en un número, no en una variable
Para incrementar var1 por var2:
scoreboard players operation <entity> var1 += <entity> var2
<entity>
debe ser una sola entidad, por ejemplo.@p
no*
Las capturas de pantalla son mías, con doble licencia bajo WTFPL y qué licencia SE decide usar hoy (actualmente
cc by-sa 3.0 with attribution required
) :-)fuente
Vim,
24, 23 bytes / pulsaciones de teclas¡Un byte guardado gracias a @Kritixi Lithos!
Escrito desde mi teléfono, probado en vim móvil (que aparentemente es algo real).
Aquí hay un gif que se está ejecutando:
Y aquí hay una explicación de comando por comando:
fuente
s
dems
es opcional, se puede quitar para guardar un byte :)JavaScript (ES6), 52 bytes
fuente
f=(i=40)=>setTimeout(i>70||f,500,i+2,console.log(i))
. Lamentablemente, sigue siendo los mismos 52 bytes.50
bytes ya que no necesita contarf=
según el meta consenso de que se permiten declaraciones de funciones anónimas?f=
se requiere porque la función necesita llamarse a sí misma (como primer parámetrosetTimeout
).Jalea ,
1312 bytesPruébalo en línea! El programa Jelly está envuelto en un script Bash para prefijar cada línea de salida con una marca de tiempo.
Cómo funciona
Después de la última iteración, el valor final de 72 se imprime implícitamente y el programa sale.
fuente
Perl 6 , 30 bytes
Lamento que parezca un código sin golf, no veo una forma de acortarlo ...
La versión que se detiene justo después del último número sería de 37 bytes:
fuente
36
?.say&sleep(.5) for 40,42...72
29 bytes{
paréntesis que sigue a otra expresión sin espacios en blanco, se interpreta como el inicio de un subíndice hash ("matriz asociativa"). Perl 6 es estricto así, porque su gramática fue diseñada deliberadamente para permitir el análisis de código fuente de una sola pasada (casi) sin retroceso.Pyth - 12 bytes
Muy simple, usa un bucle for de 0-17.
fuente
TI-Basic (solo CE o CSE), 16 bytes
Tenga en cuenta que muchos comandos son tokens de un solo byte.
fuente
For(
,Pause
,End
, Y los dos puntos al comienzo de las líneas son todos los bytes individuales.MATL , 14 bytes
Pruébalo en MATL Online! Es posible que deba volver a cargar la página si inicialmente no funciona.
Explicación
Versión anterior (antes del cambio de especificaciones), borrando la pantalla
Pruébalo en MATL Online!
fuente
Dyalog APL , 20 bytes
{
la función anónima⎕DL
retrasar....5⊣
la mitad (un segundo) en lugar del valor de⎕←
imprimir (con nueva línea)⍵
el argumento}¨
aplicado a cada uno de38+
treinta y ocho más2×
dos veces⍳17
los enteros del 1 al 17fuente
C compilado con Clang 3.8.1 en Linux,
625958 bytes2 bytes guardados gracias a @ranisalt
59 bytes
62 bytes
fuente
** ... **
en marcado, mientras que el encabezado tradicional en este sitio usa# ...
. He editado tu respuesta para que puedas ver cómo se hace.s<72
guarda otro byte.Scratch, 5 bloques
(espacio en disco 56.0kb)
(Perdón por la baja resolución!)
Se explica por sí mismo, de verdad. El valor de la variable se muestra en un cuadro en el "escenario".
fuente
Mathematica, 34 bytes
Programa completo No toma entradas y salidas a STDOUT.
fuente
R, 49 bytes
Solución muy trivial pero hace el truco.
fuente
for
bucle tiene exactamente la misma longitud.Perl 6 , 27 bytes
say
devuelveTrue
, que se convierte en un valor numérico1
cuando se divide por2
.Las travesuras Unicode pueden reducirlo a 23 caracteres:
Pero eso es 29 bytes codificados en UTF-8.
fuente
Python 2,
57 5655 BytesEDITAR:
-1 Byte gracias a Mega Man
-1 Byte gracias a Flp.Tkc
fuente
Rubí, 33 bytes
fuente
C #, 95 bytes
Es un bucle simple, espera 500 ms adicionales al final.
fuente
QBIC , 21 bytes
QBIC inicia un bucle FOR, que va de 44 a 72 e incrementa el contador en 4 en cada bucle. Luego duerme durante 1 segundo. QBasic no tiene una fuente de control más fina
sleep
, por lo que he agregado una.
para simular dar.5
como argumento.fuente
Kotlin, 47 bytes
Supongo que no se dijo en la declaración del problema que las soluciones deberían contener un incremento de dos, por lo
40+2*i
que aquí es legal.Si se escribe como una fuente de Kotlin normal con
main
:(77 bytes)
UPD : en Kotlin 1.3,
args:Array<String>
se puede eliminar, por lo que son 18 bytes menos.Y en Kotlin Script, todo el programa sería
(47 bytes)
fuente
Ruby 31 bytes
Pruébalo en línea!
fuente
Haskell, 67 bytes
Si solo quieres usar ghc, puedes guardar algunos bytes importando
GHC.Conc
y usando enthreadDelay
lugar deusleep
.fuente
php, 38 bytes
usa guión bajo como delimitador. Corre con
-nr
.fuente
Clojure, 54 bytes
Tercer ceceo ftw. Simplemente itera sobre el rango, imprimiendo y durmiendo cada iteración. Duerme al final.
Sin golf:
Una versión que no duerme al final, 66 bytes.
Tenga en cuenta que estos son programas completos ya que las instrucciones no especifican. Agregue un byte a cada uno si se requiere una función.
fuente
Raqueta 46 bytes
Sin golf:
Comando para ejecutar:
(f)
fuente
Octava,
3835 bytesGuardado 3 bytes gracias a @LuisMendo al cambiar
endfor
aend
Pruébalo en línea!
Soy nuevo en Octave, por lo que esta solución aún podría jugarse más. Cualquier consejo es bienvenido!
Sin golf
fuente
Python 2,
5758 BytesEditar
Contaba como 57 bytes en mi mano, pero TIO dice 58 ahora que estoy de vuelta en mi propia máquina, así que esa es mi oferta final. Curiosamente, TIO no parece respetar el tiempo de espera y simplemente espera y luego imprime toda la lista de una vez. Funciona en QPython para Android y Python 2 en mi caja de Ubuntu, así que eso es lo suficientemente bueno para mí.
Pruébalo en línea!
Sería
5859 en Python 3, así que no supera a @ sonrad10 de todos modos.fuente
range(...)
R,
4442 bytesSencillo for-loop, es probable que haya una forma más golfista. (Además, el tachado 44 sigue siendo regular 44 ...)
fuente
F #, 60 bytes
async{for i in 40..2..72 do printfn"%d"i;do!Async.Sleep 500}
Esta es una expresión asíncrona, para ejecutarla, pasarla a
Async.Start
oAsync.RunSynchronously
.fuente
Noodel , 10 bytes no competitivos
No puede competir porque Noodel nació después de que se creó el desafío :(
Intentalo:)
Cómo funciona
No hay una versión de Noodel que admita la sintaxis utilizada en esta respuesta. Aquí hay una versión correcta:
fuente