Знайдіть Санта та його північних оленів у переповненій сцені.
Вхідні дані
Вхід буде на STDIN і буде змінною кількістю рядків символів однакової, але змінної довжини. Якщо Санта (представлений персонажем S
) знаходиться на сцені, його мішок подарунків (представлений персонажем P
) опиниться в одному з сусідніх з ним положень (горизонтально, вертикально або по діагоналі). Його північний олень (кожен представлений символом R
) буде знаходитися в межах 5х5 квадрата, що його оточує. Якщо S
в сцені з'являється схованка подарунків або не супроводжується принаймні 4 оленями, то це не Санта.
Вихідні дані
Сцена очищена від усіх омертвень (усіх персонажів, які не є Сантами, не подарунки, персонажі, які не є оленями, замінені пробілом), показуючи Санта, його мішок подарунків та оленя - всі інші персонажі повинні бути замінені пробілами. Якщо Санта та його олені не на сцені, виведіть це без змін. Гарантується, що буде тільки одне рішення, тому ніколи не буде більше одного дійсного Санта, і він ніколи не буде мати більше, ніж один мішок подарунків.
Приклади
У цих прикладах я просто з допомогою *
символу , щоб зробити його легко побачити S
, P
і R
символи, але ваша програма повинна бути в змозі впоратися з будь-яким з символів ASCII !
в `
(33 до 96). Я вийшов із великих літер і вище, щоб уникнути плутанини.
Вхід:
***********
***********
***********
*****R*****
******P****
*****S*****
*****R*****
****R**R***
***********
***********
***********
***********
Вихід: (ігноруйте точки, вони змушують сторінку показувати порожні рядки)
.
.
.
R
P
S
R
R R
.
.
.
.
Вхід: (недостатньо оленя)
***********
***********
***********
***********
******P****
*****S*****
*****R*****
****R**R***
***********
***********
***********
***********
Вихід:
***********
***********
***********
***********
******P****
*****S*****
*****R*****
****R**R***
***********
***********
***********
***********
Вхід: (без мішків подарунків)
***********
***********
***********
*****R*****
***********
*****S*****
*****R*****
****R**R***
***********
***********
***********
***********
Вихід:
***********
***********
***********
*****R*****
***********
*****S*****
*****R*****
****R**R***
***********
***********
***********
***********
Введення: (подання недостатньо близько)
***********
***********
***********
*****R*****
***********
*****S*P***
*****R*****
****R**R***
***********
***********
***********
***********
Вихід:
***********
***********
***********
*****R*****
***********
*****S*P***
*****R*****
****R**R***
***********
***********
***********
***********
Введення: (один із північних оленів не в межах 5х5 квадрата навколо Санта-Клауса)
***********
***********
***********
*****R*****
******P****
*****S*****
*****R*****
****R******
*******R***
***********
***********
***********
Вихід:
***********
***********
***********
*****R*****
******P****
*****S*****
*****R*****
****R******
*******R***
***********
***********
***********
Тестові сценарії
Як і в деяких моїх минулих питаннях, я ще раз підкреслив кілька тестових сценаріїв, створених Джої та Вентеро, щоб створити кілька тестових випадків для цього питання:
Використання: ./test [your program and its arguments]
Звичайна текстова версія тестів для довідок: Звичайний текст
Нагороди
Кожен запис, на який я можу підтвердити, що відповідає специфікації, пройшов тести і, очевидно, мала спробу в гольфі, отримає відгук від мене (тому, будь ласка, надайте інструкції щодо використання зі своєю відповіддю). Найкоротше рішення до кінця 31.12.2013 буде прийнято як переможець.