Retrouvez le Père Noël et ses rennes dans une scène bondée.
Contribution
L'entrée se fera sur STDIN et sera un nombre variable de lignes de caractères de longueur égale mais variable. Si le Père Noël (représenté par le personnage S) est dans la scène, son sac de cadeaux (représenté par le personnage P) sera dans l'une des positions adjacentes à lui (horizontalement, verticalement ou en diagonale). Ses rennes (chacun représenté par le personnage R) seront tous dans le carré 5x5 qui l'entoure. Si un Sapparaît dans la scène qui n'a pas de sac de cadeaux ou n'est pas accompagné d'au moins 4 rennes, alors ce n'est pas le Père Noël.
Production
La scène a été débarrassée de tout obscurcissement (tous les personnages non-Père Noël, non-présents, non-rennes remplacés par un espace), montrant le Père Noël, son sac de cadeaux et son renne - tous les autres personnages doivent être remplacés par des espaces. Si le Père Noël et ses rennes ne sont pas dans la scène, sortez-les inchangés. Il est garanti qu'il n'y aura qu'une seule solution, il n'y aura donc jamais plus d'un Père Noël valide et il ne transportera jamais plus d'un sac de cadeaux.
Exemples
Dans ces exemples , je suis juste en utilisant le *caractère pour le rendre facile de voir les S, Pet les Rcaractères, mais votre programme devrait être capable de gérer tous les caractères ascii de !à `(33 à 96). J'ai omis les caractères minuscules et supérieurs pour éviter toute confusion.
Contribution:
***********
***********
***********
*****R*****
******P****
*****S*****
*****R*****
****R**R***
***********
***********
***********
***********
Sortie: (ignorer les points, ils doivent forcer la page à afficher les lignes vides)
.
.
.
R
P
S
R
R R
.
.
.
.
Entrée: (pas assez de rennes)
***********
***********
***********
***********
******P****
*****S*****
*****R*****
****R**R***
***********
***********
***********
***********
Production:
***********
***********
***********
***********
******P****
*****S*****
*****R*****
****R**R***
***********
***********
***********
***********
Entrée: (pas de sac de cadeaux)
***********
***********
***********
*****R*****
***********
*****S*****
*****R*****
****R**R***
***********
***********
***********
***********
Production:
***********
***********
***********
*****R*****
***********
*****S*****
*****R*****
****R**R***
***********
***********
***********
***********
Entrée: (présente pas assez proche)
***********
***********
***********
*****R*****
***********
*****S*P***
*****R*****
****R**R***
***********
***********
***********
***********
Production:
***********
***********
***********
*****R*****
***********
*****S*P***
*****R*****
****R**R***
***********
***********
***********
***********
Entrée: (l'un des rennes n'est pas dans le carré 5x5 autour du Père Noël)
***********
***********
***********
*****R*****
******P****
*****S*****
*****R*****
****R******
*******R***
***********
***********
***********
Production:
***********
***********
***********
*****R*****
******P****
*****S*****
*****R*****
****R******
*******R***
***********
***********
***********
Scripts de test
Comme dans certaines de mes questions précédentes, j'ai une fois de plus massacré des scripts de test créés à l'origine par Joey et Ventero pour fournir des cas de test pour cette question:
Usage: ./test [your program and its arguments]
Version en texte brut des tests pour référence: texte en clair
Récompenses
Chaque entrée dont je peux vérifier qu'elle répond aux spécifications, réussit les tests et a évidemment eu une tentative de golf recevra un vote positif de ma part (veuillez donc fournir des instructions d'utilisation avec votre réponse). La solution la plus courte d'ici la fin du 31/12/2013 sera acceptée comme gagnante.