Sechseckige Tessellationen oder Kacheln der Ebene sind dreifarbig. Das bedeutet, dass mit nur drei Farben wie Rot, Blau und Grün jedes Sechseck gefärbt werden kann, ohne dass zwei Sechsecke eine Farbe gemeinsam haben. Ein Teilbeispiel, das ein solches Muster zeigt.
Ändern Sie bei einer teilweisen hexagonalen Kachelung in ASCII (über STDIN, Lesen aus einer Datei usw.) die Farben der Zeichen (über ANSI-Codes, Bildmanipulation usw.), um sie an diese Farbgebung anzupassen. Die Verdrehung ist die Mitte der Sechsecke (die *
, unten) sind die drei Farben, und die Linien zwischen müssen eine Mischung aus den *
Farben der beiden entsprechenden Sechsecke sein . Befindet sich die Linie am äußeren Rand, sollte sie mit der entsprechenden übereinstimmen *
.
Zum Beispiel angesichts der teilweisen hexagonalen Kacheln von
/ \ / \ / \ / \
| * | * | * | * |
\ / \ / \ / \ /
| * | * | * |
\ / \ / \ /
Nehmen wir an, wir färben das linke obere Feld *
rot und die beiden Nachbarn blau und grün (im Uhrzeigersinn). Dann muss die |
Linie Magenta und die /
Linie Gelb sein. Wenn wir weiter färben, erhalten wir irgendwann so etwas (der Klarheit halber vergrößert):
Oder für eine Eingabe von
/ \
| * |
/ \ /
| * |
/ \ /
| * |
\ /
Sie könnten es so einfärben (zur Verdeutlichung vergrößert):
Einige zusätzliche Testfälle (Ihr Code sollte in der Lage sein, diese zu verarbeiten):
/ \ / \
| * | * |
\ / \ /
| * |
/ \ / \
| * | * |
\ / \ /
/ \
| * |
\ / \
| * |
/ \ /
| * |
\ /
/ \
| * |
\ /
Regeln
- Der Eingang hat garantiert mindestens ein Sechseck und kein Eingang hat ein "Loch".
- Sie müssen Ihre Färbung nicht mit Rot beginnen, solange Sie die Dreifarbenregel einhalten.
- Wenn die teilweise Kachelung zweifarbig sein kann, können Sie dies ohne Nachteile tun (wie im zweiten Beispiel) - Sie müssen die teilweise Kachelung nicht unbedingt auf eine vollständige Kachelung extrapolieren.
- Die Sechskantmitten
*
müssen entweder rot, blau oder grün gefärbt sein, während die Linien zwischen Cyan, Gelb oder Magenta sein müssen. Ein Magenta*
ist beispielsweise nicht zulässig, und ein Rot|
oder\
oder/
muss sich am äußeren Rand der Zeichnung befinden. Siehe Farben unten. - Wenn Ihre Konsole nicht über genau diese Farben verfügt, verwenden Sie bitte die genaueste Annäherung und geben Sie in Ihrer Antwort an, welche Annäherung Sie verwenden.
- Führende oder nachfolgende Leerzeichen, einschließlich nachfolgender Zeilenumbrüche, sind zulässig, solange die Zeichen in einer Reihe stehen.
- Die teilweise Kachelung kann mit Leerzeichen als Rechteck eingegeben werden, wenn dies für Ihren Code einfacher ist.
- Es ist entweder ein vollständiges Programm oder eine Funktion zulässig. Bei einer Funktion können Sie die Ausgabe zurückgeben, anstatt sie zu drucken.
- Die Ausgabe kann auf der Konsole erfolgen, als Bild usw. gespeichert werden.
- Standardlücken sind verboten.
- Dies ist Codegolf, daher gelten alle üblichen Golfregeln, und der kürzeste Code (in Byte) gewinnt.
Farben und Farbmischungen:
Die drei verfügbaren Grundfarben sind (mit Farbcodes im RGB-Dezimalformat):
- rot
(255,0,0)
- Grün
(0,255,0)
- Blau
(0,0,255)
Die Kombinationen sind:
- Rot und Grün ergeben zusammen Gelb
(255,255,0)
- Blau und Grün ergeben zusammen Cyan
(0,255,255)
- Rot und Blau ergeben zusammen Magenta
(255,0,255)
quelle
*
Antworten:
JavaScript (ES6),
219203201 ByteErläuterung: Jedes Zeichen wird in ein
font
Tag eingehüllt , um seine Farbe festzulegen. Diese wird berechnet, indem jedes Quadrat sowie die Quadrate zwei links und rechts und die vier Quadrate eins diagonal entfernt für*
s angekreuzt werden. Wenn dies der Fall ist, werden die Farben aller Quadrate kombiniert*
s gefunden. Die*
Farben werden einfach ausgewählt, indem ihr horizontales Koordinatenmodul 3 genommen und eine Bitmaske entsprechend verschoben wird. Bearbeiten: 2 Bytes durch Umschalten#RRGGBB
auf#RGB
Farben gespeichert .quelle
JavaScript (ES6), 210 Byte (unter Verwendung von HTML + CSS)
Ähnlich wie bei meinem Canvas-Ansatz ; Findet alle
*
s in der Eingabezeichenfolge und schreibt Sechsecke in Form absolut positionierter<pre>
Elemente auf die Seite . Da auf eingestelltmix-blend-mode
istlighten
, wird das Hinzufügen von Farben automatisch ausgeführt, wenn sich Zeichen überlappen.Code-Snippet anzeigen
quelle
Python 2 , 279 Bytes
Probieren Sie es online!
Golfen und fixieren dank user202729!
-27 Bytes dank Mr. Xcoder
-24 Bytes dank Jonathan Frech
quelle
2-abs(i)
ist2-(i&1)
in diesem Zusammenhang 336 Bytes.\033
kann sein\33
(Speichern eines Bytes) oder das tatsächliche\x1b
Zeichen ( Speichern von drei Bytes ).=
und ein;
gegen zwei,
und ein=
.Python 2 ,
346331 BytesProbieren Sie es online!
quelle
HTML (Canvas) + JavaScript (ES6), 13 + 251 = 264 Byte
Sucht alle
*
s in der Eingabezeichenfolge und zeichnet ein ASCII-Sechseck auf die Zeichenfläche an den entsprechenden Positionen. Weil dasglobalCompositeOperation='lighter'
Hinzufügen von Farben automatisch erfolgt, wenn sich Zeichen überlappen.HTML
JavaScript
Ein Multiplikator und ein zusätzlicher
scale()
Befehl wurden zur besseren Sichtbarkeit zum Snippet hinzugefügt.Code-Snippet anzeigen
Siehe auch meinen CSS-basierten Ansatz .
quelle
MATLAB / Octave , 223 Bytes
Im etwas übersichtlicheren Code-Format:
Die Eingabe wird als 2D-Array verwendet. Geben Sie beispielsweise Folgendes ein, wenn Sie zur Eingabe aufgefordert werden:
Soweit mir bekannt ist, kann MATLAB keine Farben auf der Konsole ausgeben (mit Ausnahme von schmutzigen Java-Hacks, die ich rabattiere). Als solches wird die Ausgabe stattdessen auf eine Figur gedruckt.
Die Färbung erfolgt durch Ermitteln der Position aller
*
Elemente in der Eingabe und anschließend in einem RGB-Farbfeld (p
) eine 5x3-Box mit Einsen (255 in MATLAB-Farbdarstellung) zentriert um das geschrieben*
. Das Kästchen wird entlang jeder Zeile in die Farbe geschrieben, die dem Mod-3-Index entspricht, wobei bei geraden Zeilen der Farbindex um einen Versatz verschoben ist.Dies erzeugt eine Farbmatrix, in der sich überlappende Kästchen die gewünschte Mischfarbe ergeben. Das obige Beispiel erzeugt die folgende Farbmatrix.
Die weißen und schwarzen Bereiche sind irrelevant, da an diesen Stellen ein Leerzeichen gedruckt wird, was bedeutet, dass wir die falsche Farbe nicht sehen.
Sobald die Farbmatrix erstellt ist, zeigen wir mit dem
text
Befehl jedes Zeichen auf einer Figur an und stellen die Farbe des Texts auf den entsprechenden Eintrag in der Farbmatrix ein. Das obige Beispiel zeigt:quelle