Encontre o Papai Noel e suas renas em uma cena lotada.
Entrada
A entrada estará em STDIN e será um número variável de linhas de caracteres de comprimento igual, mas variável. Se o Papai Noel (representado pelo personagem S) estiver em cena, seu saco de presentes (representado pelo personagem P) estará em uma das posições adjacentes a ele (horizontal, vertical ou diagonal). Suas renas (cada uma representada pelo personagem R) estarão todas dentro do quadrado 5x5 ao seu redor. Se um Saparece na cena que não tem um saco de presentes ou não é acompanhado por pelo menos quatro renas, então não é o Papai Noel.
Resultado
A cena limpa de toda ofuscação (todos os personagens que não são do Papai Noel, presentes ou não-renas são substituídos por um espaço), mostrando Papai Noel, seu saco de presentes e sua rena - todos os outros personagens devem ser substituídos por espaços. Se o Papai Noel e suas renas não estiverem em cena, produza-os inalterados. É garantido que haverá apenas uma solução; portanto, nunca haverá mais de um Papai Noel válido e ele nunca estará carregando mais de um saco de presentes.
Exemplos
Nestes exemplos Estou apenas usando o *personagem para torná-lo fácil de ver S, Pe Rpersonagens, mas o seu programa deve ser capaz de lidar com qualquer caracteres ASCII a partir !de `(33 a 96). Eu deixei de fora caracteres minúsculos e acima para evitar confusão.
Entrada:
***********
***********
***********
*****R*****
******P****
*****S*****
*****R*****
****R**R***
***********
***********
***********
***********
Saída: (ignore pontos, eles devem forçar a página a mostrar as linhas em branco)
.
.
.
R
P
S
R
R R
.
.
.
.
Entrada: (rena insuficiente)
***********
***********
***********
***********
******P****
*****S*****
*****R*****
****R**R***
***********
***********
***********
***********
Resultado:
***********
***********
***********
***********
******P****
*****S*****
*****R*****
****R**R***
***********
***********
***********
***********
Entrada: (sem saco de presentes)
***********
***********
***********
*****R*****
***********
*****S*****
*****R*****
****R**R***
***********
***********
***********
***********
Resultado:
***********
***********
***********
*****R*****
***********
*****S*****
*****R*****
****R**R***
***********
***********
***********
***********
Entrada: (apresenta não perto o suficiente)
***********
***********
***********
*****R*****
***********
*****S*P***
*****R*****
****R**R***
***********
***********
***********
***********
Resultado:
***********
***********
***********
*****R*****
***********
*****S*P***
*****R*****
****R**R***
***********
***********
***********
***********
Entrada: (uma das renas fora do quadrado 5x5 em torno do Papai Noel)
***********
***********
***********
*****R*****
******P****
*****S*****
*****R*****
****R******
*******R***
***********
***********
***********
Resultado:
***********
***********
***********
*****R*****
******P****
*****S*****
*****R*****
****R******
*******R***
***********
***********
***********
Scripts de teste
Como em algumas das minhas perguntas anteriores, mais uma vez massacrei alguns scripts de teste criados originalmente por Joey e Ventero para fornecer alguns casos de teste para esta pergunta:
Uso: ./test [your program and its arguments]
Versão em texto sem formatação dos testes para referência: Texto sem formatação
Recompensas
Cada entrada que eu possa verificar que atenda às especificações, passa nos testes e obviamente teve alguma tentativa de jogar golfe receberá um voto positivo de mim (por isso, forneça instruções de uso com sua resposta). A solução mais curta até o final de 31/12/2013 será aceita como vencedora.