Javascript шлях коня дошкою NxN

БлогNot. Javascript: шлях коня дошкою NxN

Javascript: шлях коня дошкою NxN

Завдання відоме і класичне - обійти ходом шахового коня всі поля прямокутної дошки, не обов'язково розміру 8x8.

Наведений нижче скрипт використовує не зовсім звичайний підхід до визначення клітин, на які може сходити кінь - скрипт знаходить їх координати з рівняння "клітинного кола" x 2 +y 2 =5 , де x і y можуть приймати цілі значення від -2 до 2 включно крім нуля (див. nMovesCalculate в коді).

Розміри дошки вибирайте самі зі списку від 5 до 26 включно. Після вибору натисніть "Очистити", щоб створити дошку. Потім клацніть по клітці, з якої кінь починає свій шлях, і натисніть "Знайти". Скрипт покаже хід коня візуально на дошці та у текстовому вигляді під дошкою.

Якщо Javascript включений, але щось не працює, перевірте, чи не блокується скрипт яким-небудь розширенням браузера, наприклад AdBlock.

Чому такі розміри дощок?

  • Для неквадартних дощок міняти програму ліньки, поміняйте самі пару рядків у коді, якщо потрібно;
  • Верхній розмір = 26 просто тому, що скінчилися латинські літери. Якщо вигадати, як позначати поля далі (див. firstLetterCode в коді), можна без втрат часу отримати рішення для дощок великих розмірів;
  • Нижній розмір = 5, тому що:
  • якщо одна сторона дошки дорівнює 3, то інша повинна бути або 4 або не менше 7;
  • якщо обидві сторони більше 3, то обхід коня можливий усім дошках, крім 4x4.

Кількість маршрутів коня для дошки 8x8 дорівнює значенню 19591828170979904, так що все показувати або виводити недоцільно :)

Для дощок 5x5 і 7x7 алгоритм гарантовано знайде повний шлях, мабуть, лише зкутового або центрального поля дошки (хоча може і з інших), на інших дошках повинен шукати будь-якого стартового поля. Уточнення – для деяких стартових полів можливі проблеми з дошками непарного розміру. :)

Потрібен JQuery, що підключається ззовні з офіційного сервера (див. код). Точніше, не дуже він тут потрібен, але для різноманітності.

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

Повний вихідник скрипту:

Багато рішень завдання будь-якими мовами, тільки не JS і не з вибором розміру дошки :)

Завдання Knight's tour у "Вікі" (EN)

Завдання про хід коня у "Вікі" (RU)

А як запам'ятати маршрут коня дошкою 8x8?

Для того щоб обійти конем усі шахові клітини і жодного разу не побувати двічі на одній і тій самій, до того ж зробити це "наосліп", почавши або закінчивши на будь-якій клітці за бажанням "глядача", можна завдяки менімонійному віршу:

Перші літери задають координати ходів: Алеє Осінь = А1; Цінними Дарами = С2; і т. д. У кожну строфу вставлено підказку, що допомагає не переплутати послідовність строф: ще ОДИН, ДВА вечора, дістаються ТРЬОМ і т.д.