Ограничения: время – 1s/2s, память – 32MiB Ввод: input.txt или стандартный ввод Вывод: output.txt или стандартный вывод
Послать решение Blockly Посылки Темы Где Обсудить (0)
Фантазия великого комбинатора сбылась – в городе Васюки
(Калмыкия) через 3 часа должен начаться международный
шахматный турнир. "Сотни тысяч людей, богато обеспеченных
людей, устремились в Васюки… По фуникулерам подымаются в
город мордатые иностранцы, шахматные леди, австралийские
поклонники индийской защиты, индусы в белых тюрбанах –
приверженцы испанской партии, немцы, французы, новозеландцы,
жители бассейна реки Амазонки и, завидующие васюкинцам, –
москвичи, ленинградцы, киевляне, сибиряки и одесситы…" Для
того, чтобы все желающие могли наблюдать за ходом турнира, из
Японии был доставлен огромный экран (размером 98x167 метров) и
специальный контроллер-компьютер для него. Но во время
транспортировки потерялась маленькая дискета с программным
обеспечением. Ваша задача – к началу шахматного турнира
написать новую программу для управления контроллером экрана.
В программу поступает информация о ходах, сделанных
гроссмейстерами; результатом работы программы является
изображение доски, передаваемое в контроллер для отображения
на экране. Шахматная фигура на изображении обозначается двумя
символами: первый символ – тип фигуры (один из следующих:
P-пешка, R-ладья, N-конь, B-слон, Q-ферзь, K-король), второй
символ – цвет фигуры (w-белый, b-черный). Пустая черная клетка
обозначается символами "//" (два знака деления), а пустая белая –
".." (две точки).
Во входном файле содержится несколько строк (ноль или
более) – последовательность ходов, сделанных из начальной
позиции. В каждой строке информация об одном ходе: в нечетных
строках – ходы гроссмейстера, играющего белыми, в четных –
черными. Информация о ходе имеет следующий синтаксис:
обозначение вертикали (A-H) и горизонтали (1-8) клетки, из
которой был сделан ход, затем знак – (при простом ходе) или :
(при взятии фигуры, а также при взятии на проходе), затем
обозначение вертикали и горизонтали конечной клетки, затем
возможно следует указание фигуры, в которую превратилась
пешка, дойдя до последней горизонтали. Исключение: короткая
рокировка обозначается 0-0 (цифра 0), а длинная – 0-0-0.
Примеры ходов: E2-E4, F7-F8Q, H1:H6, 0-0. Проверять
правильность хода не требуется – предполагается, что
гроссмейстеры знают правила игры и ходят правильно.
В выходной файл вывести изображение доски после указанной
последовательности ходов – восемь строк по шестнадцать
символов.
Пример ввода
E2-E4
E7-E5
F1-C4
B8-C6
D1-H5
G8-F6
H5:F7
Пример вывода
Rb//BbQbKbBb..Rb
PbPbPbPb//QwPbPb
..//Nb//..Nb..//
//..//..Pb..//..
..//Bw//Pw//..//
//..//..//..//..
PwPwPwPw..PwPwPw
RwNwBw..Kw..NwRw
Примечание для тех, кто знает о шахматах меньше, чем
О.Бендер. Начальная позиция в шахматах и нумерация
горизонталей и вертикалей:
8 RbNbBbQbKbBbNbRb
7 PbPbPbPbPbPbPbPb
6 ..//..//..//..//
5 //..//..//..//..
4 ..//..//..//..//
3 //..//..//..//..
2 PwPwPwPwPwPwPwPw
1 RwNwBwQwKwBwNwRw
A B C D E F G H
Рокировка: один раз в партии, если король и ладья еще не
ходили, поля доски между ними свободны и король не атакован,
может быть сделан одновременный ход короля и ладьи –
рокировка: король передвигается в сторону ладьи через поле
(соответственно вправо или влево), а ладья переносится через
короля и ставится рядом с ним. Рокировка с ближней ладьей (вертикаль H) называется короткой
и обозначается 0-0, c дальней (вертикаль A) – длинной (0-0-0).
Взятие на проходе: если пешка, делая двойной ход,
проходит мимо поля, находящегося под ударом пешки противника,
она может быть взята этой пешкой "на проходе"; взявшая пешка
передвигается по диагонали на поле, пройденное взятой пешкой.
Двойной ход пешки возможен только из начального
положения, например E2-E4.