Вверх ↑
Ответов: 2125
Рейтинг: 159
#1: 2009-01-09 21:46:55 ЛС | профиль | цитата
А чё там комментировать? Процедурки очень маленькие, сам принцип тоже не сложный: двигаемся от текущей точки во все стороны, в самой точке сохраняем дистанцию и направление, откуда мы в эту точку попали (если конечно дистанция меньше имеющейся, изначально инициализирована 10000), точки, которые надо обработать хранятся в массиве (я использовал FIFO, но это не принципиально). Когда FIFO опустел - останавливаемся и идём из точки назначения по кратчайшему пути, которое указано направлением движения в каждой точке (в обратную ес-сно сторону).
------------ Дoбавленo:

А ещё, за каждый поворот - ещё +1 дистанции, чтобы из двух одинаковых выбирался с меньшим числом поворотов.
Я хотел ещё добавить возможность пересечения линий (например, добавляя за это +20 дистанции), но руки не дошли.
карма: 1

0