Schreiben Sie ein Programm oder eine Funktion, die auf eine bestimmte Ganzzahl n "reagiert" (Eingabe über Funktionsparameter / args / stdin)
Das Programm kümmert sich nicht um negative Zahlen, mag gerade, mag ungerade Zahlen nicht und fürchtet die Zahl 13.
Es sollte Folgendes ausgeben:
wenn n <0:
--------------------------
| |
| |
(| _ _ |)
| |
| |
| |
| |
| oooooooooo |
| |
| |
| |
--------------------------
wenn n% 2 == 0 und n> -1:
--------------------------
| |
| |
(| ^ ^ |)
| |
| |
| |
| o o |
| oooooooooo |
| |
| |
| |
--------------------------
wenn n% 2 == 1 und n> -1 und n! = 13:
--------------------------
| |
| |
(| > < |)
| |
| |
| |
| |
| oooooooooo |
| o o |
| |
| |
--------------------------
wenn n == 13:
--------------------------
| |
| |
(| (O) (O) |)
| |
| |
| oooooooooo |
| o o |
| oooooooooo |
| |
| |
| |
--------------------------
Die kürzeste Lösung in Bytes gewinnt.
Antworten:
CJam - 169
Probieren Sie es bei http://cjam.aditsu.net/
Erklärung auf hoher Ebene:
S24*aB*
macht eine Matrix voller Leerzeichen, denn das Gesicht ohne Kantenli_D=3{_0<2{_2%}?}?\;:X
liest die Zahl und wandelt sie in 0 (gerade), 1 (ungerade), 2 (negativ) oder 3 (13) um. Durch Speichern in X werdenX"^^<>__":s"(O)"a2*+2/=~
die Augentypen ausgewählt (2 Zeichenfolgen){S*_@+_,C\-S*2*+@@++}:F
- Funktion F verwendet 2 Zeichenfolgen (z. B. S1, S2) und eine Zahl (z. B. N) und erstellt eine Zeichenfolge mit 24 Zeichen, die N Leerzeichen, S2, andere Leerzeichen, S1 und N Leerzeichen enthält.2 (eyes) 6X3=- (F)~t
Die Augenlinie wird in die Matrix eingefügt7'o5*_7F:Mt
setzt den gemeinsame Mundlinie in der Matrix und speichert sie auch in M,X3={5Mt6'o_7Ft}*
wenn X 3 ist, setzt sie M erneut in die Matrix, 2 Zeilen höher, und setzt die Mundseiten dazwischen,X2<{X2*6+'o_5Ft}*
wenn X 0 oder 1 ist, setzt sie die Mundwinkel ein Die entsprechende Position{" |"\+'|+}%
fügt vertikale Kanten hinzu und ein Leerzeichen links in jeder ZeileS'-26*+aa2*\*
fügt die horizontalen Kanten_3=1>"()"\*3\t
hinzu und fügt die Ohren hinzuN*
Fügt Zeilenumbrüche hinzuquelle
Ruby,
241224Dies definiert eine Funktion, die wie folgt aufgerufen werden soll
f[13]
. Ich bin sicher, es gibt viel Raum für Verbesserungen, ähnlich wie Ventero mir hier geholfen hat .Grundsätzlich baue ich zuerst das grobe Gerüst und befestige die Ohren sowie den Mund. Dann platziere ich die Augen je nach Anzahl. Während ich die Zeichen ausarbeite, die ich in die Augen stecke, kümmere ich mich auch um die verschiedenen Münder, damit ich nicht noch einmal nach der Art der Zahl suchen muss. Schließlich muss ich das rechte Auge für ungerade Zahlen korrigieren, da der obige Code die gleiche Zeichenfolge in beide Augen einfügt.
quelle
C # - 349 Bytes
Mit Sicherheit keine Preise gewinnen, aber eine andere Art, Dinge zu tun.
Golf gespielt:
Weniger golfen:
quelle
Python 2 - 255
Nicht wirklich kurz, aber ich werde es trotzdem posten:
Ich vermisse die Elementzuweisung für Zeichenfolgen in Python! :( Dann könnte man mit der Zeichenmatrix beginnen und einfach Augen und Mund modifizieren.
quelle
b=bytearray()
und dannb+'mystring'
wird erzeugen ein veränderliches bytearray, die die gleiche Art und Weise wie jede andere Zeichenfolge gedruckt wird .Python 2, 257
Kein Gewinner, aber eine alternative Herangehensweise, kam dem sehr nahe! Ich hoffe, ich kann ein paar Zeichen mehr herauspressen. Baut alle Zeilen Stück für Stück auf und verwendet dabei gemeinsame Teilzeichenfolgen, um die Bytes wirklich herauszudrücken.
quelle
CJam, 202
quelle