Тема шахмат при изучении программирования весьма популярна у преподавателей, задающих задания своим студентам. Причина такой популярности банальна - всем хорошо известны правила игры, с одной стороны, а с другой стороны - можно придумывать бесконечное число разных и интересных задач. Почему такие задачи интересны и зачем они нужны? Тут тоже все очевидно: комбинаторные задачи развивают логику, а их решение учит составлять алгоритмы для задач перебора с большим числом комбинаций и их оптимизации. Кстати, не менее популярны задачи и с использованием шашек. Да и всегда шахматы вызывали интерес, и к тому же шахматы - всегда отличный подарок для человека любого возраста. Благо не дорого можно найти вполне симпатичный комплект (как на картинке), например, по этой ссылке: darunok.ua/catalog/shakhmaty_i_shashki/. Кстати часто решать задачу по программированию удобнее на реальной живой доске, двигая фигуры.
Но вернемся теперь к примерам задач на комбинаторику с использованием шахмат или шашек.
Задача 1. Укажите на доске две клетки: начальную и конечную и предложите подсчитать число способов, которыми можно перейти из начальной клетки в конечную, указанной фигурой, например, лошадью, офицером, ладьей.
Задача 2. Какое максимальное количество одинаковых фигур (например, лошадей, офицеров, ладей) можно расставить на доске так, чтобы ни одна из фигур не находилась под ударом другой.
Задача 3. Посчитайте сколько существует способов при классической стартовой расстановке фигур на доске сделать по одному ходу поочередно противниками (по два хода, по три). Правила игры в шахматы соблюдаются.
Задача 4. Задача с условием из задачи 3, но для шашек.
Задача 5. На шахматной доске расставлены некоторые фигуры (воспринимайте их как препятствия). Напишите программу, которая находит кратчайший путь из стартовой клетки в финишную клетку для какой-то фигуры, например, для офицера. Угрозы от расположенных на доске фигур нет. Та же самая задача, если угроза есть.