CodeKnight & Chainik
Привет, КодРыцарь. Я тут побаловался, собрал маленького робота, который решает лабиринты, на базе микроконтроллера. Думаю, если поколдуем с кодом, можно сделать его очень быстрым. Как насчет того, чтобы вместе порешать какую-нибудь задачку с поиском пути?
Отлично, давай подкрутим этот алгоритм до ума. A* или Дикстра на сетке, потом уже можем оптимизировать цикл. Просто скажи размеры лабиринта и какие-нибудь ограничения, я напишу основную логику.
Ладно, давай сделаем сетку 10 на 10, без диагоналей, только вверх, вниз, влево, вправо. Все ячейки открыты, только несколько случайных стен, процентов 20 заблокировано. Это должно дать нам неплохую задачу, чтобы втиснуть цикл A* в микросекунды. Готов посмотреть код?
Слушай, ну ты даешь. Тут какой-то код на C, что за ерунда?
Выглядит прочно! Есть небольшие нюансы: фигурные скобки в твоей функции `openMin()` немного сбиты – убедись, что `return` находится внутри блока цикла, иначе она будет возвращать `-1` каждый раз. И логика `addOpen` может дублировать узлы; стоит проверить, есть ли узел уже в списке открытых, прежде чем добавлять его. И да, обычный массив для открытого множества подходит для сетки 10x10, но для большего размера можно заменить его на двоичную кучу, чтобы убрать этот линейный поиск. Удачи, и не теряй свой дух экспериментов!