Diberi posisi dengan deretan benteng dan / atau ruang kosong, hasilkan berapa banyak gerakan benteng yang berbeda dimungkinkan. Benteng dapat bergerak ke kiri atau kanan ke ruang kosong, tetapi tidak ke benteng yang membutuhkan melewati benteng lain. Ketika benteng bergerak, benteng-benteng lainnya tetap di tempatnya.
Misalnya, dari posisi ini, 6 gerakan dimungkinkan:
.R..RRR.
- Benteng pertama (paling kiri) dapat bergerak 1 spasi kiri, atau 1 atau 2 spasi kanan (3 bergerak)
- Benteng berikutnya hanya bisa bergerak 1 atau 2 spasi tersisa (2 bergerak)
- Benteng ketiga tidak bisa bergerak sama sekali karena terjepit di antara dua benteng lainnya (0 bergerak)
- Benteng terakhir hanya bisa bergerak 1 spasi ke kanan (1 bergerak)
Perhatikan bahwa suatu posisi mungkin tidak memiliki benteng sama sekali, atau tidak ada ruang kosong sama sekali.
Input: Daftar non-kosong (string, array, dll.) Dari rooks dan spasi kosong. Anda dapat mewakili mereka sebagai True
/ False
, 1
/ 0
, 'R'
/ '.'
, atau dua karakter byte tunggal yang berbeda atau satu digit angka pilihan Anda. Terserah Anda mana yang berarti benteng dan yang berarti ruang kosong.
Output: Bilangan bulat non-negatif. Mengapung seluruh nomor juga baik-baik saja.
Uji kasus
Outputnya adalah angka di sebelah kiri.
6 .R..RRR.
0 .
0 R
4 R..RR
3 ...R
8 ..R..R..
0 ......
Untuk lebih banyak kasus uji, berikut adalah semua input hingga panjang 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