Desafío
Escriba un programa / función completa para demoler un edificio determinado a razón de 1 piso por segundo .
ENTRADA
La entrada es un edificio a través de STDIN (o como se llame en su idioma) o a través de un ARGUMENTO de una función. t = 0 s
|
|#|
{#}
|# #|
|# # #|
|# # #|
|# # #|
TTTTTTT
la entrada consiste en:
|marca el inicio y el final de un piso.{,}marca el piso con explosivos.#Es una ventana que es para decoración.es el espacio, que está en todas partes dentro de los pisos donde#no hay.Tmarca el terreno (no puede ser demolido).*marca el piso detonado.
Reglas de entrada:
- el edificio comienza desde arriba con uno
|y termina en el suelo (sin no (T) = no (char used in ground floor)). - hay una ventana
#en cada lugar extraño dentro de cada piso. Tmarca el final de su entrada.- solo un piso consta de explosivos.
- cada piso está hecho de un número impar . de caracteres
- A medida que asciende por los pisos, los pisos pueden ser del mismo tamaño que el piso anterior o pueden ser 2 caracteres más grandes.
- La entrada se puede tomar como una matriz de
charsostrings.
Salida:
t = 0.5 s
|
|#|
***
|# #|
|# # #|
|# # #|
|# # #|
TTTTTTT
t = 1 s
|
|#|
|# #|
|# # #|
|# # #|
|# # #|
TTTTTTT
t = 1.5 s
|
***
|# #|
|# # #|
|# # #|
|# # #|
TTTTTTT
t = 2 s
|
|# #|
|# # #|
|# # #|
|# # #|
TTTTTTT
t = 2.5 s
*
|# #|
|# # #|
|# # #|
|# # #|
TTTTTTT
t = 3 s
|# #|
|# # #|
|# # #|
|# # #|
TTTTTTT
t = 3.5 s
*****
|# # #|
|# # #|
|# # #|
TTTTTTT
t = 4 s
|# # #|
|# # #|
|# # #|
TTTTTTT
t = 4.5 s
*******
|# # #|
|# # #|
TTTTTTT
t = 6.5 s
*******
TTTTTTT
t = 7 s
TTTTTTT
Reglas de salida:
- Cada piso termina con un
newlinepersonaje. - el suelo puede / no tener una nueva línea final.
- sacar el edificio (o lo que queda de él) cada 0.5 s.
- La salida es como una animación que se modifica cada 0.5 sy se muestra.
(También puedes publicar GIF con tu respuesta)
Este es un Code-Golf, por lo que gana el código en bytes más cortos.
la última fecha de envío es exactamente 5 días a partir de ahora
(¿Pero sabes qué? Ganar no lo es todo, siéntete libre de probar este desafío en tu idioma favorito, incluso después de que se haya declarado un ganador:]).
EDITAR: Cambié la forma en que toma la entrada (mi mal en realidad).

Respuestas:
Vim,
4138 bytesAquí,
^se usa para un caret literal; ␍ se usa para CTRL-M.Explicación
qw:sl 500m␍qduerme medio segundo, mientras graba el sueño de medio segundo como macro w./{␍se mueve al piso con explosivos.qqcomienza a grabar la macro q, que se llamará recursivamente a sí misma.jkse mueve hacia abajo y hacia arriba; esto genera un error si estás en la última línea (tierra); el error termina la macro recursiva.^v$r*reemplaza todo, desde el primer carácter sin espacios en blanco hasta el final de la línea con * 's.@wespera medio segundo, luegoddelimina el piso actual.:-␍sube un piso sin terminar la macro si estás en la línea superior.@wluego espera otro medio segundo y@qllama a la macro q (inicialmente vacía).q@qdeja de grabar la macro q, luego la llama, desencadenando la recursividad.Animación
fuente
my answer could be "golfed" further... ¿no es eso suficiente? : PJavaScript (ES6),
208198 bytesfuente
Java 7,
589477476 bytesOk, es un desastre / largo, pero este desafío tiene muchas cosas molestas para Java ... Imprimir varias líneas;
Thread.sleep(500)que requiere athrows Exception; reemplazar una subcadena entre dos delimitadores con una cantidad igual de*; etc.Todo esto hace que el programa sea bastante grande. Definitivamente se puede jugar un poco más, tal vez incluso reducirlo a la mitad con un enfoque diferente, pero al menos ahora hay una respuesta. ;)
Sin golf:
Código de prueba:
Pruébalo aquí. (En ideone sale de inmediato e ignora el
sleep..)fuente
try{...}finally{return;}?throws ExceptionHaskell,
245221 bytesEjemplo de uso:
Cómo funciona:
Nota: también hay
threadDelaydeGHC.Conclugar deusleeppartir deSystem.Posix.Unistdque es un poco más corto, pero sólo funciona con elGHCcompilador, por lo que no sería un genéricoHaskellrespuesta.fuente
C,
314287281271 bytes-10 después de cambiar
!=a-y evitando literales de char cuando es posible, así comoisspace(muchas gracias a H Walters). Pero el código no protegido permanece sin cambios.-6 bytes después de aplicar coma y eliminación de
{}después de dosif.-26 bytes después de una pequeña optimización, eliminar paréntesis innecesarios, así como cambiar las variables locales a globales (con inicialización automática 0) y
b[0]por*b.Código de prueba con ungolfed
f:fuente
s,e,texterior de manera global de esta maneras,e,t;icon otros.Perl, 153 bytes
Esto usa el comando GNU sleep para esperar 500 milisegundos.
Versión sin golf
fuente
PHP,
286282274234229 bytestoma la entrada como una lista de cadenas de los argumentos de la línea de comando (¡sin caracteres de nueva línea!)
guardar en archivo, ejecutar con
php <filename> ' |' ' |#|' ' {#}' ' |# #|' '|# # #|' '|# # #|' '|# # #|' 'TTTTTTT'Descompostura
fuente