Descrizione
Consideriamo una versione leggermente semplificata di Tetris in cui ogni mossa è composta da:
- ruotando il pezzo in senso orario, da 0 a 3 volte
- posizionando il pezzo su una data colonna
- caduta veloce
L'obiettivo è determinare il numero di linee completate, dato un elenco di tali mosse di Tetris.
Le righe completate vengono rimosse man mano che i pezzi vengono rilasciati, seguendo le regole standard di Tetris.
Playfield
Il campo di gioco è largo 10 colonne. Non c'è Game Over e si presume che ci sia sempre abbastanza spazio e tempo per eseguire le azioni di cui sopra, indipendentemente dalla configurazione del campo di gioco. L'altezza del campo di gioco non ha molta importanza qui, ma puoi usare le 22 file standard come limite superiore.
Forme di tetromini
Input Output
Ingresso
Un elenco separato da virgole di mosse di Tetris codificato con 3 caratteri. I primi due personaggi descrivono la forma di Tetromino da usare e l'ultimo descrive la posizione in cui è stato rilasciato.
- Tetromino:
I
,O
,T
,L
,J
,Z
oS
, nello stesso ordine come sopra. - Numero di rotazioni in senso orario:
0
a3
- Colonna:
0
a9
. Questa è la colonna in cui si trova l'angolo in alto a sinistra del pezzo (contrassegnato da unx
nell'immagine sopra) dopo la rotazione 1
Si presume che tutte le mosse nell'elenco fornito siano valide. Non è necessario controllare voci non valide come I07
( I
forma orizzontale posizionata troppo a destra).
1 Sei libero di implementare un vero algoritmo di rotazione o di codificare tutte le forme diverse, purché x
si trovi nella colonna indicata dal terzo carattere della mossa.
Produzione
Numero di righe completate.
Esempio
O00,T24
genererà la prima posizione e O00,T24,S02,T01,L00,Z03,O07,L06,I05
genererà la seconda posizione.
Pertanto, la seguente sequenza genererà un Tetris e dovrebbe restituire 4
:
O00,T24,S02,T01,L00,Z03,O07,L06,I05,I19
Casi test
1) "O00,T24,S02,T01,L00,Z03,O07,L06,I05,I19" -> 4
2) "S00,J03,L27,Z16,Z18,I10,T22,I01,I05,O01,L27,O05,S13" -> 5
3) "I01,T30,J18,L15,J37,I01,S15,L07,O03,O03,L00,Z00,T38,T01,S06,L18,L14" -> 4
4) "S14,T00,I13,I06,I05,I19,L20,J26,O07,Z14,Z10,Z12,O01,L27,L04,I03,S07,I01,T25,J23,J27,O01,
I10,I10" -> 8
5) "O00,T24,L32,T16,L04,Z11,O06,L03,I18,J30,L23,Z07,I19,T05,T18,L30,I01,I01,I05,T02" -> 8
Pagina di prova
È possibile utilizzare questo JSFiddle per testare un elenco di mosse.