tło
Zbudowałem prosty tor przeszkód, umieszczając pudła w prostokątnym pokoju. Teraz chcę policzyć liczbę zasadniczo różnych sposobów rozwiązania tego problemu. Chcę, żebyś napisał mi program do tego.
Wkład
Twoje dane wejściowe to niepusty prostokątny układ znaków .#
. Kropki .
to pusta przestrzeń i #
są przeszkodami.
Ścieżka przez przeszkody Kurs rozpoczyna się w lewym górnym rogu, a kończy się w prawym dolnym rogu i idzie tylko w prawo lub w dół. Prawidłowa ścieżka nie może również przechodzić przez przeszkodę. Oto kilka przykładów narysowanych przy pomocy +
-znaków:
Valid path Invalid path Invalid path Invalid path
++........ ++........ +++++..... ..+.......
.++++++#.. .+.....#.. ....+++#++ ..++...#..
......+#.. .+.++++#.. .......#.+ ...+++.#..
....#.++++ .+++#.++++ ....#....+ ....#+....
Dwie ścieżki są zasadniczo podobne 1, jeśli jedną można przekształcić w drugą, przesuwając jedną +
po drugiej . Ścieżki pośrednie również muszą być prawidłowe, abyś nie mógł zgiąć ścieżki nad przeszkodą. Na przykład pierwsze dwie ścieżki tutaj są zasadniczo podobne, ale trzecia zasadniczo różni się od nich, ponieważ nie można pokonywać dwóch przeszkód:
++........ +......... +++++++++.
.+++++.#.. ++.....#.. .......#+.
.....+.#.. .++++++#.. .......#++
....#+++++ ....#.++++ ....#....+
Wydajność
Twój wynik to liczba zasadniczo różnych ścieżek przez tor przeszkód. Innymi słowy, jeśli wszystkie prawidłowe ścieżki są podzielone na klasy zasadniczo podobnych ścieżek, wynikiem jest liczba klas. Zauważ, że liczba ta może wynosić 0, jeśli nie ma prawidłowych ścieżek.
Zasady i punktacja
Możesz napisać pełny program lub funkcję. Wygrywa najniższa liczba bajtów, a standardowe luki są niedozwolone. Nie ma żadnych ograniczeń czasowych, z wyjątkiem tego, że powinieneś ocenić swój program na każdym przypadku testowym przed jego przesłaniem.
Przypadki testowe
....
....
.... => 1
...#
....
...# => 0
#..#
..#.
.... => 0
......
......
..##..
......
...... => 2
......
...#..
......
..#...
#..... => 3
......
..#...
......
....#.
#..... => 4
.......
##.....
....###
...#...
..##.#.
#....#.
..#.... => 0
......#.
..##....
...#....
.......#
....#...
.##...#.
....#...
##...... => 7
.........
.#.#.#.#.
.........
#.#...#.#
.........
.#.#.#.#.
......... => 17
..........
.#........
..........
.....#....
#.........
........#.
......#...
.......... => 10
.........
.#.......
.........
...#.....
.........
.....#...
.........
.......#.
......... => 16
1 Prawidłowy termin techniczny to „homotopiczny” .
+
” rozumiem w istocie, że jeden róg ścieżki jest odwrócony w róg przeciwnego kierunku.
+
na raz ”? Czy to oznacza, że zasadniczo podobne ścieżki muszą mieć tę samą długość?