Algoritmo per trovare il Tetromino più alto in una tavola Tetris?

0

Diciamo che la nostra scheda Tetris è rappresentata come una matrice 2D di zero e uno, dove 0 significa vuoto e 1 significa occupato, e tu dove ti viene chiesto di trovare la riga più alta in cui esiste un tetromino.

Supponendo che non abbiamo tenuto traccia dell'altezza che è per ogni tetramino posto controlla se la sua riga è > tetromino posto in precedenza, in tal caso quindi altezza = riga.

Ovviamente il modo più inefficiente è quello di scorrere l'intero array 2D e forse fermarsi ogni volta che si incontra una riga intera di zeri. Un altro approccio che ho pensato è la ricerca binaria, in cui si inizia nella riga centrale e si verifica se è vuota, quindi il mio nuovo intervallo è limitato alle righe sottostanti, altrimenti la riga degli interessi si trova in alto.

  • È un modo efficace per trovare l'altezza?
  • Qual è un approccio migliore?

    
posta Raed Tabani 25.08.2016 - 18:03
fonte

1 risposta

3

a 2D array of zeros and ones, where a 0 means empty and 1 means occupied

significa che:

assomiglia a questo:

0000000000
0010000101
1110001111
1111111110
1110111111

Vuoi conoscere l'altezza del blocco più alto. 3 in questo caso. L'ultima volta che ho giocato a questo gioco volevi anche sapere quando una riga è stata riempita in modo da poterla eliminare. C'è un semplice calcolo che puoi fare per rispondere a entrambe le domande. Somma le righe.

0000000000 = 0 
0010000101 = 3 <= first non zero sum
1110001111 = 7  
1111111110 = 9 
1110111111 = 9 

Il primo non zero dall'alto è il più alto. Lo stesso calcolo ti dirà che una riga deve essere rimossa quando colpisce 10.

Non è lussuoso, ma a chi importa? È veloce, funziona ed è facile eseguire il debug.

    
risposta data 25.08.2016 - 20:29
fonte

Leggi altre domande sui tag