Так...
У тебя расчёт идёт с движением по диагонали, хотя лабиринт позволяет ходить без диагоналей.
Без диагоналей расчёт почти всегда в 2 раза быстрей. + скорость расчёта от компа зависит.
У меня результаты первого теста:
диагониль + обходить углы:
9,073 сек
диагониль + не обходить углы:
8,489 сек (этот вариант ты делал)
без диагонилей:
5,931 сек
Приложу вычисление 1 теста с настройками как у тебя (диагональ-не обходить углы)
[spoiler]
12:35:15 --- читаем карту ---
12:35:15 111111111111111111111111111111111111100000000000111111111111111111
12:35:15 111111111111111111000000000000000000000011111000001111111111111111
12:35:15 111111111111111110000111111111111111111111111111000001111111111111
12:35:15 111111111111111100111111111111111111111111111111111000111111111111
12:35:15 111111111111111100111111111111111000000000000001111110001111111111
12:35:15 111111111111111110010000000000000000011111111000011111000111111111
12:35:15 111111111111111111000001111111111111111111111000000111100011111111
12:35:15 111111111111111111111111111111111100000000000001100011110011111111
12:35:15 111111111111111111110000000000000000000000000001110001111001111111
12:35:15 111111111111111000000000111111111111111111111000011100111100111111
12:35:15 111111111111000001111111111111110001111000011110001110011100111111
12:35:15 111111111110001111111100000000000000000000000111000110001110011111
12:35:15 111111111110011111000000001111111100000111110001100011000110001111
12:35:15 111111111100110000001111111111111100111111111001110011100111001111
12:35:15 111111111001100011111111000000011100111111111100111001110011100111
12:35:15 111111110000001111110000000000500000000011111110011000110011100111
12:35:15 111111100000111111100001111111111111000000001110011100111001100111
12:35:15 111111100111111111100111111111111111111110000111001100011000110011
12:35:15 111111001111111111101111111111111111111111110011001110011100110011
12:35:15 111111001111111111101111111111111111111111110011100110001110010011
12:35:15 111111001000000000001111111111111111111111111000100111001110010011
12:35:15 111111000000000011001111111111111111111111111100110111000111001011
12:35:15 111111000011111111001111111111111111111111111110110011100111001011
12:35:15 111111000111111111001111111111111111111111111110010011100111100011
12:35:15 100000001111111111011111111111111111111111111110111000000111100011
12:35:15 001100011111111111011111111111111111111111111110111000010111000000
12:35:15 011100000111111111011111111111111111111111111100111101110011001100
12:35:15 010000000000001111011111111111111111111111111100111101110011001100
12:35:15 011110011110000010011111111111111111111111111001111001110011001110
12:35:15 001110011111110000011111111111111111111111110001111001110011001110
12:35:15 100111001111111100011111111111111111111111100011111001110011101110
12:35:15 100111000111111100111111111111111111111111100111111001110011101110
12:35:15 110111100111111100111111111111111111111111001111111001110011101110
12:35:15 110111110011111100000000000111111111111110011111111001110011101110
12:35:15 110111111001111100000011100011111111111100011111111001110011001110
12:35:15 110111111000111100111111110011111111111100111111111001110011001110
12:35:15 110111111100001111111111111001111111111001111111111001110011001110
12:35:15 100111111111000111111111111000111111110011111111111011110111001110
12:35:15 140111111111000011111111111100000111100111111111111011110111001110
12:35:15 111111111110010001111111111111000000001111111111110011100111011100
12:35:15 111111111110011000011111111111111110011111111111110011100111011100
12:35:15 111111111111001100000000111111111111111111111111100111001111011100
12:35:15 111111111111001111111000000011111111111111111110001111001110011001
12:35:15 111111111111001111111111110000011111111111110000011110011100011001
12:35:15 111111111000001111111111111110000001111110000001111100011000110011
12:35:15 111111111000000001111111111111110000000000001111111000110001110011
12:35:15 111111111111111000011111111111111111111111111111110001100011100111
12:35:15 111111111111111110000111111111111111111111111111000011000111000111
12:35:15 111111111111111111100000111111111111111111111111001110011110001111
12:35:15 111111111111111111111100001111111111111111111111111100111100011111
12:35:15 111111111111111111111111000001111111111111111111111001111000111111
12:35:15 111111111111111111111111111000001111111111111111100011100001111111
12:35:15 111111111111111111111111111111000000000000000000000000000111111111
12:35:15 111111111111111111111111111111111100000000000010000000011111111111
12:35:15 111111111111111111111111111111111111111111111110011111111111111111
12:35:15 111111111111111111111111111111111111111111110000011111111111111111
12:35:16 111111111111111111111111111111111111111000000011111111111111111111
12:35:16 start: 1/38
12:35:16 end: 30/15
12:35:16 width/height 66/57
12:35:16
12:35:23 result:
12:35:24 1/38 2 - вверх-вправо
12:35:24 2/37 1 - вверх
12:35:24 2/36 1 - вверх
12:35:24 2/35 1 - вверх
12:35:24 2/34 1 - вверх
12:35:24 2/33 1 - вверх
12:35:24 2/32 1 - вверх
12:35:24 2/31 1 - вверх
12:35:24 2/30 8 - вверх-влево
12:35:24 1/29 8 - вверх-влево
12:35:24 0/28 1 - вверх
12:35:24 0/27 1 - вверх
12:35:24 0/26 2 - вверх-вправо
12:35:24 1/25 2 - вверх-вправо
12:35:24 2/24 3 - вправо
12:35:24 3/24 3 - вправо
12:35:24 4/24 3 - вправо
12:35:24 5/24 2 - вверх-вправо
12:35:24 6/23 2 - вверх-вправо
12:35:24 7/22 2 - вверх-вправо
12:35:24 8/21 2 - вверх-вправо
12:35:24 9/20 3 - вправо
12:35:24 10/20 3 - вправо
12:35:24 11/20 3 - вправо
12:35:24 12/20 3 - вправо
12:35:24 13/20 3 - вправо
12:35:24 14/20 3 - вправо
12:35:24 15/20 3 - вправо
12:35:24 16/20 3 - вправо
12:35:24 17/20 3 - вправо
12:35:24 18/20 2 - вверх-вправо
12:35:24 19/19 1 - вверх
12:35:24 19/18 2 - вверх-вправо
12:35:24 20/17 2 - вверх-вправо
12:35:24 21/16 2 - вверх-вправо
12:35:24 22/15 3 - вправо
12:35:24 23/15 3 - вправо
12:35:24 24/15 3 - вправо
12:35:24 25/15 3 - вправо
12:35:24 26/15 3 - вправо
12:35:24 27/15 3 - вправо
12:35:24 28/15 3 - вправо
12:35:24 29/15 3 - вправо
12:35:24 =============== конец расчёта ===============
12:35:24 расчёт Сlickermann занял: 8489 мс
12:35:24 0:0:8.489
12:35:24
[/spoiler]
второй тест - максимальный
диагониль + не обходить углы:
17 мин 2,361 сек (этот вариант ты делал)
без диагонилей:
8 мин 20,665 сек
[spoiler]
12:15:40 --- читаем карту ---
12:15:40 111111111111111111111111111111111111100000000000111111111111111111
12:15:40 111111111111111111000000000000000000000011111000001111111111111111
12:15:40 111111111111111110000111111111111111111111111111000001111111111111
12:15:40 111111111111111100111111111111111111111111111111111000111111111111
12:15:40 111111111111111100111111111111111000000000000001111110001111111111
12:15:40 111111111111111110010000000000000000011111111000011111000111111111
12:15:40 111111111111111111000001111111111111111111111000000111100011111111
12:15:40 111111111111111111111111111111111100000000000001100011110011111111
12:15:40 111111111111111111110000000000000000000000000001110001111001111111
12:15:40 111111111111111000000000111111111111111111111000011100111100111111
12:15:40 111111111111000001111111111111110001111000011110001110011100111111
12:15:40 111111111110001111111100000000000000000000000111000110001110011111
12:15:40 111111111110011111000000001111111100000111110001100011000110001111
12:15:40 111111111100110000001111111111111100111111111001110011100111001111
12:15:40 111111111001100011111111000000011100111111111100111001110011100111
12:15:40 111111110000001111110000000000000000000011111110011000110011100111
12:15:40 111111100000111111100001111111111111000000001110011100111001100111
12:15:40 111111100111111111100111111111111111111110000111001100011000110011
12:15:40 111111001111111111101111111111111111111111110011001110011100110011
12:15:40 111111001111111111101111111111111111111111110011100110001110010011
12:15:40 111111001000000000001111111111111111111111111000100111001110010011
12:15:40 111111000000000011001111111111111111111111111100110111000111001011
12:15:40 111111000011111111001111111111111111111111111110110011100111001011
12:15:40 111111000111111111001111111111111111111111111110010011100111100011
12:15:40 100000001111111111011111111111111111111111111110111000000111100011
12:15:40 001100011111111111011111111111111111111111111110111000010111000000
12:15:40 011100000111111111011111111111111111111111111100111101110011001100
12:15:40 010000000000001111011111111111111111111111111100111101110011001100
12:15:40 011110011110000010011111111111111111111111111001111001110011001110
12:15:40 001110011111110000011111111111111111111111110001111001110011001110
12:15:40 100111001111111100011111111111111111111111100011111001110011101110
12:15:40 100111000111111100111111111111111111111111100111111001110011101110
12:15:40 110111100111111100111111111111111111111111001111111001110011101110
12:15:40 110111110011111100000000000111111111111110011111111001110011101115
12:15:40 110111111001111100000011100011111111111100011111111001110011001110
12:15:40 110111111000111100111111110011111111111100111111111001110011001110
12:15:40 110111111100001111111111111001111111111001111111111001110011001110
12:15:40 100111111111000111111111111000111111110011111111111011110111001110
12:15:40 140111111111000011111111111100000111100111111111111011110111001110
12:15:40 111111111110010001111111111111000000001111111111110011100111011100
12:15:40 111111111110011000011111111111111110011111111111110011100111011100
12:15:40 111111111111001100000000111111111111111111111111100111001111011100
12:15:40 111111111111001111111000000011111111111111111110001111001110011001
12:15:40 111111111111001111111111110000011111111111110000011110011100011001
12:15:40 111111111000001111111111111110000001111110000001111100011000110011
12:15:40 111111111000000001111111111111110000000000001111111000110001110011
12:15:40 111111111111111000011111111111111111111111111111110001100011100111
12:15:40 111111111111111110000111111111111111111111111111000011000111000111
12:15:40 111111111111111111100000111111111111111111111111001110011110001111
12:15:40 111111111111111111111100001111111111111111111111111100111100011111
12:15:40 111111111111111111111111000001111111111111111111111001111000111111
12:15:40 111111111111111111111111111000001111111111111111100011100001111111
12:15:40 111111111111111111111111111111000000000000000000000000000111111111
12:15:40 111111111111111111111111111111111100000000000010000000011111111111
12:15:40 111111111111111111111111111111111111111111111110011111111111111111
12:15:40 111111111111111111111111111111111111111111110000011111111111111111
12:15:40 111111111111111111111111111111111111111000000011111111111111111111
12:15:40 start: 1/38
12:15:40 end: 65/33
12:15:40 width/height 66/57
12:15:40
12:32:20 result:
12:32:42 1/38 2 - вверх-вправо
12:32:42 2/37 1 - вверх
12:32:42 2/36 1 - вверх
12:32:42 2/35 1 - вверх
12:32:42 2/34 1 - вверх
12:32:42 2/33 1 - вверх
12:32:42 2/32 1 - вверх
12:32:42 2/31 8 - вверх-влево
12:32:42 1/30 1 - вверх
12:32:42 1/29 7 - влево
12:32:42 0/29 1 - вверх
12:32:42 0/28 1 - вверх
12:32:42 0/27 1 - вверх
12:32:42 0/26 1 - вверх
12:32:42 0/25 3 - вправо
12:32:42 1/25 1 - вверх
12:32:42 1/24 3 - вправо
12:32:42 2/24 3 - вправо
12:32:42 3/24 3 - вправо
12:32:42 4/24 4 - вних-вправо
12:32:42 5/25 4 - вних-вправо
12:32:42 6/26 5 - вниз
12:32:42 6/27 5 - вниз
12:32:42 6/28 5 - вниз
12:32:42 6/29 5 - вниз
12:32:42 6/30 4 - вних-вправо
12:32:42 7/31 4 - вних-вправо
12:32:42 8/32 5 - вниз
12:32:42 8/33 3 - вправо
12:32:42 9/33 5 - вниз
12:32:42 9/34 4 - вних-вправо
12:32:42 10/35 4 - вних-вправо
12:32:42 11/36 3 - вправо
12:32:42 12/36 5 - вниз
12:32:42 12/37 5 - вниз
12:32:42 12/38 5 - вниз
12:32:42 12/39 5 - вниз
12:32:42 12/40 5 - вниз
12:32:42 12/41 4 - вних-вправо
12:32:42 13/42 5 - вниз
12:32:42 13/43 5 - вниз
12:32:42 13/44 5 - вниз
12:32:42 13/45 3 - вправо
12:32:42 14/45 3 - вправо
12:32:42 15/45 4 - вних-вправо
12:32:42 16/46 3 - вправо
12:32:42 17/46 4 - вних-вправо
12:32:42 18/47 3 - вправо
12:32:42 19/47 4 - вних-вправо
12:32:42 20/48 3 - вправо
12:32:42 21/48 3 - вправо
12:32:42 22/48 4 - вних-вправо
12:32:42 23/49 3 - вправо
12:32:42 24/49 4 - вних-вправо
12:32:42 25/50 3 - вправо
12:32:42 26/50 3 - вправо
12:32:42 27/50 4 - вних-вправо
12:32:42 28/51 3 - вправо
12:32:42 29/51 3 - вправо
12:32:42 30/51 4 - вних-вправо
12:32:42 31/52 3 - вправо
12:32:42 32/52 3 - вправо
12:32:42 33/52 3 - вправо
12:32:42 34/52 3 - вправо
12:32:42 35/52 3 - вправо
12:32:42 36/52 3 - вправо
12:32:42 37/52 3 - вправо
12:32:42 38/52 3 - вправо
12:32:42 39/52 3 - вправо
12:32:42 40/52 3 - вправо
12:32:42 41/52 3 - вправо
12:32:42 42/52 3 - вправо
12:32:42 43/52 3 - вправо
12:32:42 44/52 3 - вправо
12:32:42 45/52 3 - вправо
12:32:42 46/52 3 - вправо
12:32:42 47/52 3 - вправо
12:32:42 48/52 3 - вправо
12:32:42 49/52 3 - вправо
12:32:42 50/52 3 - вправо
12:32:42 51/52 3 - вправо
12:32:42 52/52 3 - вправо
12:32:42 53/52 3 - вправо
12:32:42 54/52 3 - вправо
12:32:42 55/52 2 - вверх-вправо
12:32:42 56/51 3 - вправо
12:32:42 57/51 2 - вверх-вправо
12:32:42 58/50 2 - вверх-вправо
12:32:42 59/49 2 - вверх-вправо
12:32:42 60/48 2 - вверх-вправо
12:32:42 61/47 2 - вверх-вправо
12:32:42 62/46 1 - вверх
12:32:42 62/45 2 - вверх-вправо
12:32:42 63/44 1 - вверх
12:32:42 63/43 2 - вверх-вправо
12:32:42 64/42 1 - вверх
12:32:42 64/41 2 - вверх-вправо
12:32:42 65/40 1 - вверх
12:32:42 65/39 1 - вверх
12:32:42 65/38 1 - вверх
12:32:42 65/37 1 - вверх
12:32:42 65/36 1 - вверх
12:32:42 65/35 1 - вверх
12:32:42 65/34 1 - вверх
12:32:42 =============== конец расчёта ===============
12:32:42 расчёт Сlickermann занял: 1022361 мс
12:32:42 0:17:2.361
12:32:42
[/spoiler]
Это что касается первоначального скрипта с расчётом только кликером. Там же два варианта: самим кликером и сторонней программой. Сторонней быстрей.
Аааа, я наверно не выкладывал этот вариант.
Я тогда ещё глянул, что приемлемо по времени только на небольших полях и сразу взялся за симбиоз, вынес расчёт самого алгоритма в другую программу.
Расчёт не самим кликеромпервый тест:
диагониль + обходить углы:
0,428 сек
диагониль + не обходить углы:
0,326 сек
без диагонилей:
0,323 сек
второй тест:
диагониль + обходить углы:
4,006 сек
диагониль + не обходить углы:
3,886 сек
без диагонилей:
1,949 сек
[spoiler]
12:54:42 =============== конец расчёта ===============
12:54:42 расчёт AutoIt занял: 4006 мс
12:54:42 0:0:4.006
12:54:42
12:55:45 =============== конец расчёта ===============
12:55:45 расчёт AutoIt занял: 3886 мс
12:55:45 0:0:3.886
12:55:45
12:56:22 start: 1/38
12:56:22 end: 65/33
12:56:22 width/height 66/57
12:56:22
12:56:24 =============== конец расчёта ===============
12:56:24 расчёт AutoIt занял: 1949 мс
12:56:24 0:0:1.949
12:56:24
[/spoiler]
Так что используй второй способ и по возможности без диагоналей (если бегать углами будет быстрее и выгодней, чем потеря времени на расчёте
).
Расчёт не кликером быстрей от
x18 раз на простых случаях, до
х256 раз на сложных. Вот почему я просил скорости кликеру
И как раз для таких случаев я делал задание точек старта-финиша не в карте, а отдельно. Карта картой, точки -сами даём. Это так-же может ускорить, не нужно будет на карте искать старт/финиш.
P.S. ещё глупая идея для твоего случая... Если даже этот расчёт покажется медленным
именно во время игры, то 25х25 = 625 путей можно просчитать заранее и сохранить в файл. Это не записывать 625, а всего лишь один раз потратить 650 секунд чистого времени - 10 мин.
Но думаю это будет не нужно.
Во вложении скрипт с твоими примерами.
И да, карту кликером во втором случае тоже можно не читать и если старт/финиш задаются отдельно.
P.P.S. И большие карты целесообразно делить на меньшие. Так в основном и делают если можно. Делят на локации/долины/города/здания/этажи/комнаты... и т.д.
Тогда расчёт сокращается в разы. Например сначала расчёт по карте здания - пути между комнатами. При вхождении в комнату - расчёт обхода мебели/планировки по карте комнаты. Это намного быстрей, чем считать по одной детальной глобальной карте.