Escriba un programa o función que "reaccione" a un número entero dado n (entrada a través del parámetro de función / args / stdin)
Al programa no le importan los números negativos, le gustan los pares, no le gustan los números impares y teme al número 13.
Debería mostrar lo siguiente:
si n <0:
--------------------------
| |
| |
(| _ _ |)
| |
| |
| |
| |
| oooooooooo |
| |
| |
| |
--------------------------
si n% 2 == 0 yn> -1:
--------------------------
| |
| |
(| ^ ^ |)
| |
| |
| |
| o o |
| oooooooooo |
| |
| |
| |
--------------------------
si n% 2 == 1 yn> -1 yn! = 13:
--------------------------
| |
| |
(| > < |)
| |
| |
| |
| |
| oooooooooo |
| o o |
| |
| |
--------------------------
si n == 13:
--------------------------
| |
| |
(| (O) (O) |)
| |
| |
| oooooooooo |
| o o |
| oooooooooo |
| |
| |
| |
--------------------------
La solución más corta en bytes gana.
Respuestas:
CJam - 169
Pruébalo en http://cjam.aditsu.net/
Explicación de alto nivel:
S24*aB*
crea una matriz llena de espacios, ya que la cara sin bordesli_D=3{_0<2{_2%}?}?\;:X
lee el número y lo convierte en 0 (par), 1 (impar), 2 (negativo) o 3 (13), almacenándolo en XX"^^<>__":s"(O)"a2*+2/=~
selecciona los tipos de ojos (2 cuerdas){S*_@+_,C\-S*2*+@@++}:F
- función F toma 2 cadenas (digamos S1, S2) y un número (decir N) y hace que una cadena 24-char contiene N espacios, S2, otros espacios, S1, N espacios2 (eyes) 6X3=- (F)~t
pone el línea de los ojos en la matriz7'o5*_7F:Mt
pone el línea de boca común en la matriz, y también la guarda en MX3={5Mt6'o_7Ft}*
si X es 3, coloca a M nuevamente en la matriz, 2 líneas más arriba, y coloca los lados de la boca en medioX2<{X2*6+'o_5Ft}*
si X es 0 o 1, coloca las esquinas de la boca en la posición apropiada{" |"\+'|+}%
agrega bordes verticales y un espacio a la izquierda en cada líneaS'-26*+aa2*\*
agrega los bordes horizontales_3=1>"()"\*3\t
agrega las orejasN*
agrega separadores de nueva líneafuente
Rubí,
241224Esto define una función que se llamará like
f[13]
. Estoy seguro de que hay mucho margen de mejora, similar a lo que Ventero me ayudó a hacer aquí .Básicamente, primero estoy construyendo el marco áspero y conecto las orejas y la boca. Luego coloco los ojos dependiendo del número. Mientras trabajo con los personajes para ponerlos en los ojos, también cuido las diferentes bocas para que no tenga que verificar el tipo de número nuevamente. Finalmente, necesito arreglar el ojo derecho para números impares, porque el código anterior pone la misma cadena en ambos ojos.
fuente
C # - 349 bytes
Ciertamente no va a ganar ningún premio, sino una forma diferente de hacer las cosas.
Golfizado:
Menos golfizado:
fuente
Python 2 - 255
No muy corto, pero lo publicaré de todos modos:
¡Echo de menos la asignación de elementos para cadenas en Python! :( Entonces uno podría comenzar con la matriz de caracteres y simplemente modificar los ojos y la boca.
fuente
b=bytearray()
y luegob+'mystring'
generará un bytearray mutable, que se imprime de la misma manera que cualquier otra cadena.Pitón 2, 257
No es un ganador, sino un enfoque alternativo, ¡se acercó bastante! Espero poder exprimir algunos caracteres más. Construye todas las líneas pieza por pieza, utilizando subcadenas comunes para realmente exprimir los bytes.
fuente
CJam, 202
fuente