Synopsis: Finden Sie Zeichen, die von eingeschlossen sind
MYPOCKET
.
Beispiel Eingabe
MYPHEIF
YFOCKVH
MBNDEIF
TEUFTMY
ESNDUWP
KBOVUVO
CENWFKC
OPYMTEB
Beispielausgabe
F
BND
EUF
SNDUW
BOVUV
ENWF
Huh? Wie haben wir das als Ergebnis erhalten? Die "Tasche" kann manchmal schwer zu sehen sein. Dies wird es klarer machen:
MYP heif Y F OCK VH M BND E IF T EUF TMY E SNDUW P K BOVUV O C ENWF KC OPYMTE B
Die fett gedruckten Buchstaben kennzeichnen einen orthogonal miteinander verbundenen Zeichenring, der aus der MYPOCKET
immer wieder wiederholten Zeichenfolge besteht . Ihr Programm sollte die Zeichen ausgeben, die sich in diesem Ring befinden.
Anmerkungen:
- Es wird nur eine "Tasche" geben.
- Es ist erlaubt, neue Zeilen oder Leerzeichen nach den Zeilen zu setzen.
- Der Rest des Rasters kann auch Zeichen von enthalten
MYPOCKET
, jedoch nicht in einer Weise, die die Form des Rings mehrdeutig macht. - Das
M
ist nicht immer in der rechten oberen Ecke. - Die "Tasche" kann sich entweder im Uhrzeigersinn oder gegen den Uhrzeigersinn bewegen.
- Die "Tasche" bewegt sich nicht in diagonale Richtungen - das heißt, jeder Buchstabe ist links, rechts, oben oder unten mit dem nächsten verbunden.
Hier ist ein weiterer Eingang, mit dem Sie Ihr Programm testen können.
Beispiel Eingabe
EKCYMOPD
KCOPHAYM
EKNDSEST
JETHACKE
KRMYPOBN
Beispielausgabe
HA
NDSES
HA
Antworten:
Perl 5, 414
Verwendung: als pocket.pl speichern und ausführen mit:
Ich entschied mich für eine rekursive Funktion, um den Pfad zu brachialisieren, was vielleicht nicht der beste war, aber der erste Ansatz, den ich in Betracht zog.
Während es für beide aktuellen Testfälle funktioniert, gibt es einige Einschränkungen:
Ich möchte weiter daran arbeiten, aber zeigen, dass Interesse an der Frage besteht! Gerne dokumentiere ich meinen Ablauf wenn hilfreich.
quelle
Python 2.7
571542509Arbeitet als Programm (setzt auf eine rekursive Funktion) und akzeptiert Eingaben von stdin.
Demo hier.
Testen Sie es (
ex1.txt
undex2.txt
sind die Beispiele aus der Frage) -Ungolfed-Version mit Kommentaren -
Lass es mich wissen, wenn ich etwas Dummes getan habe oder etwas besser gemacht werden kann.
Ich weiß, es ist lang, aber es ist das Beste, was ich tun kann: P
quelle