Метью подобається розгадувати загадки. Кожен раз, коли йому вдається вирішити один, він щасливо пропускає навколо себе. Останнім часом йому справді потрібно це зробити, оскільки метеорний дощ відкрив кратери і діри в землі, в які він не хотів би впасти.
Вам подарують частину ландшафту, яку Метью хоче перетнути, сподіваючись, що в кінці кінців виходить здоровим. Земля наводиться в метрах, причому кожен метр є або звичайною землею, або норою. Під час бігу йому вдається перетнути один метр за крок; альтернативою є стрибки, які переходять чотири метри на крок. Метью починається в лівій крайній частині першого земного метра і хоче дістатись до останнього (але не за його межами, - лише уявіть собі нескінченну дірку за останнім метром, заданим у ландшафті).
Вхідні дані
Введення задається як один рядок на стандартному вході, закінчується розривом рядка. Лінія складається або з тире ( -
), або з підкресленнями ( _
), що представляє собою землю або метр отвору відповідно. Приклад зразка може бути:
----__--___---
Даний ландшафт довжиною принаймні один і не більше 30 метрів і завжди починається з землі.
Вихід
Вихід дається на стандартному виході і являє собою ряд команд руху до Метью, або run ( R
), або jump ( J
). Як зазначалося вище,
команда з бігу змушує Метью бігти на один метр, а стрибки переносять його вперед рівно на чотири метри. Для наведеного вище прикладу можливий наступний рух:
RRJRJRR
яка виглядає приблизно так:
Якщо через пейзаж немає безпечного шляху, то !
слід надрукувати єдиний знак оклику ( ).
Зразки входів
--------
----__--___---
-_______
-_-_-_-_-_-
-
Зразки виходів
JRRR
RRJRJRR
!
!
(останній вихід порожній, оскільки рух не потрібен, але я думаю, Markdown не може проаналізувати це)
Примітка
Необхідний лише один можливий шлях, тому вихід програми не повинен точно відповідати вибірковим результатам. Поки рішення дається, якщо воно існує і кожна команда руху переміщується на землю, а останній метр досягається в кінцевому підсумку, результат є дійсним.
Додатковий вихід при стандартній помилці ігнорується.
Умова виграшу
Найкоротший код виграє, як це прийнято в гольфі. У разі вирівнювання виграє раніше рішення.
Тестові справи
Є два сценарії тестів, що містять однакові тестові випадки:
- баш (спасибі Вентеро )
- PowerShell
Закликання є в обох випадках: <test script> <my program> [arguments]
наприклад, ./test ruby jumprun.rb
або ./test.ps1 ./jumprun.exe
.
Ще одна примітка
Це завдання було частиною змагань з гольфу, які проводилися в моєму університеті протягом 2011 -24. Оцінки та мови наших учасників конкурсу були такими:
- 104 - Хаскелл
- 131 - Хаскелл
- 154 - С
- 170 - С
- 275 - VB.NET
- 286 - Лист звичайний
Наші власні рішення були
- 92 - Рубі
- 124 - PowerShell
./test.sh perl jump.pl
-./test.sh: line 42: syntax error near unexpected token 'done'
, під баш 3.2.48