Вступ
У вас нещастя бути застряглими у втеченій машині на перешкоді. Усі характеристики автомобіля не реагують на чутливість, крім рульової системи, яка пошкоджена. Він може їхати прямо, або може повернути праворуч. Чи може машина керуватися безпекою?
Механіка
Ваш автомобіль починається у верхньому лівому куті на карті 8х8 і намагається досягти безпеки в правому нижньому куті. Автомобіль має орієнтацію (спочатку праворуч), виміряну з кроком 90 градусів. Автомобіль може виконувати одну з двох дій:
- Просуньте один квадрат вперед, або
- Поверніть на 90 градусів за годинниковою стрілкою, а потім рухайтеся на один квадрат вперед
Зауважте, що автомобіль не в змозі повернути досить різко, щоб здійснити 180-градусний поворот на одному квадраті.
Деякі квадрати - це перешкоди. Якщо автомобіль потрапить у квадрат перешкод, він врізається. Все поза межами курсу 8х8 вважається перешкодами, тому від'їзд з курсу рівносильний краху.
Правий нижній квадрат - це безпечний квадрат, який дозволяє автомобілю вийти з курсу перешкод. Початковий і безпечний квадрат вважаються не перешкодами.
Завдання
Ви повинні написати програму або функцію, яка приймає за свій вхід масив 8x8 (матриця, список списків тощо), що представляє курс перешкод. Програма повертає або друкує булеве або щось подібне до цього. Якщо автомобіль може доїхати до безпечної площі без збоїв (тобто, якщо карта вирішальна), вихід True, інакше, є False.
Оцінка балів
Стандартні правила гольф-коду - переможець - код з найменшою кількістю байтів.
Бонуси:
Якщо для вирішуваної карти ваш код видає дійсну серію вводів для водіїв, які спрямовують автомобіль до безпечної площі, відрахуйте 10 відсоткових балів від вашої оцінки. Приклад виведення формату може бути
SRSSR(із зазначенням Прямий, Правий, Прямий, Прямий, Правий). Цей вихід замінить стандартнийTrueвихід.Якщо для нерозв'язної карти вихідний код розрізняє ситуації, коли аварія неминуча, і ситуації, коли можна проїхати смугу перешкод назавжди, відрахуйте 10 відсоткових балів від вашого результату. Прикладом виходу може бути,
Crashякщо аварія неминуча абоStuckякщо машина назавжди застрягла в перешкоді. Ці виходи замінять стандартнийFalseвихід для нерозв'язної карти.
Приклад
Якщо програмі надано масив 8x8, такий як цей:
[[0, 0, 0, 0, 0, 1, 0, 0],
[0, 0, 0, 0, 0, 0, 1, 0],
[1, 1, 0, 0, 0, 0, 0, 0],
[0, 1, 0, 1, 0, 0, 0, 0],
[0, 0, 1, 1, 0, 0, 0, 0],
[0, 0, 0, 0, 1, 0, 1, 0],
[0, 0, 0, 0, 0, 0, 1, 0],
[0, 1, 1, 0, 0, 0, 1, 0]]
Це трактуватиметься як така карта, на якій чорні квадрати вказують на перешкоди:

І можливим рішенням може бути:

Оскільки рішення існує, програма повинна повернути / роздрукувати Trueдля цієї карти. Послідовність наведених тут рухів така SSSSRSRRRSRSSRRRSSRSSS.
CrashтаStuck. Вони тут через те, як довго вони стоять. Рядок 2 заповнений, все інше порожнє ->Crash. Ряд 7 заповнений, все інше порожнє ->Stuck