Lunedì quiz–nono ed ultimo
Su richiesta del nonno, scrivere un algoritmo che determini se ci sono ancora mosse possibili in una partita di Bejeweled o se sia GameOver.

L’input della funzione è una matrice NxN di byte dove il valore rappresenta uno dei possibili 256 colori (non è detto che siano in uso tutti).
A giudicare la soluzione sarà il nonno stesso. ![]()
-quack
Commenti (13):


Facebook,
Wikio,
Segnalo.

lunedì 6 dicembre 2010 alle 7:50 PM -
a parte che è il nono
cmq è l'ultimo uffa
ed è pure tostino..... mi ci metterò d'impegno
Permalink - Rispondi al commento
lunedì 6 dicembre 2010 alle 8:07 PM -
Grazie, ho corretto il titolo. Mi sembra più che giusto che il nono sia dedicato al nonno.
Permalink - Rispondi al commento
lunedì 6 dicembre 2010 alle 8:56 PM -
LOOOL
Permalink - Rispondi al commento
lunedì 6 dicembre 2010 alle 9:51 PM -
Ma io la soluzione non la so!
Permalink - Rispondi al commento
martedì 7 dicembre 2010 alle 12:49 AM -
Questo potrebbe andare?!? E' in C! http://pastebin.com/tkpsBF1G
(Paperino: non ho capito bene cosa sia successo... Il sito era offline, 5 minuti è tornato online, coincidenza?!? sì!)
Permalink - Rispondi al commento
martedì 7 dicembre 2010 alle 1:30 AM -
zakk, il codice possibilmente che sia leggibile usando nomi variabili significativi e mettendo qualche commento.
Permalink - Rispondi al commento
martedì 7 dicembre 2010 alle 1:32 AM -
usti... che frase illeggibile che ho scritto
"usa nomi significativi per le variabili"... vabbe' s'era capito spero.
Permalink - Rispondi al commento
martedì 7 dicembre 2010 alle 1:52 AM -
@il nonno: Così può andar meglio?!? http://pastebin.com/ReM5wFsd
Permalink - Rispondi al commento
martedì 7 dicembre 2010 alle 1:55 AM -
(Le variabili non hanno ancora tutte nomi significativi, ma i commenti spiegano tutto
)
Permalink - Rispondi al commento
martedì 7 dicembre 2010 alle 2:12 AM -
È successo che mi hanno chiuso il sito in quanto generava troppa CPU a causa di SqlCE. Ho dovuto migrare i dati verso un DB vero (estremamente più veloce tra l'altro) e per farlo ho dovuto freezare il blog per impedire modifiche al DB sorgente. Ho postato il mio primo commento subito dopo per verificare il passaggio e dopo qualche minuto c'era il tuo...
Permalink - Rispondi al commento
martedì 7 dicembre 2010 alle 11:22 AM -
zakk, gia' molto meglio, grazie, oggi pomeriggio vedo di provarlo.
Permalink - Rispondi al commento
martedì 7 dicembre 2010 alle 3:40 PM -
Un paio di suggerimenti/ottimizzazioni.
1) Le quattro operazioni di "confronto" possono essere ridotte ad "una" sola se si opera sulla matrice trasposta, riflessa e trasposta/riflessa. Ovvero basta controllare solo che il colore a destra nella posizione in analisi causi un tris
2) se il colore a destra è uguale, salta il giro
3) invece di controllare se le coordinate intorno sono fuori dalla matrice, si potrebbero usare due valori sentinella (254 e 255?) in due cornici concentriche che avvolgono la matrice originale
Con un linguaggio ad oggetti le operazioni "virtuali" di accesso alla matrice trasposta o riflessa dovrebbero rendere il tutto molto più leggibile.
Permalink - Rispondi al commento
domenica 12 dicembre 2010 alle 10:41 PM -
Ciao
Ho pensato che per stabilire se ci siano ancora mosse possibili basta ricercare nella matrice se ci sono tre pattern fissi, e naturalmente i relativi pattern inversi, che però sono già compresi se effettuo il controllo in tutte e quattro le direzioni.
I tre pattern li trovate nel codice (ho bisogno di un font monospaced, non saprei come postarli qui!)
Ce ne sono altri possibili? Mi sembrerebbe di no!
Ed y deve essere diversa da X, oppure si può ignorare? Io voglio che sia diversa, casomai basta eliminare il confronto!
Poi ho pensato che invece di verificare a mano se le coordinate sono fuori dalla matrice, ci starebbe bene un bel TRY...EXCEPTION! Provo a cercare il pattern... se viene sollevata un'eccezione, vuol dire che il pattern non c'è! Cosa ne dite? E' un sacrilegio o può andare bene? Sono pigro lo so
Questo è il mio codice Python... linguaggio che non conosco bene ma che ho deciso di imparare! Quindi ci saranno sicuramente dei giganteschi errori di stile (ehm ad esempio non c'è un modo migliore per gestire le matrici??) ma speriamo ci siano solo quelli, e che la soluzione sia abbastanza corretta
http://pastebin.com/SB4R8FZN
Permalink - Rispondi al commento