混雑したシーンでサンタと彼のトナカイを見つけてください。
入力
入力はSTDIN上にあり、長さは等しいが可変の文字の可変行数になります。サンタ(キャラクターで表されるS)がシーンにいる場合、プレゼントの袋(キャラクターで表されるP)は、彼に隣接する位置(水平、垂直、または斜め)のいずれかにあります。彼のトナカイ(キャラクターで表されるR)はすべて、彼を囲む5x5の正方形内にあります。Sプレゼントの袋がないシーン、または少なくとも4人のトナカイが同伴していないシーンに登場する場合は、サンタではありません。
出力
シーンはすべての難読化をクリアし(サンタ以外、プレゼントなし、トナカイ以外のキャラクターはすべてスペースに置き換えられます)、サンタ、プレゼントの袋、トナカイを表示します。他のすべてのキャラクターはスペースに置き換えられます。サンタとトナカイがシーンにない場合は、そのまま出力します。ソリューションは1つのみであることが保証されているため、有効なサンタが複数存在することはなく、プレゼントの袋を複数持ち歩くこともありません。
例
これらの例では、私はちょうど使用している*ことが容易に参照できるようにすること、文字をS、PとRの文字が、しかし、あなたのプログラムから任意のASCII文字を処理することができるはず!の`(96から33)。混乱を避けるため、小文字と上記の文字は省略しました。
入力:
***********
***********
***********
*****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***
***********
***********
***********
***********
入力:(サンタの周りの5x5の正方形内にないトナカイの1つ)
***********
***********
***********
*****R*****
******P****
*****S*****
*****R*****
****R******
*******R***
***********
***********
***********
出力:
***********
***********
***********
*****R*****
******P****
*****S*****
*****R*****
****R******
*******R***
***********
***********
***********
テストスクリプト
過去の質問のいくつかと同様に、JoeyとVenteroが元々作成したいくつかのテストスクリプトをもう一度処理して、この質問のテストケースを提供しました。
使用法: ./test [your program and its arguments]
参照用のテストのプレーンテキストバージョン:プレーンテキスト
報酬
仕様を満たしていることを確認でき、テストに合格し、明らかにゴルフの試みを行った各エントリは、私から賛成票を受け取ります(そのため、使用方法を回答してください)。2013年12月31日の終わりまでに最短のソリューションが勝者として受け入れられます。