Lý lịch
Tôi đã xây dựng một khóa học vượt chướng ngại vật đơn giản bằng cách đặt các hộp trong một căn phòng hình chữ nhật. Bây giờ tôi muốn đếm số lượng các cách cơ bản khác nhau để giải quyết nó. Tôi cần bạn viết cho tôi một chương trình cho điều đó.
Đầu vào
Đầu vào của bạn là một mảng hình chữ nhật không trống của các ký tự .#
. Các chấm .
là không gian trống, và #
là những trở ngại.
Một con đường xuyên qua chướng ngại vật bắt đầu ở góc trên bên trái và kết thúc ở góc dưới bên phải, và chỉ đi bên phải hoặc xuống. Ngoài ra, một con đường hợp lệ không thể đi qua một chướng ngại vật. Dưới đây là một số ví dụ được vẽ bằng +
ký tự:
Valid path Invalid path Invalid path Invalid path
++........ ++........ +++++..... ..+.......
.++++++#.. .+.....#.. ....+++#++ ..++...#..
......+#.. .+.++++#.. .......#.+ ...+++.#..
....#.++++ .+++#.++++ ....#....+ ....#+....
Hai đường dẫn về cơ bản giống nhau 1 nếu một đường có thể biến thành đường kia bằng cách di chuyển từng +
đường một. Các đường dẫn trung gian cũng phải hợp lệ, vì vậy bạn không thể uốn một đường dẫn qua chướng ngại vật. Ví dụ, hai đường dẫn đầu tiên ở đây về cơ bản là tương tự nhau, nhưng đường dẫn thứ ba về cơ bản khác với chúng, vì nó không thể bị lung lay qua hai chướng ngại vật:
++........ +......... +++++++++.
.+++++.#.. ++.....#.. .......#+.
.....+.#.. .++++++#.. .......#++
....#+++++ ....#.++++ ....#....+
Đầu ra
Đầu ra của bạn là số lượng các con đường cơ bản khác nhau thông qua các khóa học vượt chướng ngại vật. Nói cách khác, nếu tất cả các đường dẫn hợp lệ được chia thành các lớp của các đường dẫn cơ bản tương tự nhau, thì đầu ra là số lượng các lớp. Lưu ý rằng số này có thể là 0, nếu không có đường dẫn hợp lệ.
Quy tắc và tính điểm
Bạn có thể viết một chương trình đầy đủ hoặc một chức năng. Số byte thấp nhất sẽ thắng và các sơ hở tiêu chuẩn không được phép. Không có giới hạn thời gian, ngoại trừ việc bạn nên đánh giá chương trình của mình trên mọi trường hợp thử nghiệm trước khi gửi nó.
Các trường hợp thử nghiệm
....
....
.... => 1
...#
....
...# => 0
#..#
..#.
.... => 0
......
......
..##..
......
...... => 2
......
...#..
......
..#...
#..... => 3
......
..#...
......
....#.
#..... => 4
.......
##.....
....###
...#...
..##.#.
#....#.
..#.... => 0
......#.
..##....
...#....
.......#
....#...
.##...#.
....#...
##...... => 7
.........
.#.#.#.#.
.........
#.#...#.#
.........
.#.#.#.#.
......... => 17
..........
.#........
..........
.....#....
#.........
........#.
......#...
.......... => 10
.........
.#.......
.........
...#.....
.........
.....#...
.........
.......#.
......... => 16
1 Thuật ngữ kỹ thuật chính xác là "homotopic" .
+
" tôi thực chất có nghĩa là một góc của con đường bị đảo ngược sang một góc của hướng ngược lại.
+
một lúc "? Có phải điều này ngụ ý rằng các đường dẫn cơ bản tương tự phải có cùng độ dài?