Thử thách
Bây giờ ông già Noel cuối cùng đã tìm ra cách vào trong hầm hiện tại của mình, ông nhận ra rằng bằng cách nào đó, các yêu tinh đã vào đó trước ông và lấy trộm một số quà của ông! Mặc dù vậy, họ vẫn chưa tìm ra cách rời khỏi hầm, vì vậy ông già Noel phải cố gắng bắt tất cả. Cả ông già Noel và yêu tinh đều có năng lượng vô hạn để chạy xung quanh nhưng thật không may, yêu tinh có năng lượng vô hạn cao hơn, vì vậy nếu cuối cùng họ chạy theo vòng ở khắp mọi nơi, yêu tinh đã được tự do.
Đưa ra một biểu đồ các n
nút và e
các cạnh với một bước đi tồn tại giữa hai nút bất kỳ và vị trí của yêu tinh và ông già Noel, xác định có bao nhiêu yêu tinh ông già Noel có thể bắt trước khi ông mệt mỏi.
Cuộc rượt đuổi là theo lượt. Mỗi chu kỳ, các yêu tinh trước tiên đều di chuyển đồng thời (chúng có thể di chuyển qua nhau và trên cùng một nút), và sau đó Santa sẽ di chuyển. Nếu Santa di chuyển vào cùng một nút với một yêu tinh, thì anh ta đã bắt được yêu tinh đó. Mỗi yêu tinh chỉ có thể di chuyển từ một nút sang hàng xóm của mình trong một bước. Điều tương tự cũng xảy ra với Santa ngay từ đầu, nhưng với mỗi yêu tinh mà anh ta bắt được, Santa có thể tiến thêm một bước. Vì vậy, nếu ông già Noel đã bắt được một yêu tinh, thì ông có thể di chuyển từ một nút đến người hàng xóm của nó. Điều này có nghĩa là anh ta có thể di chuyển đến một nút và sau đó quay lại. Tuy nhiên, vì Santa chạy quá nhanh trong khoảng thời gian này, anh ta sẽ không bắt được bất kỳ yêu tinh nào vượt qua các bước trung gian (vì vậy nếu anh ta ở trên A, A được kết nối với B, B được kết nối với C, có một yêu tinh trên B và Santa di chuyển từ A -> B -> C, yêu tinh vẫn chưa bị bắt). Tuy nhiên, Santa không phải di chuyển nhiều bước cùng một lúc; anh ta di chuyển lên tới 1 + (số lượng yêu tinh bị bắt) mỗi lượt.
Lưu ý rằng tất cả các yêu tinh phải di chuyển mỗi lượt và nếu một yêu tinh di chuyển đến nút của ông già Noel, họ sẽ bị bắt.
Tất cả các thực thể (yêu tinh, ông già Noel) sẽ ở trên các nút riêng biệt ngay từ đầu.
Thông số kỹ thuật và quy tắc
Về mặt lý thuyết, chương trình của bạn sẽ hoạt động cho đầu vào có kích thước bất kỳ. Đầu vào sẽ được đưa ra dưới dạng biểu đồ, vị trí của yêu tinh và vị trí của ông già Noel. Bạn có thể lấy biểu đồ ở bất kỳ định dạng hợp lý nào (danh sách các nút + danh sách các cạnh, danh sách các cạnh, ma trận kề, ký hiệu chu kỳ, v.v.) và bạn có thể nhận các vị trí ở bất kỳ định dạng hợp lý nào hoạt động với định dạng đầu vào biểu đồ của bạn (chỉ mục trong danh sách các nút, v.v.) Đầu ra phải là một số nguyên dương duy nhất cho biết số lượng yêu tinh tối đa mà ông già Noel có thể bắt được.
Các trường hợp thử nghiệm
Chúng được đưa ra dưới dạng danh sách các cạnh và số nút cho các vị trí.
Input -> Output
[(0, 1), (1, 2)], [0, 2], 1 -> 2 # Easy win for Santa, the elves get themselves caught :P
[(0, 1), (1, 2), (2, 3), (3, 0)], [0, 1], 2 -> 2 # The elf opposite of Santa cannot escape but the other one can always just run away each turn, until Santa catches the first elf. Then he can easily just catch the rest.
[(0, 1), (1, 2), (2, 3), (3, 0)], [1], 0 -> 0 # Santa will never catch up
[(0, 1), (1, 2), (2, 3), (3, 0), (1, 4), (4, 5), ..., (10, 11), (11, 3)], [2, 6], 0 -> 2 # The first elf moves to either 1 or 3 and then gets caught. Then, Santa can use his 2-step move to catch up to the second elf no matter what.
Tôi nghĩ ông già Noel có thể không bắt được yêu tinh hay tất cả các yêu tinh, vì vậy thử thách này có thể chỉ là "ông có thể bắt được một gợi ý "
Quy tắc
- Áp dụng sơ hở tiêu chuẩn
- Đây là một thử thách chơi gôn , vì vậy câu trả lời ngắn nhất tính theo byte sẽ thắng
- Không có câu trả lời sẽ được chấp nhận
Chúc bạn chơi golf vui vẻ!
Lưu ý: Tôi đã lấy cảm hứng cho loạt thử thách này từ Advent Of Code . Tôi không có liên kết với trang web này
Bạn có thể xem danh sách tất cả các thử thách trong chuỗi bằng cách xem phần 'Liên kết' của thử thách đầu tiên tại đây .
1
Chứng minh một số phát biểu toán học. 2
Đăng câu trả lời Jelly (/ ...) trong ít hơn 10 byte.