Encuentra a Santa y sus renos en una escena llena de gente.
Entrada
La entrada estará en STDIN y será un número variable de líneas de caracteres de igual longitud, pero variable. Si Santa (representado por el personaje S) está en la escena, su saco de regalos (representado por el personaje P) estará en una de las posiciones adyacentes a él (horizontal, vertical o diagonal). Sus renos (cada uno representado por el personaje R) estarán todos dentro del cuadrado de 5x5 que lo rodea. Si Saparece en la escena que no tiene un saco de regalos, o no está acompañado por al menos 4 renos, entonces no es Santa.
Salida
La escena se despejó de toda ofuscación (todos los personajes que no son Santa, no presentes, no renos reemplazados por un espacio), mostrando a Santa, su saco de regalos y sus renos; todos los demás personajes deben reemplazarse por espacios. Si Papá Noel y sus renos no están en la escena, déjelos sin cambios. Se garantiza que solo habrá una solución, por lo que nunca habrá más de un Papá Noel válido y nunca llevará más de un saco de regalos.
Ejemplos
En estos ejemplos sólo estoy usando el *personaje para que sea fácil de ver los S, Py Rpersonajes, pero su programa debe ser capaz de manejar cualquier carácter ASCII a partir !de `(33 a 96). He omitido los caracteres en minúscula y superiores para evitar confusiones.
Entrada:
***********
***********
***********
*****R*****
******P****
*****S*****
*****R*****
****R**R***
***********
***********
***********
***********
Salida: (ignore los puntos, obligarán a la página a mostrar las líneas en blanco)
.
.
.
R
P
S
R
R R
.
.
.
.
Entrada: (no hay suficientes renos)
***********
***********
***********
***********
******P****
*****S*****
*****R*****
****R**R***
***********
***********
***********
***********
Salida:
***********
***********
***********
***********
******P****
*****S*****
*****R*****
****R**R***
***********
***********
***********
***********
Entrada: (sin saco de regalos)
***********
***********
***********
*****R*****
***********
*****S*****
*****R*****
****R**R***
***********
***********
***********
***********
Salida:
***********
***********
***********
*****R*****
***********
*****S*****
*****R*****
****R**R***
***********
***********
***********
***********
Entrada: (presenta no lo suficientemente cerca)
***********
***********
***********
*****R*****
***********
*****S*P***
*****R*****
****R**R***
***********
***********
***********
***********
Salida:
***********
***********
***********
*****R*****
***********
*****S*P***
*****R*****
****R**R***
***********
***********
***********
***********
Entrada: (uno de los renos que no está dentro del cuadrado de 5x5 alrededor de Santa)
***********
***********
***********
*****R*****
******P****
*****S*****
*****R*****
****R******
*******R***
***********
***********
***********
Salida:
***********
***********
***********
*****R*****
******P****
*****S*****
*****R*****
****R******
*******R***
***********
***********
***********
Scripts de prueba
Como en algunas de mis preguntas anteriores, una vez más eliminé algunos scripts de prueba creados originalmente por Joey y Ventero para proporcionar algunos casos de prueba para esta pregunta:
Uso: ./test [your program and its arguments]
Versión de texto sin formato de las pruebas para referencia: texto sin formato
Recompensas
Cada entrada que pueda verificar que cumpla con las especificaciones, pase las pruebas y obviamente haya tenido algún intento de jugar al golf recibirá un voto positivo de mí (así que proporcione instrucciones de uso con su respuesta). La solución más corta para fines del 31/12/2013 será aceptada como ganadora.