Sie haben ein Eingabearray der Größe m * n. Jede Zelle im Array wird entweder mit P oder T gefüllt. Die einzige Operation, die Sie für das Array ausführen können, ist das Umblättern von Spalten. Wenn Sie eine Spalte spiegeln, wechseln die Buchstaben in allen Zellen dieser Spalte (P wird zu T und umgekehrt). Wenn Sie eine 'x'-Anzahl von Zeilen mit demselben Buchstaben haben (z. B. PPPP), erhalten Sie einen Punkt. Entwerfen Sie einen Algorithmus, der das Array aufnimmt und eine Lösung (welche Spalten gespiegelt werden sollen) zurückgibt, sodass das resultierende Array die maximal mögliche Anzahl von Punkten aufweist.
Hinweis: Falls es mehrere Lösungen gibt, die die höchste Punktzahl erzielen, wählen Sie die mit der niedrigsten Anzahl von Flips. Beispiel:
Eingangsarray:
PPTPP
PPTPP
PPTTP
PPPTT
PPPTT
Ausgabe:
3
Erläuterung:
Eine Lösung, die die höchsten Punkte liefert: Spalte Nr. 3
Dann wäre das ursprüngliche Array:
PPPPP // 1 point
PPPPP // 1 point
PPPTP
PPTTT
PPTTT
//Total: 2 points
Beachten Sie, dass Sie auch die Spalten 4 und 5 spiegeln können, um eine Punktzahl von zwei zu erhalten, dies erfordert jedoch einen zusätzlichen Flip.
Sie können jedes geeignete Eingabeformat verwenden, um das zweidimensionale Array darzustellen, und Sie können auch zwei unterschiedliche, aber feste Werte verwenden, um Pund darzustellen T.
Dies ist Codegolf, daher gewinnt die kürzeste Antwort (in Bytes).