Ein chinesisches Schachbrett sieht folgendermaßen aus (basierend auf dieser Frage , diesmal jedoch mit einer festen Größe):
G
. G
G G G
G G . G
B B B B . . Y G . Y . Y Y
B B B . . G . . . Y Y Y
B . B . . . . . Y . Y
B . . . . . . . . Y
. . . . . . . . .
. P . . . . . O O .
P P . . . . . . . O O
P P P . . . R . . O O .
P P P P . . R . . O O O O
R . R R
R R R
R .
R
Jedes Nicht-Leerzeichen in diesem Beispiel kann durch ein nicht-Leerzeichen-druckbares ASCII-Zeichen in der Eingabe ersetzt werden, während Leerzeichen niemals geändert werden. Es wird nicht garantiert, dass es sich um ein gültiges Arrangement in Chinese Checker handelt (da es möglicherweise nicht genau 7 verschiedene Arten von Zeichen enthält).
Ihre Aufgabe ist es, es um ein Vielfaches von 60 Grad zu drehen.
Dies ist das obige Beispiel, das um 60 Grad im Uhrzeigersinn gedreht wurde:
B
B B
B B B
B . B B
P P P . . . B . . G G . G
P P P P . . . . . G G G
P P . . . . . G Y . G
P . . . . . . . G G
. . . . . . . . .
R . . . . . . . . Y
R . R R . . . . Y Y .
R R R . . . O . . . Y Y
R . R R . . . O . Y Y Y Y
O O O .
O O O
O .
O
Die Eingabe ist eine nicht negative Ganzzahl und ein chinesisches Schachbrett. Ihr Programm (oder Ihre Funktion) sollte es um die ganze Zahl * 60 Grad drehen. Sie entscheiden, ob Sie im oder gegen den Uhrzeigersinn drehen möchten, sofern dies konsistent ist. Sowohl die Eingabe als auch die Ausgabe sollten keine zusätzlichen führenden oder nachfolgenden Leerzeichen enthalten.
Das ist Code-Golf. Kürzester Code gewinnt.
quelle
_,,Sf*\.+W%ze_
.liq{_N/eeSf.*W%:szsS-\{_' >{;(}&\}/;]}@*
, aber ich dachte daran, mich um 60 Grad zu drehen, nicht um 45 Grad, als ich diese Herausforderung schrieb ...qN/(i{_eeSf.*W%:szSf-{},.{' f+sW<\,' e[}}*N*
ist noch länger als das, was ich vorher hatte ...Python 2, 171 Bytes
Dies ist vielleicht das einzige Mal, dass ich jemals für
str.splitlines
nützlich befunden habe - für alle anderen Zeiten.split("\n")
ist es kürzer.Verwenden Sie wie
f(S,10)
.Erläuterung
Für jedes Zeichen in der Eingabe haben wir entweder:
Um herauszufinden, durch welches Zeichen ersetzt werden soll, konvertieren wir das Gitter in Würfelkoordinaten
(x, y, z)
, drehen dien
Zeiten durch Transformieren(x, y, z) -> (-y, -z, -x)
und konvertieren sie dann zurück.quelle