Questa sfida è in parte una sfida di algoritmi, in parte una sfida di ottimizzazione e in parte semplicemente una sfida di codice più veloce.
La matrice AT è completamente specificata dalla sua prima riga r
e prima colonna c
. Ogni elemento rimanente della matrice è solo una copia dell'elemento che è in diagonale verso l'alto e a sinistra. Questo è M[i,j] = M[i-1,j-1]
. Permetteremo matrici T che non sono quadrate. Tuttavia, assumiamo sempre che il numero di righe non sia superiore al numero di colonne. Ad esempio, si consideri la seguente matrice 3 per 5 T.
10111
11011
11101
Diciamo che una matrice ha la proprietà X se contiene due insiemi di colonne non vuoti con indici non identici che hanno la stessa somma (vettoriale). La somma vettoriale di una o più colonne è semplicemente una somma saggia delle loro colonne. Questa è la somma di due o più colonne contenenti x
elementi, ognuna è un'altra colonna contenente x
elementi. La somma di una colonna è banalmente la colonna stessa.
La matrice sopra ha banalmente la proprietà X poiché la prima e l'ultima colonna sono uguali. La matrice identità non ha mai la proprietà X.
Se rimuoviamo solo l'ultima colonna della matrice sopra, otteniamo un esempio che non ha la proprietà X e darebbe un punteggio di 4/3.
1011
1101
1110
L'obiettivo
Il compito è scrivere codice per trovare la matrice T con il punteggio più alto con voci binarie e che non ha la proprietà X. Per chiarezza, una matrice con voci binarie ha la proprietà che ciascuna delle sue voci è 0 o 1.
Punto
Il tuo punteggio sarà il numero di colonne diviso per il numero di righe nella tua matrice di punteggio migliore.
Tie Breaker
Se due risposte hanno lo stesso punteggio, vince la prima inviata.
Nel caso (molto) improbabile che qualcuno trovi un metodo per ottenere punteggi illimitati, verrà accettata la prima prova valida di tale soluzione. Nel caso ancor più improbabile che tu possa trovare una prova dell'ottimalità di una matrice finita, naturalmente assegnerò anche la vittoria.
Suggerimento
Tutte le risposte in Trova la matrice del punteggio più alto senza la proprietà X sono valide qui ma non sono ottimali. Esistono matrici T senza proprietà X che non sono cicliche.
Ad esempio, esiste una matrice 7 per 12 T senza proprietà X ma nessuna tale matrice ciclica.
Il 21/11 batterebbe tutte le risposte attuali di questa e della precedente sfida.
Lingue e biblioteche
Puoi usare qualsiasi lingua che abbia un compilatore / interprete / ecc. Liberamente disponibile. per Linux e tutte le librerie che sono anche disponibili gratuitamente per Linux.
Bonus La prima risposta con un punteggio maggiore di 2 ottiene un premio di ricompensa immediato di 200 punti . Ton Hospel ora ha raggiunto questo obiettivo!
Classifica attuale
- C ++ . Punteggio 31/15 di Ton Hospel
- Java . Punteggio 36/19 di Peter Taylor
- Haskell . Punteggio 14/8 di alexander-brett