พื้นหลัง
ฉันได้สร้างหลักสูตรอุปสรรคง่าย ๆ โดยการวางกล่องไว้ในห้องสี่เหลี่ยม ตอนนี้ฉันต้องการนับจำนวนวิธีที่แตกต่างกันเป็นหลักซึ่งสามารถแก้ไขได้ ฉันต้องการให้คุณเขียนโปรแกรมสำหรับสิ่งนั้น
อินพุต
.#
การป้อนข้อมูลของคุณเป็นไม่ว่างเปล่าอาร์เรย์สี่เหลี่ยมของตัวละคร จุด.
เป็นพื้นที่ว่างเปล่าและ#
เป็นอุปสรรค
เส้นทางผ่านอุปสรรคหลักสูตรเริ่มต้นที่มุมบนด้านซ้ายและปลายที่มุมด้านล่างขวาและไปเท่านั้นหรือลง นอกจากนี้เส้นทางที่ถูกต้องไม่สามารถผ่านสิ่งกีดขวางได้ นี่คือตัวอย่างบางส่วนที่วาดด้วย+
-characters:
Valid path Invalid path Invalid path Invalid path
++........ ++........ +++++..... ..+.......
.++++++#.. .+.....#.. ....+++#++ ..++...#..
......+#.. .+.++++#.. .......#.+ ...+++.#..
....#.++++ .+++#.++++ ....#....+ ....#+....
เส้นทางสองเส้นทางนั้นมีความคล้ายคลึงกัน1หากสามารถแปลงเป็นอีกเส้นทางหนึ่งได้ด้วยการเคลื่อนที่ที+
ละจุด พา ธ กลางจะต้องถูกต้องเช่นกันดังนั้นคุณไม่สามารถโค้งงอข้ามสิ่งกีดขวางได้ ตัวอย่างเช่นสองเส้นทางแรกที่นี่มีความคล้ายคลึงเป็นหลัก แต่ที่สามแตกต่างจากพวกเขาเป็นหลักเนื่องจากมันไม่สามารถเลื้อยข้ามสองอุปสรรค:
++........ +......... +++++++++.
.+++++.#.. ++.....#.. .......#+.
.....+.#.. .++++++#.. .......#++
....#+++++ ....#.++++ ....#....+
เอาท์พุต
ผลลัพธ์ของคุณคือจำนวนเส้นทางที่แตกต่างกันอย่างมากผ่านเส้นทางของสิ่งกีดขวาง กล่าวอีกนัยหนึ่งถ้าเส้นทางที่ถูกต้องทั้งหมดถูกแบ่งออกเป็นคลาสของเส้นทางที่คล้ายกันเป็นหลักผลลัพธ์คือจำนวนของคลาส โปรดทราบว่าหมายเลขนี้อาจเป็น 0 หากไม่มีเส้นทางที่ถูกต้อง
กฎและการให้คะแนน
คุณสามารถเขียนโปรแกรมเต็มรูปแบบหรือฟังก์ชั่น จำนวนไบต์ต่ำสุดที่ชนะและช่องโหว่มาตรฐานไม่ได้รับอนุญาต ไม่มีเวลา จำกัด เว้นแต่คุณควรประเมินโปรแกรมของคุณในทุกกรณีทดสอบก่อนที่จะส่ง
กรณีทดสอบ
....
....
.... => 1
...#
....
...# => 0
#..#
..#.
.... => 0
......
......
..##..
......
...... => 2
......
...#..
......
..#...
#..... => 3
......
..#...
......
....#.
#..... => 4
.......
##.....
....###
...#...
..##.#.
#....#.
..#.... => 0
......#.
..##....
...#....
.......#
....#...
.##...#.
....#...
##...... => 7
.........
.#.#.#.#.
.........
#.#...#.#
.........
.#.#.#.#.
......... => 17
..........
.#........
..........
.....#....
#.........
........#.
......#...
.......... => 10
.........
.#.......
.........
...#.....
.........
.....#...
.........
.......#.
......... => 16
+
" โดยพื้นฐานแล้วฉันหมายถึงว่ามุมหนึ่งของเส้นทางนั้นกลับด้านเป็นมุมของทิศทางตรงกันข้าม
+
ละครั้ง "? นี่แปลว่าเส้นทางที่คล้ายกันเป็นหลักจะต้องมีความยาวเท่ากันหรือไม่?