Hintergrund
Ich habe einen einfachen Hindernisparcours konstruiert, indem ich Kisten in einen rechteckigen Raum gestellt habe. Jetzt möchte ich die Anzahl der wesentlich unterschiedlichen Arten zählen, auf die es gelöst werden kann. Du musst mir dafür ein Programm schreiben.
Eingang
Ihre Eingabe ist eine nicht leere rechteckige Anordnung der Zeichen .#
. Die Punkte .
sind ein leerer Raum und #
Hindernisse.
Ein Weg durch den Hindernisparcours beginnt in der oberen linken Ecke und endet in der unteren rechten Ecke und führt nur nach rechts oder unten. Ein gültiger Pfad kann auch kein Hindernis passieren. Hier einige Beispiele, die mit +
-Zeichen gezeichnet wurden :
Valid path Invalid path Invalid path Invalid path
++........ ++........ +++++..... ..+.......
.++++++#.. .+.....#.. ....+++#++ ..++...#..
......+#.. .+.++++#.. .......#.+ ...+++.#..
....#.++++ .+++#.++++ ....#....+ ....#+....
Zwei Pfade sind im Wesentlichen gleich 1, wenn einer nach dem anderen verschoben werden +
kann. Die Zwischenpfade müssen ebenfalls gültig sein, damit Sie einen Pfad nicht über ein Hindernis biegen können. Zum Beispiel sind die ersten beiden Pfade hier im Wesentlichen ähnlich, aber der dritte unterscheidet sich im Wesentlichen von ihnen, da er nicht über die beiden Hindernisse gewackelt werden kann:
++........ +......... +++++++++.
.+++++.#.. ++.....#.. .......#+.
.....+.#.. .++++++#.. .......#++
....#+++++ ....#.++++ ....#....+
Ausgabe
Ihre Ausgabe ist die Anzahl der wesentlich unterschiedlichen Pfade durch den Hindernisparcours. Mit anderen Worten, wenn alle gültigen Pfade in Klassen von im Wesentlichen ähnlichen Pfaden unterteilt sind, ist die Ausgabe die Anzahl der Klassen. Beachten Sie, dass diese Zahl 0 sein kann, wenn keine gültigen Pfade vorhanden sind.
Regeln und Wertung
Sie können ein vollständiges Programm oder eine Funktion schreiben. Die niedrigste Byteanzahl gewinnt, und Standardlücken sind nicht zulässig. Es gibt keine zeitlichen Beschränkungen, außer dass Sie Ihr Programm in jedem Testfall evaluieren sollten, bevor Sie es einreichen.
Testfälle
....
....
.... => 1
...#
....
...# => 0
#..#
..#.
.... => 0
......
......
..##..
......
...... => 2
......
...#..
......
..#...
#..... => 3
......
..#...
......
....#.
#..... => 4
.......
##.....
....###
...#...
..##.#.
#....#.
..#.... => 0
......#.
..##....
...#....
.......#
....#...
.##...#.
....#...
##...... => 7
.........
.#.#.#.#.
.........
#.#...#.#
.........
.#.#.#.#.
......... => 17
..........
.#........
..........
.....#....
#.........
........#.
......#...
.......... => 10
.........
.#.......
.........
...#.....
.........
.....#...
.........
.......#.
......... => 16
1 Der korrekte Fachbegriff lautet "homotopisch" .
+
" meine ich im Wesentlichen, dass eine Ecke des Pfades in eine Ecke der entgegengesetzten Richtung invertiert ist.
+
zu einer Zeit “? Bedeutet dies, dass im Wesentlichen ähnliche Pfade die gleiche Länge haben müssen?