Les pavages hexagonaux , ou pavages de l'avion, sont tricolores - ce qui signifie qu'en utilisant seulement trois couleurs, comme le rouge, le bleu et le vert, chaque hexagone peut être coloré sans que deux hexagones partagent une bordure partageant une couleur. Un exemple partiel montrant un tel modèle.
Étant donné un pavage hexagonal partiel en ASCII (via STDIN, lecture à partir d'un fichier, etc.), changez les couleurs des caractères (via les codes ANSI, manipulation d'image, etc.) pour s'adapter à cette coloration. La torsion est le milieu des hexagones (les *
ci-dessous) sont les trois couleurs, et les lignes entre doivent être un mélange de leurs deux *
couleurs hexagones correspondantes . Si la ligne est sur la bordure extérieure, elle doit correspondre à la ligne correspondante *
.
Par exemple, étant donné le pavage hexagonal partiel de
/ \ / \ / \ / \
| * | * | * | * |
\ / \ / \ / \ /
| * | * | * |
\ / \ / \ /
supposons que nous décidions de colorier l'hex en haut à gauche *
pour être rouge, et ses deux voisins pour être bleu et vert (dans le sens horaire). Ensuite, la |
ligne doit être magenta et la /
ligne doit être jaune. Si nous continuons à colorier, nous finirons par arriver à quelque chose comme ça (agrandi pour plus de clarté):
Ou, pour une entrée de
/ \
| * |
/ \ /
| * |
/ \ /
| * |
\ /
vous pouvez le colorer ainsi (agrandi pour plus de clarté):
Quelques cas de test supplémentaires (votre code devrait être capable de les gérer):
/ \ / \
| * | * |
\ / \ /
| * |
/ \ / \
| * | * |
\ / \ /
/ \
| * |
\ / \
| * |
/ \ /
| * |
\ /
/ \
| * |
\ /
Règles
- L'entrée est garantie d'avoir au moins un hexagone, et aucune entrée n'aura de "trou".
- Vous n'avez pas besoin de commencer votre coloration avec du rouge, tant que vous maintenez la règle des trois couleurs.
- Si le pavage partiel peut être bicolore, vous pouvez le faire sans pénalité (comme dans le deuxième exemple) - vous n'avez pas nécessairement besoin d'extrapoler le pavage partiel à un pavage complet.
- Les centres hexagonaux
*
doivent être colorés en rouge, bleu ou vert, tandis que les lignes entre doivent être cyan, jaune ou magenta. Par exemple, avoir un Magenta*
n'est pas autorisé et un Rouge|
ou\
ou/
doit être sur la bordure extérieure du dessin. Voir Couleurs ci-dessous. - Si votre console n'a pas ces couleurs exactes, veuillez utiliser l'approximation la plus proche et spécifier dans votre réponse l'approximation que vous utilisez.
- Les espaces blancs de début ou de fin, y compris les retours à la ligne de fin, sont acceptables tant que les caractères s'alignent.
- Le pavage partiel peut être saisi avec un espace pour former un rectangle, si cela facilite la tâche de votre code.
- Un programme complet ou une fonction sont acceptables. S'il s'agit d'une fonction, vous pouvez renvoyer la sortie plutôt que de l'imprimer.
- La sortie peut être vers la console, enregistrée en tant qu'image, etc.
- Les failles standard sont interdites.
- Il s'agit de code-golf, donc toutes les règles de golf habituelles s'appliquent et le code le plus court (en octets) l'emporte.
Couleurs et mélanges de couleurs:
Les trois couleurs de base disponibles sont (avec des codes de couleur au format décimal RVB):
- rouge
(255,0,0)
- vert
(0,255,0)
- Bleu
(0,0,255)
Les combinaisons sont:
- Le rouge et le vert se combinent pour faire du jaune
(255,255,0)
- Le bleu et le vert se combinent pour faire du cyan
(0,255,255)
- Le rouge et le bleu se combinent pour faire du magenta
(255,0,255)
la source
*
Réponses:
JavaScript (ES6),
219203201 octetsExplication: Chaque caractère est enveloppé dans une
font
balise pour définir sa couleur, qui est calculée en vérifiant chaque carré, plus les carrés deux à gauche et à droite, plus les quatre carrés un en diagonale, pour*
s et si c'est le cas en combinant les couleurs de tous*
s trouvé. Les*
couleurs sont choisies simplement en prenant leur coordonnée horizontale modulo 3 et en déplaçant un masque de bits de manière appropriée. Modifier: enregistré 2 octets en passant de#RRGGBB
aux#RGB
couleurs.la source
JavaScript (ES6), 210 octets (en utilisant HTML + CSS)
Similaire à mon approche de la toile ; localise tous les
*
s dans la chaîne d'entrée et écrit des hexagones dans la page sous la forme d'<pre>
éléments absolument positionnés . Parce quemix-blend-mode
est défini surlighten
, l'ajout de couleur est effectué automatiquement lorsque les caractères se chevauchent.Afficher l'extrait de code
la source
Python 2 , 279 octets
Essayez-le en ligne!
Golfé et réparé grâce à user202729!
-27 octets grâce à M. Xcoder
-24 octets grâce à Jonathan Frech
la source
2-abs(i)
est2-(i&1)
dans ce contexte, 336 octets.\033
peut être\33
(enregistrer un octet) ou le\x1b
caractère réel ( enregistrer trois octets ).=
et un;
pour deux,
et un=
.Python 2 ,
346331 octetsEssayez-le en ligne!
la source
HTML (Canvas) + JavaScript (ES6), 13 + 251 = 264 octets
Localise tous les
*
s dans la chaîne d'entrée et peint un hexagone ASCII sur le canevas aux positions correspondantes. CarglobalCompositeOperation='lighter'
ajout de couleur est effectué automatiquement lorsque les caractères se chevauchent.HTML
Javascript
Un multiplicateur et une
scale()
commande supplémentaire ont été ajoutés à l'extrait de code pour plus de visibilité.Afficher l'extrait de code
Voir également mon approche basée sur CSS .
la source
MATLAB / Octave , 223 octets
Au format de code légèrement plus net:
L'entrée est prise comme un tableau 2D, par exemple en entrant ce qui suit lorsque vous y êtes invité:
Pour autant que je sache, MATLAB n'a pas la possibilité de sortir des couleurs sur la console (à l'exception des hacks Java sales que je remets en cause). En tant que tel, la sortie est imprimée à la place sur une figure.
La coloration est obtenue en trouvant l'emplacement de tous
*
dans l'entrée, puis dans un tableau de couleurs RVB (p
), une boîte 5x3 de 1 (255 dans la représentation des couleurs MATLAB) est écrite centrée sur le*
. La boîte est écrite dans la couleur correspondant à l'index mod-3 le long de chaque ligne, les lignes paires ayant l'indice de couleur décalé d'un décalage.Cela produit une matrice de couleurs où toutes les cases qui se chevauchent entraîneront la couleur mélangée requise. L'exemple ci-dessus produit la matrice de couleurs suivante.
Les régions blanches et noires ne sont pas pertinentes car à ces endroits, un espace est imprimé, ce qui signifie que nous ne voyons pas la couleur incorrecte.
Une fois la matrice de couleurs créée, nous affichons chaque caractère sur une figure à l'aide de la
text
commande, en définissant la couleur du texte sur l'entrée correspondante dans la matrice de couleurs. L'exemple ci-dessus affichera:la source