Партия в шахматы
Шахматы - настольная логическая игра, сочетающая в себе элементы искусства, науки и спорта. Считается одной из древнейших игр на Земле...____________________________________ Википедия, свободная энциклопедия
Игра происходит на доске, поделенной на равные квадратные клетки (размер доски 8×8 клеток). Традиционно клетки нумеруются по горизонтали латинскими буквами от a до h, по вертикали цифрами от 1 до 8 (каждая клетка имеет соответственное обозначение, например, c4). Клетки раскрашены в чёрный и белый цвета, так что соседние по вертикали и горизонтали клетки раскрашены в разные цвета, а клетка a8 - белая.
Играют два игрока. Каждый имеет набор фигур, в который входят: один король, один ферзь, два слона, два коня, две ладьи, восемь пешек.
Один игрок играет белыми фигурами, другой - чёрными. В начале игры фигуры размещаются на фиксированных позициях, занимая ровно две строки 1 и 2 белые, 7 и 8 черные). Порядок начального размещения фигур на строках 1 и 8 (от a к h): ладья, конь, слон, ферзь, король, слон, конь, ладья. Горизонтали 2 и 7 занимают пешки.
Игроки делают ходы по очереди, сначала ходят белые, затем черные, и так далее. В свой ход игроки перемещают ровно одну фигуру по правилам хода этой фигуры.
Естественно, что партию, когда она играется, имеет смысл записывать (например, чтобы иметь возможность воспроизвести ее позже). Для этого разработана специальная нотация. Ваша задача - восстановить положение фигур в конце партии, если известна запись всех её ходов.
В данной задаче Вам вовсе не обязательно знать, как ходит та или иная фигура. Но стоит сосредоточить внимание на двух специальных ситуациях.
Первая ситуация, требующая специального рассмотрения в данной задаче, называется рокировкой. Рокировкой называется одновременное перемещение короля и одной из ладей того же цвета по крайней горизонтали (считается одним ходом короля) и она выполняется следующим образом: король перемещается с его исходного поля на два поля по направлению к ладье, затем ладья переставляется через короля на последнее поле, которое только что король пересек. Бывает два вида рокировок: длинная и короткая.
На следующем рисунке показаны вид поля с начальной расстановкой (слева), а также два вида рокировок (справа).
Вторая ситуация возникает тогда, когда пешка, пройдя поле, достигает крайней горизонтали. Для белой пешки это восьмая горизонталь, а для черной - первая. В конце такого хода пешка может превратиться в любую фигуру такого же цвета, но не в пешку и не в короля.
Входные данные
В первой строке входного файла записано натуральное число n (n ≥ 1) - количество ходов в записи партии. Последующие n строк имеют формат Fx_1y_1-x_2y_2.
В этой строке символ F обозначает фигуру, которая делает ход (K - король, Q - ферзь, R - ладья, B - слон, N - конь, P - пешка). При этом белые фигуры обозначаются заглавными буквами, а черные - строчными. К примеру, K - это белый король, а r - черная ладья. Пары символов x_1y_1 и x_2y_2 - это координаты фигуры до хода и после того, как ход был совершен, соответственно. В этой записи x_1 и x_2 - символы столбцов, а y_1 и y_2 - номера строк.
Короткая рокировка обозначена 0-0, длинная 0-0-0, где 0 - ноль, при этом чёрная и белая рокировка не отличаются по записи. Если во время хода пешка добралась до противоположной крайней горизонтали, то добавляется символ F' в конец записи хода. F' - это символ фигуры, в которую превращается пешка (по описанной выше спецификации).
Некоторые примеры: запись Pe2-e4 означает, что белая пешка сделала ход с e2 на e4, запись pe2-e1q означает, что черная пешка сделала ход с e2 на e1 и превратилась в ферзя.
Считайте, что все ходы сделаны по правилам шахмат, более того, во входном файле никогда не будет ситуации, когда пешка берется на проходе.
Выходные данные
В выходной файл выведите восемь строк по восемь символов в каждой. Строки описывают горизонтали шахматного поля, в порядке с восьмой по первую. Столбцы описывают вертикали шахматного поля, в порядке с a по h. Символы соответствуют фигурам, находящимся в соответствующих позициях, и их надо выводить в том же формате, который используется во входном файле. Для пустых клеток поля необходимо выводить символ "." (точка).