Estoy cansado, pero parece que no puedo conciliar el sueño. Ayúdame a contar ovejas.
Dada una entrada N (entero positivo), haga que N ovejas salten sobre una cerca ascii, como en el ejemplo a continuación. Solo se debe mostrar un cuadro a la vez:
o |-|
──|-|── 0
o|-|
──|-|── 0
o
|-|
──|-|── 0
|-|o
──|-|── 0
|-| o
──|-|── 0
o |-|
──|-|── 1
o|-|
──|-|── 1
o
|-|
──|-|── 1
El recuento debe mantenerse en el lado inferior derecho del 'suelo'. Se permiten espacios en blanco al inicio y al final y nuevas líneas. Si su idioma de elección tiene dificultades para borrar la pantalla para cada cuadro, puede agregar suficientes líneas nuevas para borrar la pantalla; indique cuántas líneas agrega para esto en su respuesta. El programa debe finalizar cuando la enésima oveja está en el quinto floortil.
Necesito levantarme temprano mañana, por lo que gana el código más corto en bytes. Por favor envíe una función o un programa completo. Se aplican lagunas estándar.
N=3
el último cuadro contendrá una oveja en el extremo derecho y el contador seguirá diciendo2
. ¿Es eso correcto?Respuestas:
MATL ,
605653 bytesLa animación con el código anterior se ejecuta muy rápido. La siguiente versión incluye una pausa para hacer que la animación sea más lenta y, por lo tanto, más fácil de ver (no requerida por el desafío), a costa de 4 bytes más:
¡Pruébalo en MATL Online! El intérprete es un beta; Actualiza la página si no funciona.
O vea una grabación del compilador fuera de línea:
Explicación
fuente
Javascript (ES6),
120124 bytesEl último cuadro calculado se muestra primero. Gracias a esto, el número de salto es
n-1
In
alert
, los personajes tienen un ancho diferente, por lo que parece que está roto.Mostrar fragmento de código
Respuesta anterior:
120 bytes, el número de salto es incorrecto porque comienza en 1 en lugar de 0
fuente
alert
. Tengo el mismo resultado que Chrome con Edge, y es peor con Firefox.JavaScript (ES6),
144142 bytesBorra la salida y espera 300 ms entre cada cuadro:
Puede probarlo aquí (asegúrese de abrir la consola).
fuente
4
a5
) después de que la última oveja haya saltado la cerca ...Ruby, 83 bytes
Imprime en stdout. Salida separada por nuevas líneas. Al reducir la altura de la pantalla a 3, solo se puede ver una imagen a la vez.
fuente
C #, 234 bytes
fuente
string[] args
y enfor (int
.Int32.Parse
podría serint.Parse
.Program
a soloP
o algo asístring
podría servar
. El entero en el bucle for podría inicializarse al mismo tiempo que se analizaargs[0]
en un entero.Action<string[]>
y puede quitar los corchetes alrededor del bucle externo para que creo que obtengo 200 bytes:using C=System.Console;a=>{for(int n=0;n-1+""!=a[0];++n)foreach(int p in new[]{5,6,3,10,11}){C.Clear();C.Write(" \n |-| \n──|-|── ".Remove(p,1).Insert(p,"o")+n);for(var w=3e7;w>0;--w);}};
PHP + JavaScript, 168 bytes
Guardar en archivo
s.php
, llamar al navegador cons.php?n=<n>
.Se llama a sí mismo con nuevos parámetros para cada cuadro, sin demora.
Podría ahorrar 5 más con
index.php
; pero no quiero ir tan lejosfuente
C AB|─|DE ──|─|── $c",EABCD,$s),($c+=!$f)<$n?"
.short_open_tag
deshabilitado. Habilítelo (predeterminado) o agreguephp
+ espacio después<?
.Tcl, 168 bytes
Versión con pantalla de 10 filas de altura. (Reemplace el
7
siguiente con la altura de su pantalla en columnas menos cuatro).Eso funciona muy rápido, por lo que puede agregar una pausa en la línea dos:
Tcl, 177 bytes
Funciona reutilizando la cadena en la parte superior para dos cosas diferentes:
La plantilla en sí es la imagen de cadena para mostrar. Primero asignamos (reemplazo de cadena) el dígito de posición actual de la oveja (bucle interno) a una 'o'. Luego mapeamos los dígitos restantes a espacios. Luego imprimimos la cadena resultante.
(La cadena en sí comienza después del último {en la tercera línea y termina con el extremo izquierdo} en la última línea).
fuente
QBasic, 110 bytes
Recorre las
5*n
garrapatas. En cada marca, borra la pantalla, imprime el estilo y el conteo de ovejas, y luego usaLOCATE
para imprimiro
en el lugar apropiado. Conx
ser el código de posición entre 0 y 4:(x=2)+2
x=2
es verdad-1+2
=1
x=2
es falso,0+2
=2
1+x-(x>1)+x\3
x
es0
o1
,x>1
es falso yx\3
es0
:1+x-0+0
=1
o2
x
es2
,x>1
es cierto yx\3
es0
:1+x-(-1)+0
=4
x
es3
o4
,x>1
es verdadero yx\3
es1
:1+x-(-1)+1
=6
o7
Finalmente,
SLEEP
durante 1 segundo y bucle. Si no le importa presionar enter en cada cuadro, puedo eliminar dos bytes eliminando el argumentoSLEEP
.fuente
PHP
132131 bytesEdiciones después de los comentarios (¡gracias!):
Lo cual no tiene golf:
Publicación original
Probado en ubuntu (no sé, si
system("clear")
funciona en Windows)Sin golf:
fuente
clear
no necesita comillas.cls
en DOS.$i=0;
advertencias, generalmente no se muestran en el código golf (-5 bytes). Por la misma razón, no necesita comillasclear
yo
(-4 bytes). Reemplace la\n
s por líneas nuevas reales (-2 bytes). Como solo tiene expresiones, no declaraciones, puede poner todo menos el último en sufor
bucle, lo que le permite eliminar los corchetes (for(;;system(clear),$c=…)sleep(1);
) (-2 bytes). Y finalmente, se olvida de agregar la condición$i<$argv[0]
(+ 11 bytes).node.js + sleep , 169 bytes
Solución original
node.js,
146142185 bytesProbado solo con el terminal ubuntu (y ahora con n sheeps):
Bueno, eso es un marco cada 9 ms. Una versión más relajante para el sueño (marco cada 1s):
Y sin golfos:
fuente
05AB1E ,
666059 bytesUtiliza CP-1252 codificación .
Explanantion
La iteración se refiere a la iteración interna (0 -> 4) del viaje de ovejas.
Bucles principales
Generar fila superior
Generar fila central
Generar fila inferior
fuente
Jalea ,
55 5453 bytesTryItOnline
Imprime cuadros separados por avances de línea.
¿Cómo?
fuente
Python 2,
171159144 bytes,163151136 caracteresSolución utilizando una función recursiva. Llamar como f (int)
EDITAR
-12 después de releer los comentarios y ver que el conteo no tiene que incrementarse cuando la oveja llega al final del campo
-15 iterando a través de la lista de índice directamente y perdiendo una variable
Notas
Asume la codificación UTF-8
El uso de - en lugar de ─ (como en la respuesta @Luis MATL) reduciría la cuenta de bytes en 8 para que coincida con la cuenta de caracteres y perdería la dependencia de UTF-8
Se agregaron 50 nuevas líneas: la salida se encuentra en la parte inferior de la consola (más barata que importar y usar os.system ("clear") y funciona en Windows y Linux)
Versión con 1 segundo de retraso entre salidas (170 bytes, 162 caracteres)
fuente
Bash + utilidades estándar de Linux (339 bytes)
fuente