Королю Джулиану нужно пройти через джунгли, но ему лень. Он хочет, чтобы компьютер мог рассчитать для него маршрут через джунгли.
Используя STDIN, получите карту джунглей для компьютера. Это будет следовать в следующем формате:
01001E
010110
000P00
1100J1
S00111
Карта джунглей работает так:
0
Земля, на которой Джулиан может двигаться.
1
это густые непроходимые джунгли.
P
это область с хищниками, которую вы должны избегать любой ценой.
J
это относительно густые джунгли. Миньоны Джулиана могут прорваться через одного из них, прежде чем утомить.
S
это то, где Джулиан начинает Это может быть где угодно на карте.
E
где Джулиан хочет пойти; конец пути. Он также может быть где угодно на карте, как и любая другая плитка.
Каждый персонаж является плиткой на карте. Разрывы строк указывают на новый ряд плиток. Если STDIN на вашем языке не поддерживает разрывы строк, разрыв строки должен быть заменен пробелом для обозначения новой строки.
Чтобы перемещаться между плитками, вы должны вывести строку, используя STDOUT, содержащую следующие специальные символы:
F
- Вперед
B
- назад
L
- Поверните Джулиана влево (на 90 градусов против часовой стрелки)
R
- Поверните Джулиан вправо (на 90 градусов по часовой стрелке)
M
- Миньоны уничтожают J
плитку на 1 плитку вперед от Джулиана, если она есть ( M
просто убирает плитку, вам все равно придется перейти на нее)
Возможный результат будет:
RFFLFRFMFLFRFLFF
Что решает карту выше.
Примечания:
Если ваша программа выводит решение, которое поражает хищников, игра окончена.
Если вы попадаете в непроходимые джунгли, вы просто отскакиваете туда, где были, прежде чем наткнуться на густые джунгли, обращенные таким же образом. (К джунглям)
Джулиан начинает смотреть вверх. (^ Таким образом, ^)
Вывод не должен быть самым быстрым решением,
FFF
и онFBFBFBFBFBFFF
одинаковый. Однако вывод самого быстрого решения дает бонус -10%.Если карта недействительна, STDOUT «Неверная карта». (Это включает, если карта неразрешима)
Карта не может иметь строки или столбцы различной длины; это делает его недействительным.
Ваш ответ должен в некоторой степени соответствовать следующему формату:
#Language name, *n* bytes
code
Explanation (optional)
Это код-гольф , поэтому выигрывает самый короткий код в байтах.
P
Действительно ли плитка добавляет что-то отличное от1
плитки? Я не могу себе представить правдоподобное решение, которое относится к ним по-другому.Ответы:
Groovy, 656 байт
Это было слишком долго ...
Выход для лабиринта:
Ungolfed:
Я скоро попробую это снова в python, чтобы посмотреть, смогу ли я сократить его дальше.
источник