Ihre heutige Herausforderung besteht darin, folgende Beiträge zu leisten:
fbcfbee
ffcabbe
debceec
bccabbe
edcfbcd
daeaafc
eebcbeb
Und geben Sie den bestmöglichen Zug in einem Bejeweled-ähnlichen Spiel aus, das drei oder mehr Buchstaben wie folgt enthält (beachten Sie das Großbuchstaben B
und C
):
fbcfbee
ffcabbe
deBCeec
bccabbe
edcfbcd
daeaafc
eebcbeb
Vollständige Spezifikationen:
- Die Eingabe besteht aus
n
Zeilen mit jeweilsn
Kleinbuchstaben (wobein
eine beliebige Zahl sein kann). - Die Ausgabe ist der beste Zug, den Sie in einem Match-3-Spiel machen können, wobei die beiden Buchstaben, die Sie tauschen möchten, groß geschrieben werden.
Übereinstimmungen sollten die folgende Priorität haben (in diesen Beispielen wird
.
ein Quadrat angezeigt, das keine Rolle spielt):Fünf in einer Reihe
xxYxx ..X..
Fünf in einer Reihe gebrochen
X.. Yxx x.. x..
oder
.X. xYx .x. .x.
Vier in einer Reihe
xYxx .X..
Drei in einer Reihe
xYx .X.
Sie müssen die Übereinstimmung mit der höchsten Priorität finden und ausgeben.
- Wenn mehrere Übereinstimmungen mit derselben Priorität vorhanden sind, können Sie eine davon ausgeben.
- Es wird immer mindestens eine Übereinstimmung geben (Ihr Programm kann unterbrochen werden, wenn keine Übereinstimmungen vorhanden sind, oder Sie können alles tun, was Sie wollen).
- E / A kann in jedem vernünftigen Format (Standard / Ausgabe, Lesen und Schreiben von Dateien, Funktionsargumente / Rückgabewerte, Dialogfelder usw.) vorliegen, jedoch NICHT fest codiert (wie
x="[insert input here]"
). - Dies ist Code-Golf, so dass der kürzeste Code in Bytes gewinnt. Wenn Sie aus irgendeinem Grund einen Netzwerkzugriff verwenden, werden alle vom Netzwerk heruntergeladenen Bytes auf Ihre Punktzahl angerechnet.
..x.\nxxYX\n..x.
?Antworten:
Python3.4, 772
(Verwenden von Tabulatoren zum Einrücken anstelle von Leerzeichen.)
quelle
[c for c in l]
könnten Sie einfach tunlist(l)
.