Este es mi primer desafío, así que lo mantengo bastante simple.
Si alguna vez escribiste telnet towel.blinkenlights.nl
en tu línea de comando y presionaste enter, habrás experimentado la alegría de la asciimación. Asciimation es, simplemente, hacer una animación con ascii art. Hoy haremos una asciimación muy básica de una persona que hace saltos.
Habrá dos imágenes ascii que reuniremos en una sola asciimación. Numero 1:
_o_
0
/ \
Número 2:
\o/
_0_
<blank line>
Tenga en cuenta que el segundo tiene una línea en blanco al final.
Entonces su programa debe hacer estos pasos:
- Borrar la pantalla de la consola.
- Imprima la imagen correcta de arte ascii.
- Establezca una bandera o algo para que sepa hacer la otra imagen la próxima vez.
- Espera un momento (aproximadamente un segundo).
- Continuar en 1.
Reglas
- Su programa debe ser un bucle infinito (teóricamente).
- El lenguaje de programación que usa debe haberse creado antes de que se publique este desafío.
- Este es el código de golf , por lo que gana el código más corto en bytes.
- Se aplican lagunas estándar.
¡Disfrutar!
clear
) es diferente al de Windows (cls
)Respuestas:
CJam,
5145423836 bytesLo anterior usa notación de intercalación; la secuencia
^[
es en realidad el carácter ASCII con el punto de código 27.Tomé prestada la secuencia de escape (
^[c
) de la respuesta de @DomHastings ( con su permiso ) para guardar 4 bytes.Verificación
Puede recrear el archivo de esta manera:
Para ejecutar el código, descargue el intérprete de CJam y ejecute esto:
Esto funcionará en cualquier terminal que sea compatible con console_codes o un subconjunto apropiado. 1
Cómo funciona
1 Los saltos se verán mejor si oculta el cursor del terminal antes de ejecutar el programa. En Konsole, por ejemplo, puede establecer el color del cursor para que coincida con el color de fondo. Esto debe hacerse a través de la configuración de su terminal, ya que
^[c
restablece el terminal.fuente
Calculate the factorial of 60,000 and discard the result. This takes "about a second".
;)2Fm*
sea una buena alternativa de un byte más corto6e4m!
para "una operación sin sentido que devuelve un valor verdadero y toma aproximadamente un segundo para calcular".e!
, pero parece que se me recuerda. Después de la primera iteración, el pobre Jack sufre un ataque al corazón ...Pyth -
414039 bytes(Estoy contando los
\x1b
's como un byte ya que SO destruye caracteres especiales).Claramente no funciona en línea ya que es a) un bucle infinito yb) usa códigos de escape de terminal.
Me sorprendió descubrir que la asignación aumentada funcionaba con la asignación posterior. Pyth es asombroso.
fuente
.V0
como bucle infinitoQBasic, 58 bytes
Probado en QB64 .
El lenguaje correcto para el problema puede ser sorprendentemente competitivo, incluso si generalmente es detallado. El
?
atajo paraPRINT
ayuda también, por supuesto.CLS
es cl ear s creen;RUN
sin argumentos reinicia el programa, que es la forma más corta de obtener un bucle infinito.El único otro truco aquí es imprimir
0
para la sección media de la primera imagen. QBasic pone un espacio delante (y después) de valores numéricos no negativos cuando los imprime, lo que da como resultado0
. Guardado 3 personajes más" 0"
.También puedo señalar que la demora en este código es, literalmente, un segundo , y no depende de la máquina. ; ^ P
fuente
Perl (* nix) , 54 bytes
(
\x1b
se cuenta como 1 byte pero escapó para una prueba más fácil). ¡Lo anterior se ha probado con Bash y se ha acortado otro byte gracias a @Dennis !Perl (Windows) , 56 bytes
¡Gracias a @Jarmex por sus pruebas y consejos!
fuente
print"@[2J"
reemplazando el @ dentro de las comillas con ASCII 27 (para fines de prueba,print"\033[2J"
podría ser más fácil).\e
con un byte ESC literal. - ¿Te importaría si uso el\ec
truco en mi respuesta?"\e"
todos modos es solo un atajo para eso. ¡Por favor adelante!Javascript (ES6),
109937970 bytes + HTML,1210 bytes =1201069180 bytesBastante sencillo. Utiliza cadenas de plantillas para almacenar las imágenes y alterna un valor booleano para determinar cuál usar.
NOTA: Esta solución puede no ser válida, ya que en realidad no usa una consola. Sin embargo, no creo que sea posible borrar una consola del navegador usando JS, al menos no mientras se usa Firefox.
fuente
<pre id="a"/>
la parte HTML, no necesita las<pre>
etiquetas en el código.document.getElementById`a`
condocument.body
.<pre>
y haciendodocument.all[4]
. Esto le permite deshacerse de la cadena de envoltura y simplemente hacerloinnerHTML=a?`...`:`...`}
.Bash,
8684 bytesfuente
Python 2, 99 bytes
Se ejecuta en Windows
Para máquinas UNIX, agregue dos bytes:
fuente
awk -
95 92 86 8483Buen entrenamiento: D Solo me preguntaba si esto era factible. Sin embargo, no hay precios que ganar ...;)
Si alguien quiere probar esto: después de ejecutar el programa, debe presionar Ctrl + D (final de la entrada) para iniciar realmente el bloque END. Para terminarlo tengo que usar Ctrl + Z.
También tengo esto, que solo tiene 74 bytes, pero comienza con una pausa de un segundo, que no es el comportamiento deseado, creo
fuente
Lote - 82 bytes
Editar: silencia el comando de tiempo de espera y elimina la nueva línea adicional.
He visto otras 2 respuestas de lotes similares, así que realmente no quería publicar esto, pero este es mi primer golf.
fuente
timeout 1
va a poner una gran cantidad de resultados no solicitados en la consola>mul
es un error de tipo, o tal vez no sabes quénul
es. en.wikipedia.org/wiki/Null_deviceBBC BASIC, 75 bytes
Tenga en cuenta que la tokenización lo reduce a 75 bytes. El espacio en blanco lo agrega el IDE.
fuente
JavaScript ES6,
10095 bytesInicia sesión en la consola. Probado en Safari Nightly
fuente
Lote,
151130118 bytesfuente
@PING 127.0.0.1 -n 2>NUL
lugar. Por defecto, Ping espera aproximadamente un segundo entre intentos, por lo que esto es dentro de unos pocos milisegundos de ser preciso, lo suficientemente cerca para este desafío. ReferenciaCBM 64 BASIC V2,
121119112117 bytesfuente
?CHR$(147)
Limpia la pantalla? Si por lo que puede ser capaz de ahorrar 2 bytes ahora que la OP ha confirmado que no tiene por qué ser impresos de manera explícita la línea en blancoJulia, 70 bytes
(en Windows , reemplazando
clear
concls
, gracias a undergroundmonorail)En Linux, 72 bytes
Esto usa nuevas líneas reales en lugar de
\n
guardar un byte; de lo contrario,i
es 1 o -1 como "bandera" y utiliza la recursividad para lograr el bucle infinito. Llámalo como cualquieran(1)
o solon()
.Además,
run(`clear`)
/run(`cls`)
utiliza un comando de shell para borrar la ventana, porque Julia no tiene un comando incorporado de limpieza de ventana.fuente
clear
acls
(supongo que no sé nada sobre Julia).cls
funciona (vea mi respuesta)Lote de Windows, 83
89Editar eliminó la línea vacía después de la aclaración por OP
Si se deshace de la línea vacía en el hombre que salta (eso no se puede ver de todos modos), la puntuación es 83Nota:
timeout
no está presente en Windows XP. Funciona en Vista o versiones más recientes. Además,timeout
no es preciso para el segundo, por lo que es una opción perfecta para implementar el paso 4 (Espere un momento ( aproximadamente un segundo ))fuente
Javascript (ES6), 82 bytes
Una modificación de mi respuesta anterior que usa la consola. Funciona parcialmente en Firefox, pero solo borra la consola en Chrome, AFAIK.
Como siempre, las sugerencias son bienvenidas!
fuente
JavaScript,
929189 bytesc
se muestra en lugar de limpiar la consola, interrumpiendo la salida)Eliminando
"\033c"+
el código anterior, lo siguiente funciona en el navegador, pero no borra la consola.fuente
x=0;setInterval(_=>console.log("\033c"+[`_o_<line break> 0<line break>/ \\`,`\\o/<line break>_0_`][x^=1]),1e3)
por alguna razón, JS no me deja pasarconsole.log
como la función y el hombre ASCII como un parámetro adicional.console.log
asetInterval
, la razón es que no estamos pasando la función, pero llamándolo. Sería evaluado antes desetInterval
ser llamado, y dadoconsole.log
que no regresa, esencialmente pasaríaundefined
asetInterval
. ¿Tener sentido? ¡Y gracias por acortarlo!x=0;setInterval(console.log,1e3,"\033c"+[
_o_ <salto de línea> 0 <salto de línea> / \ `,\\o/<line break>_0_
] [x ^ = 1])` De hecho, no trae aparece un error si lo reemplazoconsole.log
conalert
."\033c"+[`_o_<line break> 0<line break>/ `,\\o/<line break>_0_`][x^=1]
se evalúa antes de la llamadasetInterval
.Ruby, 79 bytes
Requiere códigos de escape.
fuente
Adelante, 86 bytes
Requiere GNU Forth para las cadenas escapadas. Para ejecutar en un Forth no GNU, simplemente cambie
S\"
aS"
, y los caracteres escapados no se imprimirán correctamente.fuente
CBM BASIC v2.0 (68 caracteres)
Lo anterior requiere alguna explicación, ya que el marcado de Stack Exchange no representa correctamente los caracteres PETSCII:
fuente
cera de abejas ,
119113 bytesExplicación de las partes importantes del programa:
Los
f
's empujan los valores en el gstack (pila global) para su uso posterior. Se accede a estos valores mediante las instrucciones0gh
(o las duplicadashg0
) yhg
(gh
).h
gira el gstack hacia arriba,g
lee el valor superior de gstack y lo empuja al lstack (pila local) de la abeja (puntero de instrucción).Una explicación en profundidad sigue más adelante, si es necesario. Quizás con animación.
fuente
Deadfish , no competidor (658 bytes)
Esta es una solución no competitiva , ya que no cumple completamente con los requisitos del desafío. Deadfish es un idioma interpretado muy extraño, que solo tiene 4 comandos y un acumulador. El acumulador es una variable de un solo byte inicializada en 0. Los 4 comandos son:
i
= Incrementar el acumuladora = a + 1
d
= Disminuir el acumuladora = a - 1
s
= Cuadrar el acumuladora = a * a
o
= Salida del acumuladorprint(a)
Como el lenguaje no incluye repetición, borrar la pantalla o retrasos, no cumple con los requisitos. Rendimiento esperado:
Explicación del código:
Intérprete de Deadfish en Python 3:
fuente
Noodel , 24 bytes no competitivos
Sin competencia porque Noodel nació después de que se creó el desafío :)
Intentalo:)
Cómo funciona
Actualmente no hay una versión de Noodel que admita la sintaxis utilizada en este desafío. Aquí hay una versión que hace:
24 bytes
fuente