Data una posizione con una fila di torri e / o spazi vuoti, emettere quante diverse mosse di torre sono possibili. Una torre può spostarsi a sinistra oa destra in uno spazio vuoto, ma non in uno che richiede il passaggio su un'altra torre. Quando una torre si muove, le altre torre rimangono al loro posto.
Ad esempio, da questa posizione sono possibili 6 mosse :
.R..RRR.
- La prima torre (più a sinistra) può spostare di 1 spazio a sinistra o 1 o 2 spazi a destra (3 mosse)
- La torre successiva può spostare solo 1 o 2 spazi a sinistra (2 mosse)
- La terza torre non può muoversi affatto perché è stretta tra altre due (0 mosse)
- L'ultima torre può muovere solo 1 spazio a destra (1 mossa)
Si noti che una posizione potrebbe non avere affatto torri o spazi vuoti.
Input: un elenco non vuoto (stringa, matrice, ecc.) Di torri e spazi vuoti. Puoi rappresentarli come True
/ False
, 1
/ 0
, 'R'
/ '.'
o due caratteri distinti a byte singolo distinti o numeri di una cifra a tua scelta. Dipende da te quale si intende torre e che significa spazio vuoto.
Output: un numero intero non negativo. Anche i float con numeri interi vanno bene.
Casi test
L'output è il numero a sinistra.
6 .R..RRR.
0 .
0 R
4 R..RR
3 ...R
8 ..R..R..
0 ......
Per altri casi di test, qui ci sono tutti gli input fino alla lunghezza 5.
0 .
0 R
0 ..
1 .R
1 R.
0 RR
0 ...
2 ..R
2 .R.
1 .RR
2 R..
2 R.R
1 RR.
0 RRR
0 ....
3 ...R
3 ..R.
2 ..RR
3 .R..
3 .R.R
2 .RR.
1 .RRR
3 R...
4 R..R
3 R.R.
2 R.RR
2 RR..
2 RR.R
1 RRR.
0 RRRR
0 .....
4 ....R
4 ...R.
3 ...RR
4 ..R..
4 ..R.R
3 ..RR.
2 ..RRR
4 .R...
5 .R..R
4 .R.R.
3 .R.RR
3 .RR..
3 .RR.R
2 .RRR.
1 .RRRR
4 R....
6 R...R
5 R..R.
4 R..RR
4 R.R..
4 R.R.R
3 R.RR.
2 R.RRR
3 RR...
4 RR..R
3 RR.R.
2 RR.RR
2 RRR..
2 RRR.R
1 RRRR.
0 RRRRR