Каждый из блинов имеет идентификационный номер это соответствует их размеру, за которым следует буква «w» или «b». Таким образом, самый большой блин имеет идентификатор 4, следующий по величине — 3, следующий — 2, а самый маленький — идентификатор 1. Буква «w» означает, что несгоревшая (белая) сторона находится вверху, а «b» — показывает, что обожженная сторона вверх. Цель — получить «1w2w3w4w».
Ввод должен состоять из пар четырех цифр, одного символа, дефиса и одного последнего символа (#K#K#K#K-X). , где первая цифра указывает идентификатор верхнего блина, а первый символ указывает, находится ли подгоревшая сторона вниз («w») или нет («b»), второе число указывает второй по величине блин, за которым следует символ, и т. д. Последним символом (X) будут символы «b» или «a», которые относятся к алгоритмам поиска в ширину (BFS) или A* соответственно.
Ниже: пример ввода и вывода программы.
Ввод:
Код: Выделить всё
1b2b3w4b-a # “a” indicates A*
Код: Выделить всё
1b2b|3w4b g:0, h:0
2w|1w3w4b g:2, h:2
2b1w3w4b| g:3, h:2
4w|3b1b2w g:7, h:4
4b3b1b2w| g:8, h:4
2b1w|3w4w g:12, h:2
1b|2w3w4w g:14, h:0
1w2w3w4w g:15, h:0
Очевидно, что для поиска BFS нам не нужна эвристическая функция, мы можем напрямую распечатать шаги переворота.
Нам также потребуется реализовать какую-то функцию прерывания ничьей, которая будет активироваться в тех случаях, когда флиппер оказывается в ничьей, поэтому мы можем заменить «w» на 1 и «b». » с 0, чтобы получить восьмизначное число. После этого выберите узел с выбранным числовым идентификатором большего размера.
Я новичок в программировании, особенно в алгоритмах, честно говоря, мне нужна помощь с логикой и, возможно, с реализацией. Если вы, ребята, можете с этим помочь, я могу как-нибудь попытаться решить эту проблему с помощью кода. Спасибо
Я пробовал использовать ChatGTP, чтобы понять логику, но похоже, что даже он не может правильно решить эту проблему. Как только я получу фундаментальное понимание логики и некоторые рекомендации по реализации, я смогу обойти ее.
Кроме того, если я забыл упомянуть, мне придется решать эту проблему без каких-либо библиотек. .
Подробнее здесь: https://stackoverflow.com/questions/790 ... th-a-twist