Desafío
El desafío es simple: imprimir una serpiente .
Obtendrá la longitud de la serpiente como entrada.
Una serpiente de longitud 2 se ve así:
==(:)-
Una serpiente de longitud 7 se ve así:
=======(:)-
En otras palabras, la longitud de una serpiente es cuántos signos iguales hay antes de la cabeza .
Uso
Digamos que hice una implementación de C ++ y la compilé ./getsnake.
Podría ejecutarlo así:
$ ./getsnake 10
==========(:)-
Aclaraciones
- Las lagunas estándar no están permitidas.
- Puede obtener entrada y salida de cualquier manera aceptable.
- Puede suponer que todas las entradas dadas son enteros positivos.
- Puede escribir una función en lugar de un programa normal.
code-golf
string
ascii-art
kolmogorov-complexity
InitializeSahib
fuente
fuente

Respuestas:
Hexagonía , 33 bytes.
No va a ganar, pero sigue siendo genial. Podría ser capaz de jugar más al golf.
Pruébalo en línea!
Golfizado:
Formateado:
Coloreado (Hecho con el Coloreador de Hexagonía de Timwi )
Explicación:
Bucle, imprima "=" hasta que el contador llegue a 0.
Impresión "("
Impresión ":"
Impresión ")"
Los valores anteriores se generaron usando un simple script de python. Sin embargo, me quedé sin espacio para el "-". Entonces, tuve que recurrir a trucos más avanzados.
Cuando el programa imprime ")", el valor de la celda no es 41, es 1065. La hexagonía simplemente modifica el valor al imprimir. Como resultado, (1065 * 1000 + 4)% 256 = 44, a solo uno de 45, el valor ascii para "-". Luego, simplemente incremento, imprimo e inserto una @ en algún lugar después de imprimir.
fuente
Chicle de canela, 7 bytes
Pruébalo en línea.
Hubiera sido de 6 bytes con la
psintaxis anterior: /Explicación
Al descomprimirse
p~=~(:)-, lapetapa simplemente lee la entrada y repite las=n veces.fuente
Brian y Chuck , 31 bytes
Entrada en forma de un valor de byte , por ejemplo, la entrada
!da una serpiente de longitud 33.Pruébalo en línea!
Ha sido un tiempo...
Explicación
Un manual rápido de Brian y Chuck:
,(entrada) y solo Chuck puede usar.(salida). Además de<y>hay{y}que mueven el cabezal de la cinta hacia la siguiente celda cero (o en el caso del{extremo izquierdo de la cinta si no hay ninguna celda cero en el camino). En lugar de[...], el único flujo de control es el?que cambia el control a la otra instancia si la celda actual no es cero. La primera instrucción ejecutada en la otra celda es la que sigue a la condición. Y finalmente,_es solo un alias para bytes nulos, por conveniencia.Ahora el código. Brian comienza con esto:
Esto lee la entrada en la primera celda de Chuck, luego mueve el cabezal de la cinta hacia la izquierda con
{(no hace nada en este momento) y disminuye la entrada-antes de cambiar el control de Chuck si el valor aún no es cero. Esto comienza el ciclo principal. Chuck luego ejecuta este bit:Esto mueve la cabeza de la cinta en Brian hasta el final, mueve dos celdas a la izquierda
=e imprime antes de la cabeza de la cinta completamente a la izquierda y cambia el control de nuevo a Brian. Así es como los bucles generalmente funcionan en B&C.Una vez que la entrada se ha reducido a cero, la
?cinta de Brian no hará nada. Entonces Brian ejecuta esta parte:No
):(=hay operaciones, por lo que el código real es justo>}-?. Nos movemos fuera de la celda cero con>, subimos a_con}, decrementamos para que no sea cero y cambiamos a Chuck con?. Luego se ejecuta el último bit de Chuck:Esto simplemente imprime los cinco caracteres frente a Chuck, es decir
=(:)-. Tenga en cuenta que necesitamos imprimir otro=ya que el bucle principal solo se ejecutaN-1veces para la entradaN.fuente
V , 8 bytes
Pruébalo en línea!
V usa la codificación "Latin1".
Explicación:
fuente
Retina , 10 bytes
Pruébalo en línea!
Esta es una simple sustitución de expresiones regulares.
Coincide con lo
.+que coincide con toda la entrada, y luego lo sustituye con$*=(;)-.Esta
$*es una característica única en Retina: es el operador especial de repetición de caracteres.Por ejemplo,
5$*xse convertiríaxxxxx.En el caso de que el argumento anterior esté ausente, toda la coincidencia se utiliza como argumento predeterminado.
fuente
Python, 21 bytes
Ideone it!
fuente
"="*input()+"(:)-"Haskell, 25 bytes
'='<$[1..n]es equivalente areplicate n '='.fuente
Java 8, 52 bytes
Banco de pruebas. (Compilar> Ejecutar)
Créditos .
la forma tradicional,
615453 bytes7 bytes gracias a Kevin Cruijssen.
1 byte gracias a Dom Hastings.
fuente
for(int i=0;i<n;i++)se puede jugar golffor(;n>0;n--), ya que de todos modos no necesita la entrada para nada más que el bucle for.for(;n-->0;)para guardar otro byte!Jalea , 9 bytes
Pruébalo en línea!
fuente
C, 38
Pruébalo con ideone.
fuente
f(n){~-printf(n?"=":"=(:)-")||f(~-n);}.f(n){for(;n;printf(n--?"=":"(:)-"));}para 1.05AB1E,
109 bytesExplicación
Pruébalo en línea
1 byte guardado gracias a Adnan.
fuente
'=×"ÿ(:)-por 9 bytes :). Esto utiliza la interpolación de cadenas.ÿhace :)Javascript, 23 bytes
fuente
n(3)y recibí unUncaught ReferenceError: n is not definederror ...x=n=>"=".repeat(n)+"(:)-"; x(7);x=y cambiarse a 25 caracteres?C #, 28 bytes
fuente
Python , 24 bytes.
input()obtiene entrada del usuario*, cuando se usa en cadenas y un entero, crea una nueva cadena, que está hecha de copias unidas del original. Por ejemplo:"hello "*3salidashello hello hello.Al multiplicar
=yinput(), obtiene una cadena de=la longitud que especifica el usuario.El uso
+une dos cuerdas, en este caso, nuestro cuerpo"=…="con nuestra cabeza,"(:)-"para hacer la serpiente.printda salida al resultado.fuente
GolfScript,
1110 bytesMultiplica "=" por entrada y agrega encabezado.
-1 gracias a Leaky Nun
fuente
Mathematica,
2120 bytesFunción anónima. Toma un número n como entrada y devuelve una serpiente de longitud n como salida.
"="~Table~#genera una lista{"=", "=", ..., "="}de longitud n , y<>"(:)-"concatena los elementos de la lista y se agrega"(:)-"a la cadena resultante.fuente
"="~Table~#<>"(:)-"&R,
3227 bytesEsta solución es bastante sencilla, la
repfunción repite el primer elemento ("=")scan()veces, que de hecho es la entrada del usuario.EDITAR :
Respuesta ligeramente más corta, usando
scan()directamente.Alternativamente,
para una serpiente no picada ( 34 bytes )
fuente
sep=""que se necesita aquí, de lo contrario su apariencia de serpientes como la que atraviesa la vía férrea:= = = (:)-.sepSin embargo, agregaré el como nota al margen;)Lote, 68 bytes
fuente
CJam,
1311 bytesPruébalo aquí.
-2 bytes gracias a quartata
fuente
'=*lugar de{'=}*.Perl 6 ,
16 1512 bytesExplicación:
Uso:
fuente
JAISBaL , 9 bytes
Verboso:
Probado con JAISBaL-0.0.7 (El .jar compilado se acaba de enviar, pero la fuente ha estado en git durante un tiempo)
fuente
#antes del nombre del idioma para que se vea como el de todos los demás.PowerShell v2 +, 19 bytes
Programa completo Toma datos
$args[0], usa la multiplicación de cuerdas para construir el cuerpo, luego la concatenación de cuerdas para pegar en la cabeza.fuente
"$("="*[int]$args[0])(:)-"C,
464543bytesahorrado 2 bytes gracias a owacoder! ahorrado 3 bytes gracias a rici!
Pruébalo en Ideone!
fuente
-->operador misterioso ataca de nuevo.>0y guardar dos bytes.f(n){while(4-printf("=\0(:)-"+2*!n--));}Cheddar, 15 bytes (sin competencia)
Una respuesta directa.
fuente
Sesos , 11 bytes
Hexdump:
Pruébalo en línea!
Ensamblador:
fuente
K, 17 bytes
Ejemplo;
Explicación;
fuente
-1(...);?{(x#"="),"(:)-"}Perl, 16 + 1 (
-pbandera) = 17 bytesNecesita
-pbandera, así que corre con:fuente
Minkolang 0.15 , 12 bytes
Pruébalo aquí!
Explicación
fuente
Befunge-98, 24 bytes
Toma datos numéricos del usuario, luego imprime la serpiente.
fuente
Matlab / Octave, 22 bytes
Esta es una función anónima.
Pruébalo en Ideone .
Explicación
Asumir
n= 5.1:nproduce el vector fila[1 2 3 4 5].~(1:n)niega cada entrada, por lo que da[0 0 0 0 0]....+61agrega61a cada entrada, por lo que da[61 61 61 61 61].61es el valor ASCII del caracter=.[... '(:)-']concatena eso con la cadena'(:)-'. Esto se convierte automáticamente[61 61 61 61 61]en la cadena'====='antes de la concatenación.fuente