Nous aimons tous les horoscopes, n'est-ce pas ? Mais j'ai un grave problème dans cette application Horoscope installée sur mon téléphone intelligent car elle n'affiche que l'icône du signe du zodiaque pour l'horoscope de chaque jour. Maintenant, je me souviens de mon horoscope, mais il est difficile de se souvenir des autres dont l'horoscope m'intéresse.
Défi
Voici donc votre défi pour un autre ajout à la série ASCII Art of the Day. Étant donné une entrée de date et de mois, sortez le signe du zodiaque correspondant au format ASCII comme indiqué ci-dessous. Chaque signe du zodiaque est suivi après le nom et la plage de dates ( DD MM
format) du signe du zodiaque.
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
'-. .-'
: :
--:--:--
: :
.-' '-.
Contribution
- Vous recevrez deux nombres entiers correspondant à la date du mois et du mois de l'année (dans cet ordre) de l'anniversaire.
- La date et le mois seront
1
indexés comme dans les calendriers normaux. - Vous pouvez prendre la forme d'entrée STDIN / ARGV / fonction arguments ou l'équivalent le plus proche
Production
- Sur la base de quelle plage de dates la date d'entrée tombe, sortie vers STDOUT, le signe du zodiaque correspondant.
- Vous pouvez avoir jusqu'à 4 espaces de fin dans chaque ligne, mais aucun espace de début qui ne fait pas partie de la sortie.
- Vous pouvez soit écrire un programme complet ou une fonction nommée.
C'est du code-golf donc le code le plus court en octets gagne!
Classement
Le premier post de la série génère un classement.
Pour vous assurer que vos réponses s'affichent, veuillez commencer chaque réponse par un titre, en utilisant le modèle Markdown suivant:
# Language Name, N bytes
où N
est la taille de votre soumission. Si vous améliorez votre score, vous pouvez conserver les anciens scores dans le titre, en les barrant. Par exemple:
# Ruby, <s>104</s> <s>101</s> 96 bytes
la source
Réponses:
CJam,
296284272265264 octetsEssayez-le en ligne dans l' interpréteur CJam .
Idée
Nous commençons par joindre les douze signes en utilisant la chaîne
<SP><LF>
comme séparateur. Nous optons pour que les signes du zodiaque ne contiennent pas d'espaces de fuite, ce qui permet de les séparer facilement.La chaîne jointe est longue de 542 octets. 236 de ces octets sont des espaces, ce qui représente presque la moitié d'entre eux. Nous construisons un tableau qui contient un 1 pour chaque espace et un 0 pour chaque non-espace. De cette façon, l'encodage d'un espace ne coûtera que 1 bit.
En supprimant tous les espaces de la chaîne jointe, nous nous retrouvons avec les caractères
<LF>."'()-/:J\_|
. Attribuer à chacun d'eux une valeur (par exemple, l'index dans cette chaîne) entre 0 et 12Enfin, nous décodons les tableaux de base 2 et de base 13 ci-dessus en tant que tableaux d'octets.
Dans le programme final, pour une entrée donnée
DD MM
, nous calculons(int(MM) + (int(DD) > 20)) % 12
, inversons le processus ci-dessus pour obtenir le tableau de tous les signes du zodiaque et sélectionnez celui qui convient.Code
la source
CJam, 324 octets
Ma première tentative. Essayez-le en ligne
la source
Python 2,
961698692687 octetsCertainement aller encore plus loin au golf, je voulais juste poser une idée. Maintenant, en utilisant un dictionnaire.
Ancienne méthode, utilisant l'entrelacement.
la source
Python 2,
565568553 octetsJ'étais donc un peu paresseux et j'ai décidé de ne pas jouer au golf avec cet AAotD. Au lieu de cela, j'ai décidé de laisser le golf python lui-même.
La solution ci-dessus a été créée à l'aide du code ci-dessous:
la source
Perl, 414
Pas grand chose à faire ici, juste une compression de dictionnaire appliquée:
Testez- moi .
la source