Les 21 coiffures de l'Apocalypse
Étant donné une liste de nombres entre 1 et 21 (ou 0 et 20), sortez un dessin "cousu ensemble" des faces suivantes ( voir les règles pour les informations de couture ):
___ ,,, ooo === +++ ### -*~*-
(o o) (o o) (o o) (o o) (o o) (o o) (o o)
ooO--(_)--Ooo-ooO--(_)--Ooo-ooO--(_)--Ooo-ooO--(_)--Ooo-ooO--(_)--Ooo-ooO--(_)--Ooo-ooO--(_)--Ooo-
*** ||| _/7 ))) ((( xxx @__
(o o) (o o) (o o) (o o) (o o) (o o) (o o)
ooO--(_)--Ooo-ooO--(_)--Ooo-ooO--(_)--Ooo-ooO--(_)--Ooo-ooO--(_)--Ooo-ooO--(_)--Ooo-ooO--(_)--Ooo-
((_ >X< '*` ^^^ )|( \|/ &&&
(o o) (o o) (o o) (o o) (o o) (o o) (o o)
ooO--(_)--Ooo-ooO--(_)--Ooo-ooO--(_)--Ooo-ooO--(_)--Ooo-ooO--(_)--Ooo-ooO--(_)--Ooo-ooO--(_)--Ooo-
Chaque visage unique répertorié sur une nouvelle ligne (le # est l'ID entier du visage):
___
(o o)
ooO--(_)--Ooo #1
,,,
(o o)
ooO--(_)--Ooo #2
ooo
(o o)
ooO--(_)--Ooo #3
===
(o o)
ooO--(_)--Ooo #4
+++
(o o)
ooO--(_)--Ooo #5
###
(o o)
ooO--(_)--Ooo #6
-*~*-
(o o)
ooO--(_)--Ooo #7
***
(o o)
ooO--(_)--Ooo #8
|||
(o o)
ooO--(_)--Ooo #9
_/7
(o o)
ooO--(_)--Ooo #10
)))
(o o)
ooO--(_)--Ooo #11
(((
(o o)
ooO--(_)--Ooo #12
xxx
(o o)
ooO--(_)--Ooo #13
@__
(o o)
ooO--(_)--Ooo #14
((_
(o o)
ooO--(_)--Ooo #15
>X<
(o o)
ooO--(_)--Ooo #16
'*`
(o o)
ooO--(_)--Ooo #17
^^^
(o o)
ooO--(_)--Ooo #18
)|(
(o o)
ooO--(_)--Ooo #19
\|/
(o o)
ooO--(_)--Ooo #20
&&&
(o o)
ooO--(_)--Ooo #21
Le visage est le suivant:
hhhhh
(o o)
ooO--(_)--OooS
Où se h
trouve la coiffure apocalyptique dynamique et S
le trait d'union de couture potentiel.
Exemples
Contribution: [1,2,3,4,5]
Production:
___ ,,, ooo === +++
(o o) (o o) (o o) (o o) (o o)
ooO--(_)--Ooo-ooO--(_)--Ooo-ooO--(_)--Ooo-ooO--(_)--Ooo-ooO--(_)--Ooo-
Contribution: [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21]
Production:
___ ,,, ooo === +++ ### -*~*- *** ||| _/7 ))) ((( xxx @__ ((_ >X< '*` ^^^ )|( \|/ &&&
(o o) (o o) (o o) (o o) (o o) (o o) (o o) (o o) (o o) (o o) (o o) (o o) (o o) (o o) (o o) (o o) (o o) (o o) (o o) (o o) (o o)
ooO--(_)--Ooo-ooO--(_)--Ooo-ooO--(_)--Ooo-ooO--(_)--Ooo-ooO--(_)--Ooo-ooO--(_)--Ooo-ooO--(_)--Ooo-ooO--(_)--Ooo-ooO--(_)--Ooo-ooO--(_)--Ooo-ooO--(_)--Ooo-ooO--(_)--Ooo-ooO--(_)--Ooo-ooO--(_)--Ooo-ooO--(_)--Ooo-ooO--(_)--Ooo-ooO--(_)--Ooo-ooO--(_)--Ooo-ooO--(_)--Ooo-ooO--(_)--Ooo-ooO--(_)--Ooo-
Entrée: ["Fraggle Rock"]
/ [22]
/ [-21041024]
/[22,23,24,25,26]
Production: Nobody cares.
Contribution: [1,1,1,1]
Production:
___ ___ ___ ___
(o o) (o o) (o o) (o o)
ooO--(_)--Ooo-ooO--(_)--Ooo-ooO--(_)--Ooo-ooO--(_)--Ooo-
Règles
- Les sauts de ligne / espaces / tirets précédents et finaux sont corrects.
- Les visages peuvent apparaître plusieurs fois dans l'entrée.
- S'il y a un nombre non valide dans l'entrée, vous pouvez avoir un comportement indéfini.
- La couture:
- Les faces cousues seront concaténées par un seul tiret sur la ligne du bas (3e).
- Les faces seront toutes sur une seule ligne (contrairement au premier dessin).
- L'entrée peut être indexée 0 ou 1, 20 étant le maximum pour 0, 21 pour 1.
- Il s'agit du code-golf , le plus petit nombre de victoires d'octets.
Réponses:
Japt
-R
,12211711311010910710510410310210099 octets1 indexé, avec habillage d'index. J'ai suivi la spécification ici, qui nécessite un trait d'union entre la dernière ligne de chaque face, plutôt que les cas de test, qui incluent un trait d'union après la dernière ligne de chaque face.
Essayez-le
la source
&
pour en profiterm³
était génial. D'autant plus que cela le rendait basé sur 1.&
là - bas si je le faisais à base de 1;) Je sens toujours qu'il y a plus à jouer au golf ici, mais il est tard, donc il faudra attendre jusqu'à demain.Python 2 , 209 octets
Essayez-le en ligne!
Indexation basée sur 0; rien de particulièrement intelligent ici, juste des données accessibles via le découpage et en utilisant exec au lieu d'une boucle.
la source
Fusain ,
103102 octetsEssayez-le en ligne! Le lien est vers la version détaillée du code. Explication:
Faites une boucle sur l'entrée deux fois. Chaque résultat est ensuite implicitement imprimé sur sa propre ligne.
Sur la deuxième boucle, il suffit de générer les yeux.
Enveloppez la coiffure 6 en
-
s, d'autres coiffures dans les espaces.Extrayez les trois caractères de coiffure d'une chaîne compressée.
Insérez neuf espaces entre chaque cheveux ou yeux.
Déplacez 4 espaces vers la gauche.
Imprimez le reste des visages, joint avec un
-
.la source
R ,
413391 octetsMerci Giuseppe pour 22 octets de moins et pour avoir moins de 400 octets.
Essayez-le en ligne!
la source
utf8ToInt
etintToUtf8
rep
pour raccourcir:for(i in s)K(I(c(rep<--
JavaScript (ES6),
200199 octetsAttend une entrée indexée 1.
Essayez-le en ligne!
Commenté
la source
Rubis , 164 octets
Zéro indexé. Essayez-le en ligne!
Toutes les choses difficiles se produisent sur la ligne supérieure.
"_,o=+# *| )(x ^ &"
contient toutes les coiffures avec 3 personnages identiques, dont nous sélectionnons lei
e caractère,j
.s'il
j
ne s'agit pas d'un espace, l'expression suivante renvoie 3 copies du caractère. S'il s'agit d'un espace, nous sélectionnons la coiffure correcte parmi les%w{}
. Les coiffures "bizarres" sont les numéros 6,9,13,14,15,16,18,19 eti%11-2
donnent un hachage parfait à0..7
Il ne reste plus qu'à remplir 14 espaces (centrés) et à imprimer un nombre approprié de middles / bas.
la source
center(14)
Python 2 , 204 octets
Essayez-le en ligne!
la source
Java 8,
273263 octetsEssayez-le en ligne.
Explication:
la source
R ,
247242 octetsEssayez-le en ligne!
Maintenant, essayer d'amener R à un nombre d'octets plus gérable ...
Étant donné que les manipulations de personnages dans R sont si désespérément verbeuses, je me suis décidé à répertorier tous les modèles de visage et de coiffure tels quels. Pour une jolie impression des coiffures
format
avec lesquelles j'utilise la fonctionjustify="centre"
. Malheureusement, nous devons utiliser un caractère de remplissage supplémentaire pouri==20
carformat
calcule le remplissage comme si la barre oblique inverse avait été échappée, comme\\|/
.La version actuelle ne pas de trait d'union de fin.
Edit: Crédit à JayCe pour -2 et Giuseppe pour -3 octets.
la source
justify="centre"
je pouvais probablement le réutiliser. Moins deux caractères :"/"=rep
format(h[i],,,,"c",14+!20-i)
*
est encore meilleure - elle ressemble maintenant à unestring * number
opération commune à de nombreuses autres langues!C! ( C-Wow 1.1.0), 251 octets
(Nécessite des arguments à transmettre lors de l'exécution du programme, séparés par des espaces)
Version non golfée:
la source
Rouge ,
333319 octetsEssayez-le en ligne!
la source
Rubis , 163 octets
Essayez-le en ligne!
0 indexé. J'ai tripoté la réponse de Level River St et j'ai trouvé une autre approche pour encoder les coiffures, apparemment d'un golfeur similaire. Ici, nous traitons la coupe de cheveux 5 caractères "la plus longue" comme un cas spécial, les modèles triviaux dans la première partie de la liste sont codés par 1 caractère chacun, et dans la deuxième partie, tous les modèles 3 caractères sont répertoriés littéralement, peu importe - ces caractères sont-ils distincts ou non? Vient enfin le passe-partout à face de singe.
la source
C (gcc) ,
210212 octets-4 octets grâce à plafond . (Il a de nouveau augmenté lorsque j'ai corrigé un bogue du code d'origine.)
Assez simple.
Essayez-le en ligne!
la source
PowerShell ,
187171 octets-16 octets grâce à mazzy
Essayez-le en ligne!
Indexé 0, a un trait d'union de fin.
Déroulé:
Rien d'extraordinaire. Seule la première ligne contient une logique décente. Il indexe dans la chaîne de cheveux en utilisant le
$current_entry_value*3
et écope ce morceau en utilisants
ubstring
, avant de joindre tous les morceaux en une seule grande ligne. Ran dans la question de `échapper au caret suivant, me laissant me demander pourquoi j'obtenais une erreur IndexOutOfBounds mais c'est corrigé. Maintenant, en utilisant une bien meilleure façon de combiner la première ligne.195 octets pour suivre la spécification sans trait d'union / tiret
la source
Python 3 , 240 octets
Essayez-le en ligne!
la source
Enchantements runiques , 313 octets
Essayez-le en ligne!
Raisonnablement compact en termes de compression des chaînes et de réutilisation des segments dans la mesure du possible, ainsi que d'utilisation des valeurs d'entrée comme sauts directs lorsque
B
élevage ranch.Si un espace de fin excessif est autorisé, celui-ci peut être raccourci de 2 octets en omettant le
4-
sur la dernière ligne. +2 octets pour un1-
si la finale-
est destinée à ne pas être là (spécification correspondante, exemples violés).Le morceau,
" (o o) "
est ennuyeux, impossible à compresser, car le construire en utilisant des choses comme" "4*
finit par avoir exactement le même nombre d'octets.Passer des entrées> 21 fait des choses amusantes. Par exemple, un seul 22 donne un rasage de près .
la source