Вступ
Джоні хоче грати у Фроггера. Однак він не дуже хороший. Насправді він буде намагатися рухатися лише вперед, і лише після того, як платформи переміститься.
З’ясуйте, чи вдасться жабі Джоні досягти кінця шляху або якщо вона вмирає на своєму шляху.
Виклик
Програма буде отримувати в якості вхідних даних сітки Frogger складеної 0
з і 1
с, в наступному форматі:
- Сітка буде довільною шириною та довжиною і принаймні 3х3
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
.
<
або>
ми можемо взяти прямокутні масиви як вхідні дані? До речі, приємний виклик!