Вступ
Гра в xiangqi , також відома як китайські шахи, є шаховою грою, популярною в Китаї, В'єтнамі, Тайвані та інших країнах Східної Азії. Кольори двох сторін у xiangqi - червоний і чорний. У xiangqi є сім штук: генерал ( G
), радник ( A
), слон ( E
), кінь ( H
), колісниця ( R
), гармата ( C
) та солдат ( S
). Для цілей цього виклику великі шматки вважаються червоними, а малі - чорними. Більшість із цих творів мають грубі еквіваленти в західних шахах, але є одна абсолютно унікальна штука: гармата.
Ці гармати рухаються як тура в шахах або колісниця в Сяомей (переміщенні будь-якої кількості прогалин по обидві осі Х або осі Y), але не може атакувати цей шлях. Натомість вона атакує, стрибаючи по осях X або Y (так само, як рухається) через один шматок будь-якого кольору (друг чи ворог) та приземляючись на шматок протилежного кольору, який потім захоплює. Зауважте, що, як і всі шахові та сянцкі фігури, гармати не можуть захоплювати шматочки власного кольору.
Наприклад, на наступній діаграмі пробіли, до яких C
може рухатися гармата ( ), позначені *
, і ті, до яких він може стрибати і захоплювати, позначені X
, припускаючи, що там є чорний / малий шматок.
....X....
.........
.........
....h....
....*....
****C**aX
....E....
....X....
....g....
....R....
Виклик
Напишіть програму або функцію, яка, враховуючи дошку xiangqi та координати гармати на цій дошці як вхід, виводить список координат, до яких гармата може рухатися чи стрибати.
Формат для всіх вводу-виводу є гнучким.
Прийнятні формати для плати xiangqi включають рядок, розділений для нового рядка, список рядків або рядок з будь-яким іншим роздільником, який не знаходиться aceghrsACEGHRS.
. Ви можете припустити, що дошка завжди буде розміром 9x10, розмір дошки xiangqi.
Вміст самої дошки буде складатися з декількох періодів ( .
), що представляють порожні точки на дошці та символи, що представляють фрагменти. Відображення по персонажу полягає в наступному:
A -> advisor
C -> cannon
E -> elephant
G -> general
H -> horse
R -> chariot
S -> soldier
Великі літери представляють червоні шматки, а малі літери - чорні шматки. Символи, не вказані тут (тобто не в aceghrsACEGHRS.
), не з'являться на дошці.
Формат вхідної координати є гнучким і не вимагає відповідності формату вихідних координат. Це може бути список двох цілих елементів, 2-кортеже, двох чисел з будь-яким роздільником, або двох символів, наприклад. Він також може бути або 0-індексованим, або 1-індексованим. Ви можете припустити, що координата на дошці завжди буде відповідати гармати ( C
або c
).
Координати, до яких гармата може стрибати і переміщатися, повинні відображатися в тому ж списку на виході; розмежувати їх не потрібно. Прийнятні формати для будь-яких окремих вихідних координат такі ж, як і для вхідної координати. Координати можуть бути розділені новою лінією, виводитись у вигляді списку чи будь-якого іншого подання. Особливого замовлення не потрібно; наказ навіть не повинен бути детермінованим.
Зауважте, що стрибки на шматок одного кольору (корпус) гармати не є законними, і тому вони не можуть відображатися у висновку.
Тестові справи
Зауважте, що не у всіх тестових випадках можливі позиції 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)]
Оцінка балів
Це є код-гольф, тому найкоротша відповідь (у байтах) виграє. Щасливого гольфу!