Einführung
Das Xiangqi- Spiel , auch als chinesisches Schach bekannt, ist ein schachähnliches Spiel, das in China, Vietnam, Taiwan und anderen ostasiatischen Ländern beliebt ist. Die Farben der beiden Seiten in Xiangqi sind rot und schwarz. In Xiangqi gibt es sieben Teile: General ( G
), Berater ( A
), Elefant ( E
), Pferd ( H
), Streitwagen ( R
), Kanone ( C
) und Soldat ( S
). Für die Zwecke dieser Herausforderung werden Großbuchstaben als rot und Kleinbuchstaben als schwarz betrachtet. Die meisten dieser Figuren haben eine grobe Entsprechung im westlichen Schach, aber es gibt eine völlig einzigartige Figur: die Kanone.
Die Kanone bewegt sich wie ein Turm im Schach oder ein Streitwagen in Xiangqi (bewegt eine beliebige Anzahl von Feldern auf der X- oder Y-Achse), kann aber auf diese Weise nicht angreifen. Stattdessen greift es an, indem es entlang der X- oder Y-Achse (auf die gleiche Weise, wie es sich bewegt) über ein Stück einer beliebigen Farbe (Freund oder Feind) springt und auf dem gegenüberliegenden Stück landet, das es dann erfasst. Beachten Sie, dass Kanonen wie alle Schach- und Xiangqi-Figuren keine Figuren ihrer eigenen Farbe erfassen können.
Im folgenden Diagramm sind beispielsweise die Felder C
markiert *
, in die sich die Kanone ( ) bewegen kann , und diejenigen, in die sie springen und erfassen kann, sind mit markiert X
, vorausgesetzt, dass sich dort ein schwarz / klein geschriebenes Stück befindet.
....X....
.........
.........
....h....
....*....
****C**aX
....E....
....X....
....g....
....R....
Herausforderung
Schreiben Sie ein Programm oder eine Funktion, die bei einer Xiangqi-Tafel und den Koordinaten einer Kanone auf dieser Tafel als Eingabe eine Liste von Koordinaten ausgibt, zu denen sich die Kanone bewegen oder springen kann.
Das Format für alle E / A ist flexibel.
Akzeptable Formate für die Xiangqi-Karte umfassen eine durch Zeilenumbrüche getrennte Zeichenfolge, eine Liste von Zeichenfolgen oder eine Zeichenfolge mit einem anderen Trennzeichen, das nicht enthalten ist aceghrsACEGHRS.
. Sie können davon ausgehen, dass die Karte immer 9x10 groß ist, die Größe einer Xiangqi-Karte.
Der Inhalt der Tafel selbst besteht aus einer Reihe von .
Punkten ( ), die leere Punkte auf der Tafel darstellen, und Zeichen, die Teile darstellen. Die Zuordnung von Stück zu Charakter ist wie folgt:
A -> advisor
C -> cannon
E -> elephant
G -> general
H -> horse
R -> chariot
S -> soldier
Großbuchstaben stehen für rote Teile und Kleinbuchstaben für schwarze Teile. Zeichen, die hier nicht aufgeführt sind (dh nicht in aceghrsACEGHRS.
), werden nicht im Forum angezeigt.
Das Format der Eingabekoordinate ist flexibel und muss nicht mit dem Format der Ausgabekoordinaten übereinstimmen. Dies kann beispielsweise eine Liste mit zwei ganzzahligen Elementen, einem 2-Tupel, zwei Zahlen mit einem beliebigen Trennzeichen oder zwei Zeichen sein. Es kann auch entweder 0-indiziert oder 1-indiziert sein. Sie können davon ausgehen, dass sich die Koordinate auf dem Brett immer in eine Kanone ( C
oder c
) auflöst .
Die Koordinaten, zu denen die Kanone springen und sich bewegen kann, müssen in der Ausgabe in derselben Liste erscheinen. Eine Unterscheidung zwischen beiden ist nicht erforderlich. Akzeptable Formate für einzelne Ausgabekoordinaten sind dieselben wie für die Eingabekoordinate. Die Koordinaten können durch Zeilenumbrüche getrennt, als Liste oder eine andere Darstellung ausgegeben werden. Es ist keine bestimmte Reihenfolge erforderlich. Die Reihenfolge muss nicht einmal deterministisch sein.
Beachten Sie, dass Sprünge auf ein Stück der gleichen Farbe (Hülle) der Kanone nicht zulässig sind und daher nicht in der Ausgabe erscheinen können.
Testfälle
Beachten Sie, dass nicht alle Testfälle mögliche Xiangqi-Positionen sind.
Input board
Input coordinate (0-indexed)
List of output coordinates
.........
.........
.........
.........
.........
....C....
.........
.........
.........
.........
(4, 5)
[(0, 5), (1, 5), (2, 5), (3, 5), (5, 5), (6, 5), (7, 5), (8, 5), (4, 0), (4, 1), (4, 2), (4, 3), (4, 4), (4, 6), (4, 7), (4, 8), (4, 9)]
.........
.....G...
.........
.........
.....e...
.........
.........
h..R.c..S
.....a...
.........
(5, 7)
[(4, 7), (6, 7), (7, 7), (5, 6), (5, 5), (5, 1)]
..s......
..A...e..
.........
EACCcsh.H
..r......
.....S...
......s..
....C....
..g......
(2, 3)
[(2, 0), (2, 2), (4, 3), (2, 9)]
rheagaehr
.........
.c.....c.
s.s.s.s.s
.........
.........
S.S.S.S.S
.C.....C.
.........
RHEAGAEHR
(7, 7)
[(2, 7), (3, 7), (4, 7), (5, 7), (6, 7), (8, 7), (7, 0), (7, 3), (7, 4), (7, 5), (7, 6), (7, 8)]
Wertung
Dies ist Code-Golf , daher gewinnt die kürzeste Antwort (in Bytes). Viel Spaß beim Golfen!