Escriba un programa o función que tome un número entero positivo e imprima o devuelva una pila de tantas tortugas de arte ASCII , donde cada tortuga es más grande que la que está encima.
Específicamente, si la entrada es 1
, la salida debería ser:
__
/,,\o
Si la entrada es 2
:
__
o/,,\
____
/,__,\o
Si la entrada es 3
:
__
/,,\o
____
o/,__,\
______
/,____,\o
Si la entrada es 4
:
__
o/,,\
____
/,__,\o
______
o/,____,\
________
/,______,\o
Si la entrada es 5
:
__
/,,\o
____
o/,__,\
______
/,____,\o
________
o/,______,\
__________
/,________,\o
Y así sucesivamente en el mismo patrón para entradas más grandes.
Tenga en cuenta que:
- La cabeza (la
o
) de la tortuga inferior siempre está a la derecha. Las cabezas de las tortugas arriba se alternan de un lado a otro. - Ninguna línea puede tener espacios finales.
- No se permiten espacios iniciales superfluos. (es decir, la parte posterior de la tortuga inferior debe estar al comienzo de la línea).
- Se permite una nueva línea final opcional.
El código más corto en bytes gana.
code-golf
string
ascii-art
kolmogorov-complexity
Pasatiempos de Calvin
fuente
fuente
,________,
Cuando alguien dice algo que no tiene sentido.Respuestas:
Lote, 256 bytes
Tenga en cuenta que la línea 1 tiene un espacio final y la línea 4 tiene dos espacios finales.
i
por lo tanto, contiene unecho
comando con la cantidad adecuada de sangría para cada tortuga. Mientras tanto,u
contiene el número de guiones bajos en tortugas alternativas. Una tortuga impar principal tiene una carcasa especial y luego el resto de las tortugas salen en parejas.fuente
C, 131 bytes
Pruébalo en línea.
Define una función que imprime las tortugas.
Abusa mucho de los especificadores de ancho y precisión de printf para obtener el espacio y repetir los guiones bajos. Cada tortuga se imprime usando una sola
printf
llamada:También tengo una versión diferente que es 144 bytes con espacios en blanco eliminados:
fuente
,_,
en su código.Ruby, 100 bytes
Solución recursiva. Pruébalo en línea!
fuente
05AB1E, 45 bytes
Pruébalo en línea
fuente
G
bucle ya estaba en la versión de agosto de 2016, pero si lo era,Lv
puede serG
y ambosy
pueden serN
de -1 byte.V ,
57, 5349 bytesComo esto contiene caracteres no imprimibles, aquí hay un hexdump:
Pruébalo en línea!
Explicación:
fuente
0
y abajo.input > 10
. En una nota al margen, accidentalmente lo rompí por completo con la entrada0 41c14
. No estoy seguro si rompí el código, o el corredor.-1
como una cadena que no puede pretender que es un número. Afortunadamente, no tengo que manejar eso.Perl, 92 bytes
Código de 91 bytes +1 para
-n
.Requiere
-E
sin costo adicional.Uso
¡Gracias a @Dada por -9 bytes con su retrabajo !
fuente
perl -nE 'for$i(1..$_){say$"x$_._.($v=_ x(($i-1)*2))._.$/.$"x(--$_-1).($_%2?o:$_?$":"")."/,$v,\\".($_%2?"":o)}'
. Traté de llegar a menos de 100 también, pero no pude ...Cheddar , 105 bytes
fuente
Retina ,
979188 bytesEl recuento de bytes asume la codificación ISO 8859-1.
Pruébalo en línea!
fuente
Python 2, 116 bytes
fuente
lambda m:for i in r...
input()
R , 150 bytes
más limpiamente (agrega un byte)
La estructura básica se llama a sí misma recursivamente, diciéndose a sí misma tanto el número final a llamar como el nivel actual. Comienza con un valor predeterminado para y = 1, por lo que solo necesita una variable para la llamada inicial. Define rápidamente dos valores que se usan con frecuencia. Luego simplemente repite todo el número necesario de veces.
Cada uno de estos prueba implícitamente si se debe agregar la cabeza a derecha o izquierda y colocarla adecuadamente.
fuente
#
antes del título en el editor de rebajas para formatearlo como las otras respuestas.TSQL, 189 bytes
Ahora con aceptación de entrada, gracias a @PatrickRoberts
Violín
fuente
i
a un costo de 4 bytesC,
328238234215 bytes:Una implementación recursiva que utiliza mucho formato de cadena y la
memset
función incorporada . Intentaré jugar más golf con el tiempo tanto como pueda.¡C en línea! (Ideona)
fuente
17
y más allá, la lógica se rompe por alguna razón, y por lo tanto, también lo hacen las tortugas. Actualmente estoy tratando de descubrir qué está mal.'c'
) por su código ASCII para ahorrar un carácter cada uno :)Java 1.7, 238 bytes
Un conjunto de dos funciones: primero itera sobre la entrada (# de tortugas), segundo facilita la construcción de una secuencia de caracteres repetidos de forma recursiva (es decir, los espacios iniciales, la parte posterior y el vientre de las tortugas).
Sin golf:
¡Ejecutarlo! (Ideona)
Supuse que está bien excluir la definición de clase del recuento de bytes.
Es posible que pueda jugar un poco más de golf al invertir el orden de iteración del bucle (construir desde la tortuga inferior hacia arriba) y / o volverme completamente recursivo como algunas de las otras respuestas.
Nota personal: Java realmente carece de una taquigrafía incorporada para repetir n caracteres ...
fuente
Pitón,
137120113110 bytesSin golf:
Las cabezas estaban duras.
fuente
('o','')[b]
, puedes hacer'o'*(1-b)
(y'o'*b
para('o','')[1-b]
).'0'*-~-1
es más corto que'0'*(1-b)
F #,
218207202196187 bytes.Afeitó la mayoría de estos bytes al incluir variables
La lógica es robada descaradamente de esta respuesta de Python
Pruébalo en línea.
fuente
CJam , 88 bytes
Primero hace la tortuga más grande (porque de lo contrario, ¿en qué se pararía cualquier otra tortuga?), Luego reduce gradualmente el tamaño hasta que se haga la más pequeña. Funciona para cualquier número entero mayor que 0.
Pruébalo en línea!
fuente
Python 2.7,
255238236 bytesAunque esto pierde con las otras dos soluciones de Python 2, me gustó mi enfoque recursivo:
edit1: eliminó algunos bytes al eliminar algunos reemplazos
edit2: afeitó 2 bytes guardando los guiones bajos como una variable
fuente
Python 2, 147 bytes
Pruébalo en línea
fuente
Python 2.7,
139114113130 bytesTambién me gustó el enfoque recursivo de Iguanodon, así que aquí hay un intento un poco más corto.
EDITAR
Un poderoso
25269 bytes de golf debido a algunos consejos fantásticos de Destructible Watermelon. ¡Muchas gracias!Piensa que puede ser la respuesta más corta de Python ahora :-)fuente
i=input();t(i)
parte, porque solo puedes tener una función.PowerShell ,
10510097878584 bytes-21 bytes gracias a mazzy, el loco
Pruébalo en línea!
Cambia inteligentemente las variables
$_--
para evitar usar($_+1)
bloques repetidos para guardar varios bytes. También convierte el argumento único en una cadena que luego se convierte en un int cuando se usa en un rango para recorrer el número de tortugas. El mayor truco ahora es que el segundo nivel del espaciado de una tortuga solo aumente cada dos filas restando$_%2
(es decir, 0 si es par, 1 si es impar) del conteo de filas actual.De lo contrario, se trata de una gran cantidad de índice de matemáticas para conseguir adecuada
_
ycargos, incluyendo un contador de retraso en la forma de
$i++
, y ahora sólo un único índice de la lista para poner la cabeza en el lado correcto.fuente
ES6 (JavaScript), 140 bytes
Código
Prueba
fuente
Lienzo , 26 bytes.
Pruébalo aquí!
fuente