Вступление
Джонни хочет сыграть Фроггера. Однако он не очень хорош. На самом деле он будет пытаться двигаться только вперед и только после того, как платформы переместятся.
Выясните, удастся ли лягушке Джонни достичь конца пути или она умрет на своем пути.
Вызов
Программа будет получать в качестве входных данных сетку Frogger, составленную из 0
s и 1
s, в следующем формате:
- Сетка будет иметь произвольную ширину и длину, и не менее 3x3
1
представляет платформы0
представляет водуF
представляет начальную позицию лягушки- Каждая первая и последняя строка сетки будет состоять только из
1
s и не будет двигаться, а лягушкаF
будет произвольно помещена в последнюю строку - Каждый промежуточный слой всегда будет двигаться и будет иметь
<
или>
в конце каждой строки, указывающей, перемещается ли он влево или вправо
Разрешается заменять эти символы своими собственными, если они все различаются, а вы указываете замены в своем ответе.
Входные данные могут быть в любом совместимом формате (строка с разрывами строк, массив строк, массив символов, ...).
Правила вызова
- Каждый ход все платформы будут двигаться на одну клетку в зависимости от направления, обозначенного знаком
<
или>
- Платформы снова появляются на другой стороне сетки, если их отталкивают от «экрана»
- Если лягушка находится на движущейся платформе, она будет двигаться вместе с ней
- После этого лягушка прыгнет на один квадрат к верхнему ряду. Лягушка будет двигаться каждый ход.
- Лягушка умирает, если прыгает в воду (
0
) или касается стороны сетки вместе с движущейся платформой
Ваша программа должна вывести истинное значение, если лягушка выживет, и ложное значение в противном случае.
Это код-гольф , поэтому выигрывает самый короткий ответ в байтах. Применяются стандартные лазейки.
Примеры
Пример 1
вход
11111
00111>
00101<
1F111
Выход
1
выполнение
Поворот 1:
11111
10011
01010
1F111
11111
10011
0F010
11111
Поворот 2:
11111
11001
F0100
11111
11111
F1001
10100
11111
Поворот 3:
11111
1F100
01001
11111
1F111
11100
01001
11111
Пример 2
вход
11111
00100<
00100<
1F111
Выход
0
выполнение
Поворот 1:
11111
01000
01000
1F111
11111
01000
0F000
11111
Поворот 2:
11111
10000
F0000
11111
11111
F0000
10000
11111
Поворот 3:
11111
00001
00001
11111
<
или >
в конце.
0
перед ней стоит перед собой, или она будет ждать следующего 1
? Если он может подождать, пойдет ли он вперед на всех 1
, или он может с умом ждать? 11111 00001< 00011< 11F11
То есть с тестовым случаем , будет ли он ложным, потому что он прыгает в воду ( пастбина шагов ); будет ли он ложным, потому что он выходит за рамки ( пастин ступеней ); или это будет правдой, потому что она ловко ждет вторую платформу, прежде чем прыгнуть вперед ( паста шагов )?
0
.
<
или>
мы можем взять прямоугольные массивы в качестве входных данных? Кстати, хороший вызов!