Streszczenie: Znajdź znaki, które są otoczone przez
MYPOCKET
.
Przykładowe dane wejściowe
MYPHEIF
YFOCKVH
MBNDEIF
TEUFTMY
ESNDUWP
KBOVUVO
CENWFKC
OPYMTEB
Przykładowy wynik
F
BND
EUF
SNDUW
BOVUV
ENWF
Co? Jak otrzymaliśmy to jako wynik? „Kieszeń” może być czasem trudna do zauważenia. Ułatwi to:
MYP HEIF Y F OCK VH M BND E IF T EUF TMY E SNDUW P K BOVUV O C ENWF KC OPYMTE B
Pogrubione litery oznaczają pierścień znaków połączonych ze sobą prostopadle, składający się z ciągów MYPOCKET
powtarzanych w kółko. Twój program powinien wypisywać znaki znajdujące się w tym pierścieniu.
Uwagi:
- Będzie tylko jedna „kieszeń”.
- Końcowe nowe linie lub spacje po liniach są dozwolone.
- Reszta siatki może również zawierać znaki z
MYPOCKET
, ale nie w sposób, który sprawia, że kształt pierścienia jest niejednoznaczny. M
Nie zawsze znajduje się w prawym górnym rogu.- „Kieszeń” może poruszać się w kierunku zgodnym z ruchem wskazówek zegara lub przeciwnie do ruchu wskazówek zegara.
- „Kieszeń” nie porusza się po przekątnej - to znaczy każda litera jest połączona w lewo, w prawo, w górę lub w dół do następnej.
Oto kolejne wejście, za pomocą którego możesz przetestować swój program.
Przykładowe dane wejściowe
EKCYMOPD
KCOPHAYM
EKNDSEST
JETHACKE
KRMYPOBN
Przykładowy wynik
HA
NDSES
HA
Odpowiedzi:
Perl 5, 414
Sposób użycia: zapisz jako pocket.pl i uruchom z:
Wybrałem funkcję rekurencyjną, by brutalnie wymusić ścieżkę, co może nie było najlepsze, ale było to pierwsze podejście, jakie rozważałem.
Chociaż działa w obu przypadkach testowych, istnieją pewne zastrzeżenia:
Chcę dalej nad tym pracować, ale chciałem pokazać, że pytanie jest interesujące! W razie potrzeby chętnie udokumentuję mój proces.
źródło
Python 2.7
571542509Działa jako program (bankowość na funkcji rekurencyjnej) i akceptuje dane wejściowe ze standardowego wejścia.
Demo tutaj.
Testowanie (
ex1.txt
iex2.txt
przykłady z pytania) -Wersja bez golfa z komentarzami -
Daj mi znać, jeśli zrobiłem coś głupiego lub coś można zrobić lepiej.
Wiem, że to jest długie, ale najlepsze, co mogłem zrobić: P.
źródło