Mục tiêu của thử thách này là viết một chương trình hoặc chức năng trả về số lần đình công ít nhất cần thiết để hoàn thành một khóa học nhất định.
Đầu vào
- Bố cục của khóa học có thể được thông qua theo bất kỳ cách phù hợp và định dạng bạn thích. (đọc từ bàn điều khiển, được truyền dưới dạng tham số đầu vào, đọc từ tệp hoặc bất kỳ chuỗi đa chuỗi, chuỗi chuỗi, mảng ký tự / byte hai chiều nào khác).
- Vị trí bắt đầu của quả bóng và lỗ có thể được chuyển qua làm đầu vào, nó không phải được phân tích cú pháp từ đầu vào. Trong các trường hợp thử nghiệm, chúng được bao gồm trong khóa học để đảm bảo không có sự nhầm lẫn về vị trí thực tế.
- Bạn có thể ánh xạ lại các ký tự đầu vào sang một thứ khác, miễn là chúng vẫn có thể được nhận dạng là các ký tự riêng biệt (ví dụ: các ký tự ASCII có thể in được).
Đầu ra
- Chương trình phải trả về số điểm thấp nhất có thể (số lần tấn công ít nhất cần thiết để đạt được lỗ) cho bất kỳ khóa học nào được chuyển dưới dạng đầu vào theo định dạng hợp lý (chuỗi, số nguyên, số float hoặc haiku mô tả kết quả)
- Nếu khóa học là không thể đánh bại, trả lại
-1
(hoặc bất kỳ giá trị sai lệch nào khác của sự lựa chọn của bạn sẽ không được trả lại cho một khóa học có thể đánh bại ).
Thí dụ:
Trong ví dụ này, các vị trí được ký hiệu là 0, X / Y, từ trái sang phải, từ trên xuống - nhưng bạn có thể sử dụng bất kỳ định dạng nào bạn thích vì kết quả hoàn toàn không phụ thuộc vào định dạng.
Đầu vào:
###########
# ....#
# ...#
# ~ . #
# ~~~ . #
# ~~~~ #
# ~~~~ #
# ~~~~ o #
# ~~~~ #
#@~~~~ #
###########
Ball (Start-Position): 1/9
Hole (End-Position): 8/7
Đầu ra:
8
Quy tắc và lĩnh vực
Khóa học có thể bao gồm các lĩnh vực sau:
'@'
Bóng - Bắt đầu khóa học'o'
Lỗ - Mục tiêu của khóa học'#'
Tường - Bóng sẽ dừng lại khi va vào tường'~'
Nước - Phải tránh'.'
Cát - Bóng sẽ dừng trên cát ngay lập tức' '
Ice - Ball sẽ tiếp tục trượt cho đến khi nó chạm vào thứ gì đó
Các quy tắc và hạn chế cơ bản của trò chơi:
- Quả bóng không thể di chuyển theo đường chéo, chỉ trái, phải, lên và xuống.
- Quả bóng sẽ không dừng lại trước mặt nước, chỉ trước bức tường, trên cát và trong lỗ.
- Bắn vào nước là không hợp lệ / không thể
- Quả bóng sẽ ở trong lỗ, không bỏ qua nó như trên băng
- Khóa học luôn luôn là hình chữ nhật.
- Khóa học luôn được bao bọc bởi nước hoặc tường (không cần kiểm tra ranh giới).
- Luôn luôn có chính xác một quả bóng và một lỗ.
- Không phải tất cả các khóa học có thể đánh bại.
- Có thể có nhiều đường dẫn đến cùng một điểm (thấp nhất).
Lỗ hổng và điều kiện chiến thắng
- Sơ hở tiêu chuẩn bị cấm
- Các chương trình phải chấm dứt
- Bạn không thể tạo ra các quy tắc bổ sung (đánh bóng mạnh đến nỗi nó nhảy qua mặt nước, bật ra khỏi tường, nhảy qua các bãi cát, uốn quanh các góc, v.v.)
- Đây là môn đánh gôn , vì vậy giải pháp có số lượng nhân vật ít nhất sẽ thắng.
- Các giải pháp phải có khả năng xử lý tất cả các trường hợp kiểm tra được cung cấp, nếu điều này là không thể do hạn chế của ngôn ngữ được sử dụng, vui lòng ghi rõ trong câu trả lời của bạn.
Các trường hợp thử nghiệm
Khóa học số 1 (2 lần đình công)
####
# @#
#o~#
####
Khóa 2 (không thể)
#####
#@ #
# o #
# #
#####
Khóa 3 (3 lần đình công)
~~~
~@~
~.~
~ ~
~ ~
~ ~
~ ~
~.~
~o~
~~~
Khóa 4 (2 lần đình công)
#########
#~~~~~~~#
#~~~@~~~#
## . ##
#~ ~ ~ ~#
#~. o .~#
#~~~ ~~~#
#~~~~~~~#
#########
Khóa 5 (không thể)
~~~~~~~
~... ~
~.@.~.~
~... ~
~ ~ ~.~
~ . .o~
~~~~~~~