Wir alle lieben Horoskope, nicht wahr ? Bei dieser auf meinem Smartphone installierten Horoskop-App ist jedoch ein schwerwiegendes Problem aufgetreten, dass nur das Symbol des Sternzeichens für das jeweilige Tageshoroskop angezeigt wird. Jetzt erinnere ich mich an mein Horoskop, aber es ist schwer, mich an andere zu erinnern, an deren Horoskop ich interessiert bin.
Herausforderung
Hier ist also Ihre Herausforderung für eine weitere Ergänzung der ASCII Art of the Day-Reihe. Geben Sie bei einer Eingabe von Datum und Monat das entsprechende Sternzeichen im ASCII-Format wie unten gezeigt aus. Jedem Sternzeichen folgt der Name und der Datumsbereich ( DD MM
Format) für das Sternzeichen.
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
'-. .-'
: :
--:--:--
: :
.-' '-.
Eingang
- Sie würden zwei Ganzzahlen erhalten, die dem Datum des Monats und dem Monat des Jahres (in dieser Reihenfolge) des Geburtstages entsprechen.
- Das Datum und der Monat werden
1
wie in normalen Kalendern indiziert. - Sie können die Eingabeform STDIN / ARGV / Funktionsargumente oder die nächstliegende Entsprechung verwenden
Ausgabe
- Basierend auf dem Datumsbereich, in den das Eingabedatum fällt, wird das entsprechende Sternzeichen an STDOUT ausgegeben.
- Sie können bis zu 4 nachgestellte Leerzeichen in jeder Zeile verwenden, jedoch keine führenden Leerzeichen, die nicht Teil der Ausgabe sind.
- Sie können entweder ein vollständiges Programm oder eine benannte Funktion schreiben.
Das ist Code-Golf, also gewinnt der kürzeste Code in Bytes!
Bestenliste
Der erste Beitrag der Serie generiert eine Rangliste.
Um sicherzustellen, dass Ihre Antworten angezeigt werden, beginnen Sie jede Antwort mit einer Überschrift. Verwenden Sie dazu die folgende Markdown-Vorlage:
# Language Name, N bytes
Wo N
ist die Größe Ihres Beitrags? Wenn Sie Ihren Score zu verbessern, Sie können alte Rechnungen in der Überschrift halten, indem man sich durch das Anschlagen. Zum Beispiel:
# Ruby, <s>104</s> <s>101</s> 96 bytes
quelle
Antworten:
CJam,
296284272265264 BytesProbieren Sie es online im CJam-Interpreter aus .
Idee
Wir beginnen, indem wir alle zwölf Zeichen mit der Zeichenfolge
<SP><LF>
als Trennzeichen verbinden. Wir entscheiden uns dafür, dass die Tierkreiszeichen keine nachgestellten Leerzeichen enthalten, damit sie leicht voneinander getrennt werden können.Die verknüpfte Zeichenfolge ist 542 Byte lang. 236 dieser Bytes sind Leerzeichen, das ist fast die Hälfte von ihnen. Wir erstellen ein Array, das für jedes Leerzeichen eine 1 und für jedes Nicht-Leerzeichen eine 0 enthält. Auf diese Weise kostet das Codieren eines Leerzeichens nur 1 Bit.
Entfernen Sie alle Leerzeichen aus der verknüpften Zeichenfolge. Die Zeichen bleiben übrig
<LF>."'()-/:J\_|
. Weisen Sie jedem von ihnen einen Wert (z. B. den Index in dieser Zeichenfolge) zwischen 0 und 12 zuSchließlich dekodieren wir die obigen Basis 2- und Basis 13-Arrays als Byte-Arrays.
Im endgültigen Programm
DD MM
berechnen wir für eine bestimmte Eingabe(int(MM) + (int(DD) > 20)) % 12
den obigen Prozess in umgekehrter Reihenfolge, um die Anordnung aller Sternzeichen zu erhalten und das richtige auszuwählen.Code
quelle
CJam, 324 Bytes
Mein erster Versuch. Probieren Sie es online aus
quelle
Python 2,
961698692687 BytesIch gehe auf jeden Fall noch weiter Golf spielen und wollte nur eine Idee auf den Tisch legen. Jetzt mit einem Wörterbuch.
Alte Methode mit Interleaving.
quelle
Python 2,
565568553 BytesAlso war ich ein bisschen faul und habe beschlossen, diesen AAotD nicht zu golfen. Stattdessen habe ich beschlossen, Python Golf selbst zu lassen.
Die obige Lösung wurde mit dem folgenden Code erstellt:
quelle
Perl, 414
Hier gibt es nicht viel zu tun, nur angewandte Wörterbuchkomprimierung:
Teste mich .
quelle