Hai un array di input di dimensioni m * n. Ogni cella dell'array viene popolata con P o T. L'unica operazione che è possibile eseguire sull'array è capovolgere le colonne. Quando si capovolge una colonna, le lettere in tutte le celle di quella colonna cambiano (P diventa T e viceversa). Se hai un numero "x" di righe con la stessa lettera (ad es. PPPP), ottieni un punto. Progettare un algoritmo che includa l'array e restituisca una soluzione (quali colonne da capovolgere) in modo tale che l'array risultante abbia il numero massimo di punti possibili.
Nota: se esistono più soluzioni che danno il punteggio più alto, scegli quella con il minor numero di lanci. Esempio:
Matrice di input:
PPTPP
PPTPP
PPTTP
PPPTT
PPPTT
Produzione:
3
Spiegazione:
Una soluzione che dà il punteggio più alto: capovolgere la colonna n. 3
Quindi l'array originale sarebbe:
PPPPP // 1 point
PPPPP // 1 point
PPPTP
PPTTT
PPTTT
//Total: 2 points
Si noti che è possibile capovolgere anche le colonne 4 e 5 per ottenere un punteggio di due, ma è necessario un ulteriore capovolgimento.
È possibile utilizzare qualsiasi formato di input conveniente per rappresentare l'array bidimensionale e due valori distinti, ma fissi, da rappresentare Pe T.
Questo è il golf del codice, quindi vince la risposta più breve (in byte).