Показать сообщение отдельно
  #3 (permalink)  
Старый 24.04.2009, 16:55
Аватар для Gvozd
Матрос
Отправить личное сообщение для Gvozd Посмотреть профиль Найти все сообщения от Gvozd
 
Регистрация: 04.04.2008
Сообщений: 6,246

+1 к вопросу о знаках препинания.
но кажется я догадался что вам надо.
Это класическая алгоритмическая задача, рассмотренная неймоверное количество раз практически на всех живых языках, и рискну предположить на некоторых эзотерических.
Как вывод:
1)Ищите лучше.В сети уже есть решение, навреняка и на JS
2)Есть куча книг по алгоритмам, где есть описание решения этой задачи на словах, и как правило на одном-двух языках програмирования.
Как правило этого вполне достаточно, чтобы написать реализацию на своем языке.

Сам алгоритм вашей задачи решается класически с помощью рекурсии.
рекурсивно обходите все возможные пути, на каждой итерации рекурсии, совершая переходы из текущей ячейки во все соседние, доступные(даже если это шаг "назад").
Учитывая специфику задачи, для избежания зацикливания, запоминайте пройденный путь, и на клетки из него не идите.
в глобальной области видимости держите массив, куда будете записывать самый короткий путь, и переменную, для его длины.
по достижении цели, перезаписывайте их, если новый путь короче.
По окончании рекурсивной функции, у вас на руках будет путь, и его длина.Этот путь и будет одним из кратчайших(может быть несколько одинаковых по длине кратчайших)

Если вы не в состоянии оформить эту мысль в код JS, то идите и учите теорию JS.При необходимости и алгоритмизацию. Готового решения от скуки, за просто так вам тут не разместят.

Удачного кодинга!
Ответить с цитированием