Écrire un programme ou une fonction qui "réagit" à un entier donné n (entrée via le paramètre de fonction / args / stdin)
Le programme ne se soucie pas des nombres négatifs, aime même, n'aime pas les nombres impairs et craint le nombre 13.
Il doit afficher les éléments suivants:
si n <0:
--------------------------
| |
| |
(| _ _ |)
| |
| |
| |
| |
| oooooooooo |
| |
| |
| |
--------------------------
si n% 2 == 0 et n> -1:
--------------------------
| |
| |
(| ^ ^ |)
| |
| |
| |
| o o |
| oooooooooo |
| |
| |
| |
--------------------------
si n% 2 == 1 et n> -1 et n! = 13:
--------------------------
| |
| |
(| > < |)
| |
| |
| |
| |
| oooooooooo |
| o o |
| |
| |
--------------------------
si n == 13:
--------------------------
| |
| |
(| (O) (O) |)
| |
| |
| oooooooooo |
| o o |
| oooooooooo |
| |
| |
| |
--------------------------
La solution la plus courte en octets l'emporte.
Réponses:
CJam - 169
Essayez-le sur http://cjam.aditsu.net/
Explication de haut niveau:
S24*aB*
crée une matrice pleine d'espaces, car le visage sans les bordsli_D=3{_0<2{_2%}?}?\;:X
lit le nombre et le convertit en 0 (pair), 1 (impair), 2 (négatif) ou 3 (13), le stocker dans XX"^^<>__":s"(O)"a2*+2/=~
sélectionne les types d'oeil (2 chaînes){S*_@+_,C\-S*2*+@@++}:F
- la fonction F prend 2 chaînes (disons S1, S2) et un nombre (disons N) et crée une chaîne de 24 caractères contenant N espaces, S2, d'autres espaces, S1, N espaces2 (eyes) 6X3=- (F)~t
met la ligne des yeux dans la matrice7'o5*_7F:Mt
met la ligne buccale commune dans la matrice, et l'enregistre également dans MX3={5Mt6'o_7Ft}*
si X est 3, il met à nouveau M dans la matrice, 2 lignes plus haut, et place les côtés de la bouche entreX2<{X2*6+'o_5Ft}*
si X est 0 ou 1, il place les coins de la bouche dedans la position appropriée{" |"\+'|+}%
ajoute des bords verticaux et un espace à gauche sur chaque ligneS'-26*+aa2*\*
ajoute les bords horizontaux_3=1>"()"\*3\t
ajoute les oreillesN*
ajoute des séparateurs de nouvelle lignela source
Ruby,
241224Ceci définit une fonction à appeler comme
f[13]
. Je suis sûr qu'il y a beaucoup de place pour l'amélioration, similaire à ce que Ventero m'a aidé à faire ici .Fondamentalement, je construis d'abord le cadre rugueux et attache les oreilles ainsi que la bouche. Ensuite, je place les yeux en fonction du nombre. En travaillant sur les personnages à mettre dans les yeux, je m'occupe aussi des différentes bouches donc je n'ai plus à vérifier le type de numéro. Enfin, je dois fixer l'œil droit pour les nombres impairs, car le code ci-dessus met la même chaîne dans les deux yeux.
la source
C # - 349 octets
Je ne gagnerai certainement pas de prix, mais une manière différente de faire les choses.
Golfé:
Moins golfé:
la source
Python 2 - 255
Pas vraiment court, mais je le posterai quand même:
L'attribution des éléments pour les chaînes en Python me manque! :( Ensuite, on pourrait commencer par la matrice des caractères et simplement modifier les yeux et la bouche.
la source
b=bytearray()
, puisb+'mystring'
générerez un tableau de bord mutable, qui s'imprimera de la même manière que n'importe quelle autre chaîne.Python 2, 257
Pas un vainqueur, mais une approche alternative, assez proche! J'ai l'espoir de pouvoir en extraire quelques caractères supplémentaires. Construit toutes les lignes morceau par morceau, en utilisant des sous-chaînes communes pour vraiment extraire les octets.
la source
CJam, 202
la source