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
p
sintaxis anterior: /Explicación
Al descomprimirse
p~=~(:)-
, lap
etapa 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-1
veces 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$*x
se 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 defined
error ...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 "*3
salidashello 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.print
da 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
rep
funció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:= = = (:)-
.sep
Sin 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.>0
y 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 (
-p
bandera) = 17 bytesNecesita
-p
bandera, 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:n
produce el vector fila[1 2 3 4 5]
.~(1:n)
niega cada entrada, por lo que da[0 0 0 0 0]
....+61
agrega61
a cada entrada, por lo que da[61 61 61 61 61]
.61
es 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