Algunas personas cuentan ovejas para dormir. Otros cuentan cabras.
Escriba un programa o función que tome un entero positivo N y produzca N-1 cabras despiertas seguidas de una cabra dormida, como si alguien estuviera contando N cabras y en el último se durmieron.
Las cabras despiertas se ven así:
\
___/o>
-(___)"
'' ''
Las cabras dormidas se ven así:
\
___/->
,(___)"
`` ``
Están encadenados con un solo espacio entre la barba y la cola de las cabras adyacentes:
\ \ \
___/o> ___/o> ___/->
-(___)" -(___)" ,(___)"
'' '' '' '' `` ``
La salida puede tener espacios finales y una nueva línea final.
El código más corto en bytes gana.
Ejemplos
N = 1:
\
___/->
,(___)"
`` ``
N = 2:
\ \
___/o> ___/->
-(___)" ,(___)"
'' '' `` ``
N = 3:
\ \ \
___/o> ___/o> ___/->
-(___)" -(___)" ,(___)"
'' '' '' '' `` ``
N = 4:
\ \ \ \
___/o> ___/o> ___/o> ___/->
-(___)" -(___)" -(___)" ,(___)"
'' '' '' '' '' '' `` ``
Un N más grande debería funcionar igual de bien.
code-golf
string
ascii-art
kolmogorov-complexity
Pasatiempos de Calvin
fuente
fuente
Respuestas:
MATL ,
5653 bytesPruébalo en línea!
Explicación
Cabra despierta
La cabra despierta se puede meter en la cuerda.
y desempaquetado como se explicará en breve. Sin embargo, los símbolos de comillas simples tendrían que duplicarse para escapar de ellos, por lo que el literal de cadena tendría que definirse como (tenga en cuenta los símbolos de comillas simples y la duplicación de los originales):
Para guardar bytes, definimos la cadena usando caracteres un punto de código por encima de eso, evitando así la duplicación. La cadena literal se convierte en
Al final del código restaremos 1 y convertiremos a char. (Podríamos hacerlo ahora, justo después del literal de cadena; pero dejarlo para el final ahorrará otra duplicación de comillas simples, como veremos).
Para explicar cómo se desempaqueta la cadena, trabajaremos con los caracteres originales (que se producen al final del código al sustraer 1), por lo que la explicación es más fácil de seguir. Primero reformamos la cuerda
en una matriz de caracteres 2D de 8 filas, en orden de columna mayor (abajo, luego a través). Esto rellena automáticamente la última columna con char 0 (al final del código, restando 1 lo transformará en el número −1, que convertido a char devuelve char 0). Char 0 se muestra como un espacio. Así que efectivamente estamos rellenando con espacios. El resultado de la remodelación es
Ahora volteamos verticalmente:
y luego transponer y voltear verticalmente de nuevo para producir la cabra despierta:
Las dos operaciones de volteo son necesarias porque la cadena empaquetada original está "en reversa". Esto es para explotar el hecho de que la matriz de caracteres 2D real que representa a la cabra tiene 6 espacios iniciales en su primera fila, que se rellenan automáticamente al rellenar cuando la cadena se forma en una matriz 2D de 8 filas. Pero el relleno se realiza al final (no al principio) de la última columna (no fila), por lo tanto, se voltea y se transpone.
Cabra dormida
Una cabra dormir se genera a partir de una cabra despierto por caracteres transliteración
o
,'
,-
en-
,`
,,
respectivamente. En realidad, a causa de la transformación de un código de punto anterior, transliteramos caracteresp
,(
,'
en.
,a
,-
, que a su vez nos salva de tener que duplicar el símbolo con una comilla simple. Esta es la razón por la cual la operación de restar uno se dejó para el final del programa.Estructura de código
N
tiempo de cabra despierto , trabajando con puntos de código aumentados en 1.Código comentado
fuente
Python 3.6, 102 bytes
Yaay, cuerdas f !
fuente
Javascript, 122 bytes
Responder
Nota al margen
En el siguiente código (91 bytes) las cabras están alineadas verticalmente. No cumple con el formato de salida, pero podría ser interesante observar que la alineación horizontal requerida en el formato de salida necesita más bytes:
fuente
Lote, 234 bytes
Toma información de stdin. Batch tiene problemas con
"
y>
por varias razones, así que tengo que usar marcadores de posición y luego cambiarlos al final.fuente
set/pn
funciona ._.^
personajes escapa.Pyke
5654 bytesPruébalo aquí!
4 bytes demasiado porque Pyke no permite comillas dobles en cadenas :(
fuente
Javascript (ES6),
110109 bytesTener que admitir los tres tipos de caracteres de comillas fue molesto, pero afortunadamente el comentario de @ pinkfloydx33 me dio la inspiración de que podía agregar las comillas al final, lo que me ahorró 1 byte.
fuente
'+"'' ''"
(asume comillas simples están de vuelta garrapatas ya que no tengo idea de cómo conseguir un acento grave en un bloque de código en los comentarios)f=
en el recuento de bytes, solo está ahí para completar.GolfScript , 91 bytes
Entrada:
3
Salida:
Explicación
Pruébalo en línea!
fuente
Gelatina ,
6256 bytesPruébelo en TryItOnline
¿Cómo?
fuente
PHP, 200 bytes
fuente
C ++, 180 bytes
fuente
#include <string>
yo bienusing namespace std;
ousing std::string;
en su cuenta de bytes si su función no se puede compilar sin ellos.Pipa , 60 + 1 = 61 bytes
Un byte agregado para la
n
bandera.Construye una cabra despierta como una lista de líneas y la tira
y
. Se multiplican las cuerdas paraa-1
despertar a las cabras. Reemplaza-o'
con,-`
eny
y lo concatena hasta el final. Impresiones, separadas por nueva línea.Pruébalo en línea!
(Creo que esta es la primera vez que uso la sintaxis de cadena de escape de Pip
\"...\"
, que permite comillas dobles literales en la cadena).fuente
CJam , 58 bytes
Pruébalo en línea!
Explicación
fuente
Python 2.7,
101113 bytesEditar: definición de función agregada
des-golfificado:
Nota Python2.7 es un byte más corto que Python3 debido a que no necesita parentesis al imprimir.
fuente
n
, y se ha perdido el cambio de cola para la cabra dormida (¿también vio la respuesta Py 3.6?).print "...
y colocar todo en una línea, usando 1;
para separar las dos declaraciones. La cola todavía no está en el código de golf que se muestra, pero parece que la has contado, todo eso debería tener 112 bytes .05AB1E , 66 bytes
Pruébalo en línea!
Explicación
fuente
Bash + GNU Coreutils,
165155 bytesCorre con:
Básicamente el programa imprime N veces de la misma cabra (invertida), y los sustitutos de la primera
-
, para,
, la primerao
para-
y la primera'' ''
para los acentos abiertos. Luego invierte las líneas.fuente
PHP,
133131 bytesEncontré dos bytes para jugar golf lejos de una de las versiones sin rizos.
fuente
PowerShell v2 +, 96 bytes
(ab) usa el
Write-Output
formato predeterminado para incluir una nueva línea entre los elementos. Aprovecha la concatenación y multiplicación de cuerdas para construir las cabras línea por línea. El único truco real es la primera línea$n--
para generar el número correcto de oídos y luego la disminución posterior$n
para que sea correcta para el resto de las líneas.fuente
Ruby, 102 bytes
fuente
Python 3. 170 bytes
hmm, aparentemente construir la cadena sin hacer la manipulación de la lista produce un código más corto
fuente
Fórmula IBM / Lotus Notes,
187174188 bytes(no compite)EDITAR Encontró un espacio que no debería haber estado allí y eliminó un @Implode innecesario
188 ya que me había perdido el hecho de que la cola de la cabra dormida es diferente :-(
Sin golf:
Uso:
Cree un formulario de Notas con dos campos llamados a y g.
a = editable, número, g = calculado, texto.
Pegue la fórmula anterior en g y proporcione un valor predeterminado de 0.
Establezca la fuente del formulario en Terminal.
Cree un nuevo documento con el formulario, ingrese un número en ay presione F9 para actualizar las cabras.
Muestras:
No compite ya que el formato se complica cuando el número de cabras alcanza el ancho de la página.Dado un infinitamente amplia pantalla que
debefuncionará para cualquier número de cabrassin embargo. Esto es lo que parece cuando la página no es lo suficientemente ancha.fuente
Emacs Lisp, 241 bytes
"Ligeramente no golfista"
donde
s
hay una cabra dormida,a
agrega una cabra despierta yg(n)
es la función de conteo.fuente
Java 8,
236222218173 bytesExplicación:
Pruébalo en línea.
fuente
Lienzo , 58 bytes.
Pruébalo en línea!
Respuesta bastante aburrida, realmente ... construye la cabra despierta, la repite horizontalmente
n-1
, construye y agrega la cabra dormida, imprime el resultado.fuente