(inspirado en esta pregunta SO )
Se le da como entrada un número entero positivo n .
En la menor cantidad de caracteres posible, genera un cohete en el arte ASCII con una cabeza, una cola y un cuerpo compuesto de n segmentos. No debe haber espacios finales ni líneas nuevas.
La cabeza y la cola del cohete son siempre iguales para cualquier valor de n . El cuerpo consta de dos tipos diferentes de segmentos que se alternan. Los ejemplos deberían aclarar la estructura del cohete.
Salida para n = 1:
/**\
//**\\
///**\\\
////**\\\\
/////**\\\\\
+=*=*=*=*=*=*+
|\/\/\/\/\/\/|
|.\/\/..\/\/.|
|..\/....\/..|
|../\..../\..|
|./\/\../\/\.|
|/\/\/\/\/\/\|
+=*=*=*=*=*=*+
/**\
//**\\
///**\\\
////**\\\\
/////**\\\\\
Salida para n = 2:
/**\
//**\\
///**\\\
////**\\\\
/////**\\\\\
+=*=*=*=*=*=*+
|../\..../\..|
|./\/\../\/\.|
|/\/\/\/\/\/\|
|\/\/\/\/\/\/|
|.\/\/..\/\/.|
|..\/....\/..|
+=*=*=*=*=*=*+
|\/\/\/\/\/\/|
|.\/\/..\/\/.|
|..\/....\/..|
|../\..../\..|
|./\/\../\/\.|
|/\/\/\/\/\/\|
+=*=*=*=*=*=*+
/**\
//**\\
///**\\\
////**\\\\
/////**\\\\\
Salida para n = 3:
/**\
//**\\
///**\\\
////**\\\\
/////**\\\\\
+=*=*=*=*=*=*+
|\/\/\/\/\/\/|
|.\/\/..\/\/.|
|..\/....\/..|
|../\..../\..|
|./\/\../\/\.|
|/\/\/\/\/\/\|
+=*=*=*=*=*=*+
|../\..../\..|
|./\/\../\/\.|
|/\/\/\/\/\/\|
|\/\/\/\/\/\/|
|.\/\/..\/\/.|
|..\/....\/..|
+=*=*=*=*=*=*+
|\/\/\/\/\/\/|
|.\/\/..\/\/.|
|..\/....\/..|
|../\..../\..|
|./\/\../\/\.|
|/\/\/\/\/\/\|
+=*=*=*=*=*=*+
/**\
//**\\
///**\\\
////**\\\\
/////**\\\\\
Respuestas:
CJam,
6763 caracteresEsto debería funcionar en el intérprete en línea .
Cómo funciona
Después de presionar la cadena Unicode, el fragmento
convierte la cadena de la base 60000 a la base 127, la convierte a cadena y evalúa el resultado.
El código que se ejecuta es el siguiente:
fuente
CJam, 121 bytes
Pruébalo en línea
Toma la entrada n a través de STDIN.
Agregaré una explicación en algún momento más tarde. Básicamente, todo es solo un montón de bucles de una manera muy ingenua. Para alternar entre las dos partes del cuerpo diferentes, tengo un bucle anidado sobre la parte y un bucle sobre
0
y1
. Luego solo agrego el iterador externo y el interno, y uso su paridad para decidir entre el triángulo apuntando hacia arriba o hacia abajo.fuente
java.util.NoSuchElementException
copia + pegando el código (señalandoLri
)Ruby, 203
Sin golf
Creo que en este caso es beneficioso tener una versión sin golf.
Explicación
Dudo que esto sea eficiente, pero fue divertido.
ARGV
.h
contiene la "cabeza" y la "cola" del cohete,r
contiene las "crestas" que separan las diferentes partes del cohetem
yp
son las partes superior e inferior del "cuerpo" del cohete.Array
["ridge", "top of body", "bottom of body", "ridge", "bottom of body", "top of body"]
y tomando los primeros3*n
elementos.puts
se asegura de que todo tenga su propia línea.fuente
Python, 120 + 77 + 1 = 198 caracteres
Esto terminó siendo un enfoque equivocado, pero ya había terminado cuando Martin publicó su respuesta.
Requiere un archivo
R
(+1 para nombre de archivo) de 77 bytes, que puede generar de la siguiente manera:fuente
JS, WIP, 252b o 173 caracteres
No es una función, por lo que debe establecer el valor de n al principio (3 aquí), luego ejecutarlo en la consola o en nodeJS.
Aquí está la versión 252b:
Y aquí está la versión de 173 caracteres (usando http://xem.github.io/obfuscatweet/ )
fuente
JavaScript (E6) 252
257Uso excesivo de string.repeat
fuente
Javascript (ES3): 243
219bytesfuente
SyntaxError: function statement requires a name
2: salida incorrecta, los segmentos del cuerpo no deben ser todos iguales (pares e impares son diferentes)