前書き
中国のチェスとも呼ばれるxiangqiのゲームは、中国、ベトナム、台湾、その他の東アジア諸国で人気のあるチェスのようなゲームです。xiangqiの両側の色は赤と黒です。シャンチーには、将軍(G
)、顧問(A
)、象(E
)、馬(H
)、戦車(R
)、大砲(C
)、兵士(S
)の7つのピースがあります。この課題では、大文字の部分は赤、小文字の部分は黒と見なされます。これらの駒のほとんどは、西洋のチェスとほぼ同等ですが、完全にユニークな駒が1つあります。それは大砲です。
大砲のチェスでルークまたはシャンチーで戦車(xまたはY軸上の任意の数のスペースを移動させる)ような動きが、この方法を攻撃できません。代わりに、X軸またはY軸に沿って(移動と同じように)任意の色(フレンドまたは敵)の1つの部分をジャンプして攻撃し、反対の色の部分に着陸してキャプチャします。すべてのチェスとxiangqiの駒と同様に、大砲は自分の色の駒をキャプチャできません。
たとえば、次の図では、大砲(C
)が移動できるスペースはでマークされ*
、ジャンプしてキャプチャできるスペースはでマークされてX
います。
....X....
.........
.........
....h....
....*....
****C**aX
....E....
....X....
....g....
....R....
チャレンジ
xiangqiボードとそのボード上の大砲の座標を入力として与えられ、大砲が移動またはジャンプできる座標のリストを出力するプログラムまたは関数を記述します。
すべてのI / Oの形式は柔軟です。
xiangqiボードで使用できる形式には、改行で区切られた文字列、文字列のリスト、またはにないその他の区切り文字を含む文字列が含まれaceghrsACEGHRS.
ます。ボードは常にxiangqiボードのサイズである9x10であると想定できます。
ボード自体の内容は、ボード.
上の空のポイントを表すいくつかのピリオド()と、ピースを表す文字で構成されます。ピースから文字へのマッピングは次のとおりです。
A -> advisor
C -> cannon
E -> elephant
G -> general
H -> horse
R -> chariot
S -> soldier
大文字は赤い部分を表し、小文字は黒い部分を表します。ここにリストされていない(つまりにないaceghrsACEGHRS.
)文字はボードに表示されません。
入力座標の形式は柔軟で、出力座標の形式と一致する必要はありません。たとえば、2つの整数要素、2つのタプル、任意の区切り記号付きの2つの数値、または2つの文字のリストにすることができます。また、0インデックスまたは1インデックスのいずれかになります。ボード上の座標は常に大砲(C
またはc
)に解決されると想定できます。
大砲がジャンプして移動できる座標は、出力の同じリストに表示される必要があります。2つの間の区別は必要ありません。個々の出力座標に使用できるフォーマットは、入力座標のフォーマットと同じです。座標は、改行で区切られたり、リストとして出力されたり、その他の表現になります。特定の順序は必要ありません。順序は決定論的である必要さえありません。
大砲の同じ色(ケース)へのジャンプは無効であり、出力に表示されないことに注意してください。
テストケース
すべてのテストケースがxiangqiの可能性があるわけではないことに注意してください。
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)]
得点
これはcode-golfなので、最も短い回答(バイト単位)が優先されます。幸せなゴルフ!