tom-it писал(а):
Если я правильно понимаю(в чем я уже сомневаюсь) то в матрице нужно учитывать все возможные комбинацииВроде правильно.
У меня есть 4 бита, для характеристики "лабиринта": Body, Pin, Hwire, Vwire
Прочитал координаты элемента - заполнил некий прямоугольничек битом Body
Прочитал пин - установил соответствующий бит. Тут правда есть маленькое рукосуйство: для красного пина я типа сбрасываю бит Body...
Но все одно: 2 бита => 4 комбинации: пусто, элемент, красный пин, черный пин.
Прочитал координаты проводника - поставил один из битов (Hwire или Vwire) вдоль всей его длины.
Прочитал координаты второго проводника - то же самое. И совершенно при этом не интересуюсь, какие биты уже стоят или не стоят.
Все, диалог со средой закончен, необходимая информация (4-х битная по всему полю) типа собрана.
Теперь прокладываю трассу: вдоль нее собираю все штрафы из первых 4-х столбцов таблицы. Информация о "лабиринте" при этом не трогается, ставятся только "стенки". Чтобы не ходить там (с учетом не только координаты, но и направления), где УЖЕ был -- но это совсем другие биты.
И, ПЛЮС к этим штрафам, добавляю штрафы из 5-го столбца. Коли прокладываемая трасса петляет как заяц. Т.е., в точках изменения направления.
Вот и вся наука.
------------ Дoбавленo в 14.33:
37.45.27.68 писал(а):
Да ладно вам мучать этот "умный обход", все равно не выжать из него больше чем уже естьМучать - не есть самое плохое
Результаты рукосойства порой имеют положительные побочные эффекты: тонкий баг какой ни то вскроется
Главное, чтобы этот процесс был ограничен во времени. Не стал перманентным...
Потом уже все: лучшее - враг хорошего. Но это -- ПОТОМ.