Страниц: [1]
  Печать  
Автор Тема: New Васюки  (Прочитано 38772 раз)
0 Пользователей и 1 Гость смотрят эту тему.
Андрей Потапкин
Свой человек
***
Offline Offline

Сообщений: 466

СПАСИБО
-вы поблагодарили: 27
-вас поблагодарили: 68



Просмотр профиля Email
: Май 07, 2013, 19:34:57 �

New Васюки
Имя входного файла: input.txt
Имя выходного файла: output.txt
Максимальное время работы на каждом тесте: 10 секунд
Максимальная оценка: 50 баллов

- Позвольте, товарищи, у меня все ходы записаны!
- Контора пишет, - сказал Остап.
- Это возмутительно! - заорал   одноглазый . - Отдайте мне мою  ладью .
И. Ильф, Е. Петров, "Двенадцать стульев"

Во входном файле приведено начало партии Остапа  Бендера  и  одноглазого  любителя шахмат. Ваша задача состоит в том, чтобы выдать в выходной файл позицию, сложившуюся на доске к тому моменту, когда гроссмейстер зачерпнул в горсть несколько фигур и швырнул их в голову противника, или сообщить, что в ходе игры было допущено нарушение правил.

Формат записи ходов (в полной нотации) см. в примере. Применяемые в шахматной нотации особые обозначения перечислены ниже. случай обозначение пример
короткая рокировка 0-0 (два нуля) 0-0
длинная рокировка 0-0-0 (три нуля) 0-0-0
взятие пешки или фигуры : (двоеточие) e4:f5
шах + Фh6-h4+ 
мат X (X латинское) Лa1-a8X
превращение пешки в фигуру обозначение фигуры c7-c8Ф


Все ходы должны делаться строго по шахматным правилам. Исключения и особые случаи в правилах перечисляются ниже. король под шахом После хода свой король не должен быть под шахом (т.е. находиться под боем фигуры другого цвета).Например,
14. Лf3-f7 Крe8-f8 - неправильно
14. Лf3-f7 Крe8:f7 - правильно
рокировка Рокировкой называется одновременное передвижение короля и  ладьи  из их начальных положений. В случае длинной рокировки король перемещается через одно поле влево, в случае короткой рокировки - вправо. Ладья ставится на поле, через которое прыгнул король. Рокировка может совершаться только в том случае, если это первый ход за всю партию как короля, так и рокирующейся ладьи. Между королем и ладьей не должно быть других фигур. До и после рокировки король не должен находиться под шахом. Поле, через которое он прыгает, не должно быть под боем. Примеры:
19. Кf4-g6 0-0 - неправильно (поле f8 находится под боем белого коня)
19. Кf4-g6 0-0-0 - правильно
первый ход пешкой первым своим ходом пешка может прыгнуть сразу на две клетки. Например,
1. e2-e4 - правильно
1. g2-g3 - тоже правильно
взятие пешки на проходе Если своим первым ходом пешка прыгнула через клетку, бьющуюся пешкой другого цвета, то следующим ходом та имеет право ее съесть, как если бы сходившая пешка находилась на бьющемся поле. Например,
7. e2-e4 f4:e3
превращение пешки в фигуру Пешка, достигнув последней горизонтали, должна превратиться в фигуру. Например,
43. h7-h8Ф - пешка превратилась в ферзя


Ваша программа должна прочесть входной файл и выдать позицию после последнего сделанного хода, если все ходы были сделаны по правилам. Формат выходного файла смотри в примере. Если правила были нарушены, то программе следует выдать сообщение об первом допущенном нарушении.

Сообщения об ошибках бывают следующих видов:

"Ход невозможен" - на поле, с которого делается ход, не стоит указанная в записи фигура правильного цвета, либо на поле, на которое делается ход, стоит фигура того же цвета, либо фигура не может ходить так, как это указано в записи
"Король оказался под шахом" - после хода король оказался под шахом
"Нарушение правил рокировки" - нарушено одно из правил рокировки
"Пешка не превратилась в фигуру" - пешка, достигнув последней горизонтали, не превратилась в фигуру
"Не указано взятие" - во время хода произошло взятие, но это не отражено в записи
"Не указан шах или мат" - в результате хода был поставлен шах или мат, но этого нет в записи
"Нет взятия" - из записи следует, что произошло взятие, но в действительности этого не случилось
"Нет шаха или мата" - в записи указан шах или мат, но король противника не находится под боем

Точный формат вывода сообщения об ошибке с указанием номера хода и цвета ходящего приведен в примере. Если за один ход было нарушено более одного правила, то следует вывести то сообщение об ошибке, которое идет в данном списке раньше.

Обратите внимание на то, что вам не нужно отслеживать "правило 50 ходов", троекратное повторение позиции, вечный шах и другие использующиеся на практике правила. Кроме того, вам нет необходимости проверять, что мат действительно поставлен, то есть нет способа вывести короля из-под шаха.

Кроме возможных нарушений шахматных правил, все приведенные входные данные корректны. Это означает, что с синтаксической точки зрения во входном файле находится правильная запись шахматной партии. Во входном файле записано не более 200 ходов, причем последний ход может состоять только из одного полухода белых (за белых, как известно, играл Остап).

Баллы за эту задачу будут начисляться за прохождение набора тестов. Примерное распределение баллов по тестам таково: построение позиции в случае, когда правила нарушены не были  20 баллов
выдача одного из восьми сообщений об ошибках 3 балла за ошибку
работа программы в комплексе, то есть правильная работа на данных, содержащих несколько нарушений правил 6 баллов
всего 50 баллов


Пример
input.txt output.txt
1.  e2-e4 c7-c5
2.  Кg1-f3 d7-d6
3.  d2-d4 c5:d4
4.  Кf3:d4 Кg8-f6
5.  Кb1-c3 g7-g6
6.  Лc1-e3 Лf8-g7
7.  f2-f3 0-0

 ЧЛ.ЧК.ЧС.ЧФ....ЧЛ.ЧКр...
Чп.Чп.......Чп.Чп.ЧС.Чп.
.........Чп....Чк.Чп....
........................
.........БК.Бп..........
......БК....БС.Бп.......
Бп.Бп.Бп..........Бп.Бп.
БЛ.......БФ.БКрБС....БЛ.

 
1.  e2-e4 e7-e5
2.  f2-f4 e5:f4
3.  g2-g4 f4:g3
4.  h2-g3 Фd8-g5
5.  d2-d3 Фg5-g3
6.  e4-e5

 Ход черных #5. Не указано взятие.

 


Записан
Needdenine
Новенький
*
Offline Offline

Сообщений: 2

СПАСИБО
-вы поблагодарили: 0
-вас поблагодарили: 0


Просмотр профиля
Ответ #1 : Октябрь 16, 2014, 10:49:46 �

То, что я читаю другую нить. Это история, которую я читаю, я не скучно, у меня есть знания, а также.
Записан

//текст доступен после регистрации//
Страниц: [1]
  Печать  
 
Перейти в: