Arka fon
Dikdörtgen bir odaya kutular yerleştirerek basit bir engel kursu kurdum. Şimdi, çözülebileceği esasen farklı yolların sayısını saymak istiyorum. Bana bunun için bir program yazmanı istiyorum.
Giriş
Girişiniz, karakterlerin boş olmayan dikdörtgen bir dizisidir .#
. Noktalar .
boş alan ve #
engeller.
Engel rotasından geçen bir yol sol üst köşede başlar ve sağ alt köşede sona erer ve yalnızca sağa veya aşağı doğru gider. Ayrıca, geçerli bir yol bir engelden geçemez. +
Karakterlerle çizilen bazı örnekler :
Valid path Invalid path Invalid path Invalid path
++........ ++........ +++++..... ..+.......
.++++++#.. .+.....#.. ....+++#++ ..++...#..
......+#.. .+.++++#.. .......#.+ ...+++.#..
....#.++++ .+++#.++++ ....#....+ ....#+....
İki yollardır esas olarak benzer 1 tek tek hareket ettirerek başka transforme edilebilir, eğer +
her seferinde. Ara yollar da geçerli olmalıdır, bu nedenle bir engelin üzerinden bir yolu bükemezsiniz. Örneğin, buradaki ilk iki yol esasen birbirine benziyor, ancak üçüncüsü, esasen onlardan farklı, çünkü iki engelin üzerinden geçirilemiyor:
++........ +......... +++++++++.
.+++++.#.. ++.....#.. .......#+.
.....+.#.. .++++++#.. .......#++
....#+++++ ....#.++++ ....#....+
Çıktı
Çıktınız, engel kursu boyunca esasen farklı yolların sayısıdır. Başka bir deyişle, tüm geçerli yollar temelde benzer yolların sınıflarına ayrılırsa, çıktı sınıfların sayısıdır. Geçerli bir yol yoksa, bu sayının 0 olabileceğini unutmayın.
Kurallar ve puanlama
Tam bir program veya bir fonksiyon yazabilirsiniz. En düşük bayt sayısı kazanır ve standart boşluklar izin verilmez. Programınızı göndermeden önce her sınav durumunda değerlendirmeniz gereken durumlar dışında hiçbir zaman sınırı yoktur.
Test durumları
....
....
.... => 1
...#
....
...# => 0
#..#
..#.
.... => 0
......
......
..##..
......
...... => 2
......
...#..
......
..#...
#..... => 3
......
..#...
......
....#.
#..... => 4
.......
##.....
....###
...#...
..##.#.
#....#.
..#.... => 0
......#.
..##....
...#....
.......#
....#...
.##...#.
....#...
##...... => 7
.........
.#.#.#.#.
.........
#.#...#.#
.........
.#.#.#.#.
......... => 17
..........
.#........
..........
.....#....
#.........
........#.
......#...
.......... => 10
.........
.#.......
.........
...#.....
.........
.....#...
.........
.......#.
......... => 16
1 Doğru teknik terim "homotopik" dir .
+
" ile, esasen yolun bir köşesinin ters yönün bir köşesine ters çevrildiği anlamına gelir.
+
" derken ne demek istiyorsunuz ? Bu, esasen benzer yolların aynı uzunlukta olması gerektiği anlamına mı geliyor?