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 S
aparece 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
, P
e R
personagens, 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.