На этом уроке мы поместим два цикла в один общий цикл, чтобы сгенерировать решения для всех позиций, постепенно увеличивая дистанцию до матового окончания.
Что ещё можно и нужно сделать. 0. Проверить, нет ли патовых ситуаций. 1. Пересмотреть все позиции, для которых нет решения. 2. Изменить массив белого ящик, координата слона от 0 до 31. 3. Модифицировать алгоритм, чтобы он работал для чернопольного слона. 4. Сделать симметрию относительно белого короля в квадрате 4х4. 5. Пересмотреть самые сложные позиции - мат в 67 полуходов. 6. Придумать эффективный способ хранения для белого ящика. 7. Решить задачу "мат двумя слонами". 8. Решить задачу "мат ладьёй". 9. Решить задачу "мат ферзём".
Дата отправки отчёта:
20 августа 2018 г.
Задание выполнено: за
16 час. 1 мин.
Чему научился:
Все решения найдены. Игра с компьютером получается. Самые сложные позиции - когда черный король нападает и требуется тратить ходы, чтобы наладить взаимодействие фигур. Модифицировал алгоритм и для чернопольного слона: 464 мата и 33 хода.
Что было сложным:
Мат двумя слонами - сложно, так как непонятно, делать ли второго слона независимым и писать для него отдельные функции, как для коня, или оставить одного универсального слона. Не справился с матом ладьей и ферзем. Удалял коня, заменял алгоритмы слона на алгоритмы фигуры, количество матов находилось правильно, но на второй итерации останавливался перебор обратных кодов, так и не успел разобраться почему.
Научился: Нaходить всe решения шaхмaтной зaдaчи сo слоном и конём. Трудности: Долго провозился со следующей ошибкой: написал
public Combo getCombo(string fen)
вместо
private Combo getCombo(string fen)
в результате никакую позицию программа не могла найти.
до сих пор не понимаю, почему так происходит.
Научился: Научился находить любые матовые позиции для коня и слона. Супер-алгоритм получился, прям такое ощущение, что тебя мастер за руку вел и показывал как заматовать короля. Я в восторге.