Ю2.27 Шашечный эндшпиль

Задача из сборника задач по программированию Юркина А.Г. 2002 г.
Условие задачи:
В шашечном эндшпиле остались белая дамка и две черных пешки, позиции которых известны. Ход белых. Сможет ли дамка срубить одну или сразу обе пешки?

Входные данные:
-[latex]lady[/latex]-позиция дамки;
-[latex]pawn1[/latex]-позиция первой пешки;
-[latex]pawn2[/latex]-позиция второй пешки;

Тесты:

[latex]lady[/latex] [latex]pawn1[/latex] [latex]pawn2[/latex] Выходные данные
a1 b2 f6 Дамка срубит две пешки
c3 a1 b2 Дамка срубит ничего
d4 b6 f2 Дамка срубит одну пешку

Решение задачи:
Для описания позиций шашек использовалась структура [latex]position[/latex] с указанием на буквенную строку и числовой столбец шашечной доски. Задача разбивается на 4 главных подзадачи, основанные на таких 4 условиях:
пешки не находятся на границе шашечного поля;
первая пешка находится на границе шашечного поля;
вторая пешка находится на границе шашечного поля;
обе пешки находятся на границе шашечного поля;
В свою очередь данные подзадачи разбиваются еще на несколько условий, что подробно изложены в комментариях кода. На выходе программа предоставляет информацию о том, какое количество пешек срубила дамка относительно заданных позиций.

Условие задачи(стр.31)
Код задачи на с++

One thought on “Ю2.27 Шашечный эндшпиль

  1. Молодец, работает! Конечно зачтено!
    Но замечания будут.
    — Описание, увы, никакое. Можно было бы что-то по сути написать.
    Например, указать, что бить можно если дамка и шашка стоят на одной диагонали. А как определяются диагонали? Для одних сумма координат постоянна, а для других — разность. При этом то, что одна из координат буква, никакой роли не играет (буквы кодируются числами и их можно использовать наряду с целыми числами).
    Т.е. если мы введем новые координаты в виде суммы и разности старых, то получим прямоугольную систему координат, но развёрнутую на 45 градусов.
    Теперь ясно, что бить можно, если одна координата совпадает. ..
    — По коду. У Вас три варианта ответа. Значит должно быть два условных оператора. А не 8. Всё сложную логику гораздо лучше «запихнуть» в условия. Тогда точно не будет множества одинаковых операторов. Сейчас Вы в четырех местах выводите про «одну пешку».
    Лучше бы всё это поправить…

Добавить комментарий