Todos amamos los horóscopos, ¿no ? Pero tengo un problema grave en esta aplicación de horóscopo instalada en mi teléfono inteligente que solo muestra el ícono del signo zodiacal para el horóscopo de cada día. Ahora sí recuerdo mi horóscopo, pero es difícil recordar a otros cuyo horóscopo me interesa.
Desafío
Así que aquí está su desafío para una nueva adición a la serie ASCII Art of the Day. Dada una entrada de fecha y mes, envíe el signo del zodiaco correspondiente en formato ASCII como se muestra a continuación. Cada signo del zodiaco se sigue después del nombre y rango de fechas ( DD MM
formato) para el signo del zodiaco.
Aries - 21 03 - 20 04
.-. .-.
(_ \ / _)
|
|
Taurus - 21 04 - 20 05
. .
'.___.'
.' '.
: :
: :
'.___.'
Gemini - 21 05 - 20 06
._____.
| |
| |
_|_|_
' '
Cancer - 21 06 - 20 07
.--.
/ _'.
(_) ( )
'. /
'--'
Leo - 21 07 - 20 08
.--.
( )
(_) /
(_.
Virgo - 21 08 - 20 09
_
' ':--.--.
| | |_
| | | )
| | |/
(J
Libra - 21 09 - 20 10
__
___.' '.___
____________
Scorpio - 21 10 - 20 11
_
' ':--.--.
| | |
| | |
| | | ...
'---':
Sagittarius - 21 11 - 20 12
...
.':
.'
'..'
.''.
Capricorn - 21 12 - 20 01
_
\ /_)
\ /'.
\ / :
\/ __.'
Aquarius - 21 01 - 20 02
.-"-._.-"-._.-
.-"-._.-"-._.-
Pisces - 21 02 - 20 03
'-. .-'
: :
--:--:--
: :
.-' '-.
Entrada
- Se le proporcionarán dos enteros correspondientes a la fecha del mes y el mes del año (en ese orden) del cumpleaños.
- La fecha y el mes se
1
indexarán como en los calendarios normales. - Puede tomar la forma de entrada STDIN / ARGV / argumentos de función o el equivalente más cercano
Salida
- Según el intervalo de fechas en el que se encuentra la fecha de entrada, salida a STDOUT, el signo del zodiaco correspondiente.
- Puede tener hasta 4 espacios finales en cada línea, pero no espacios iniciales que no sean parte de la salida.
- Puede escribir un programa completo o una función con nombre.
Este es el código de golf, por lo que gana el código más corto en bytes.
Tabla de clasificación
La primera publicación de la serie genera una tabla de clasificación.
Para asegurarse de que sus respuestas aparezcan, comience cada respuesta con un título, utilizando la siguiente plantilla de Markdown:
# Language Name, N bytes
¿Dónde N
está el tamaño de su envío? Si mejora su puntaje, puede mantener los puntajes antiguos en el título, tachándolos. Por ejemplo:
# Ruby, <s>104</s> <s>101</s> 96 bytes
fuente
Respuestas:
CJam,
296284272265264 bytesPruébelo en línea en el intérprete de CJam .
Idea
Comenzamos uniendo los doce signos usando la cadena
<SP><LF>
como separador. Optamos por que los signos del zodiaco no contengan espacios finales, por lo que esto permite separarlos fácilmente.La cadena unida tiene 542 bytes de longitud. 236 de estos bytes son espacios, que es casi la mitad de ellos. Construimos una matriz que contiene un 1 para cada espacio y un 0 para cada no espacio. De esta manera, codificar un espacio solo costará 1 bit.
Eliminando todos los espacios de la cadena unida, nos quedan los caracteres
<LF>."'()-/:J\_|
. Asignando a cada uno de ellos un valor (por ejemplo, el índice en esta cadena) entre 0 y 12Finalmente, decodificamos las matrices de base 2 y base 13 anteriores como matrices de bytes.
En el programa final, para una entrada dada
DD MM
, calculamos(int(MM) + (int(DD) > 20)) % 12
, invierte el proceso anterior para obtener la matriz de todos los signos del zodiaco y seleccionamos el apropiado.Código
fuente
CJam, 324 bytes
Mi primer intento Pruébalo en línea
fuente
Python 2,
961698692687 BytesDefinitivamente aún voy a jugar más al golf, solo quería dejar una idea. Ahora usando un diccionario.
Método antiguo, utilizando intercalado.
fuente
Python 2,
565568553 bytesAsí que era un poco vago y decidí no jugar golf a este AAotD. En cambio, decidí dejar que Python golf en sí.
La solución anterior se creó utilizando el código a continuación:
fuente
Perl, 414
No hay mucho que hacer aquí, solo aplica la compresión de diccionario:
Ponme a prueba .
fuente