Znajdź Świętego Mikołaja i jego renifery w zatłoczonej scenie.
Wejście
Dane wejściowe będą na STDIN i będą zmienną liczbą wierszy znaków o jednakowej, ale zmiennej długości. Jeśli Święty Mikołaj (reprezentowany przez postać S) jest na scenie, jego worek prezentów (reprezentowany przez postać P) będzie na jednej z sąsiadujących z nim pozycji (poziomo, pionowo lub po przekątnej). Jego renifery (każdy reprezentowany przez postać R) będą znajdować się wokół otaczającego go kwadratu 5x5. Jeśli Sna scenie pojawi się coś , co nie ma worka prezentów lub nie towarzyszy mu co najmniej 4 reniferów, to nie jest to Święty Mikołaj.
Wynik
Scena została oczyszczona z wszelkich zaciemnień (wszystkie postacie inne niż Święty Mikołaj, nie-prezenty, nierenifery zastąpione spacją), przedstawiające Świętego Mikołaja, jego worek prezentów i jego renifery - wszystkie inne postacie należy zastąpić spacjami. Jeśli Świętego Mikołaja i jego renifera nie ma na scenie, wyjmij go bez zmian. Gwarantujemy, że będzie tylko jedno rozwiązanie, więc nigdy nie będzie więcej niż jednego ważnego Świętego Mikołaja i nigdy nie będzie nosił więcej niż jednego worka prezentów.
Przykłady
W tych przykładach Ja tylko używając *charakter sprawiają, że łatwo zobaczyć S, Pi Rznaki, ale program powinien być w stanie obsłużyć każdy znak ASCII od !do `(33 do 96). Pominąłem małe litery i powyżej, aby uniknąć nieporozumień.
Wejście:
***********
***********
***********
*****R*****
******P****
*****S*****
*****R*****
****R**R***
***********
***********
***********
***********
Dane wyjściowe: (ignoruj kropki, aby zmusić stronę do wyświetlania pustych linii)
.
.
.
R
P
S
R
R R
.
.
.
.
Wkład: (za mało reniferów)
***********
***********
***********
***********
******P****
*****S*****
*****R*****
****R**R***
***********
***********
***********
***********
Wynik:
***********
***********
***********
***********
******P****
*****S*****
*****R*****
****R**R***
***********
***********
***********
***********
Wejście: (bez worka prezentów)
***********
***********
***********
*****R*****
***********
*****S*****
*****R*****
****R**R***
***********
***********
***********
***********
Wynik:
***********
***********
***********
*****R*****
***********
*****S*****
*****R*****
****R**R***
***********
***********
***********
***********
Dane wejściowe: (prezenty nie są wystarczająco blisko)
***********
***********
***********
*****R*****
***********
*****S*P***
*****R*****
****R**R***
***********
***********
***********
***********
Wynik:
***********
***********
***********
*****R*****
***********
*****S*P***
*****R*****
****R**R***
***********
***********
***********
***********
Wejście: (jeden z reniferów poza polem 5x5 wokół Świętego Mikołaja)
***********
***********
***********
*****R*****
******P****
*****S*****
*****R*****
****R******
*******R***
***********
***********
***********
Wynik:
***********
***********
***********
*****R*****
******P****
*****S*****
*****R*****
****R******
*******R***
***********
***********
***********
Skrypty testowe
Podobnie jak w niektórych moich poprzednich pytaniach, po raz kolejny opracowałem skrypty testowe pierwotnie stworzone przez Joeya i Ventero, aby zapewnić kilka przypadków testowych dla tego pytania:
Stosowanie: ./test [your program and its arguments]
Wersja testu z tekstem jawnym : tekst zwykły
Nagrody
Każdy wpis, który mogę zweryfikować, który spełnia specyfikację, przechodzi testy i oczywiście miał pewne próby gry w golfa, otrzyma ode mnie opinię (więc proszę o podanie instrukcji użytkowania wraz z odpowiedzią). Najkrótsze rozwiązanie do końca 31.12.2013 zostanie zaakceptowane jako zwycięzca.