The Ship of Theseus là một câu hỏi cũ có nội dung như sau:
Nếu một con tàu đã thay thế tất cả các bộ phận ban đầu của nó, nó vẫn là cùng một con tàu chứ?
Đối với môn đánh gôn này, chúng tôi sẽ từ từ thay thế "các bộ phận" trên một "con tàu" và xem phải mất bao lâu để có được một con tàu hoàn toàn mới.
Bài tập
Một con tàu bao gồm ít nhất hai phần. Các phần được đưa ra dưới dạng một mảng các số nguyên dương (khác không), đại diện cho điều kiện của phần đó.
Trên mỗi chu kỳ, chọn ngẫu nhiên một phần từ danh sách theo kiểu đồng phục. Điều kiện của phần đó sẽ được giảm đi một. Khi điều kiện của một phần bằng không, nó được thay thế bằng một phần mới. Phần mới bắt đầu với cùng một giá trị điều kiện như ban đầu đã làm.
Trong chu kỳ đầu tiên, nơi tất cả các bộ phận đã được thay thế (ít nhất) một lần, hãy dừng và xuất số chu kỳ đã thực hiện.
Ví dụ: giả sử tôi chọn các bộ phận ngẫu nhiên ở đây):
2 2 3 <- starting part conditions (input)
2 1 3 <- second part reduced
2 1 2 ...
2 1 1
2 2 1 <- second part reduced to zero, replaced
1 2 1
1 2 3 <- third part replaced
1 1 3
2 1 3 <- first part replaced
Đầu ra cho ví dụ này sẽ là 8
, vì phải mất tám chu kỳ cho tất cả các bộ phận được thay thế. Đầu ra chính xác sẽ khác nhau cho mỗi lần chạy.
Tôi / O
Đầu vào duy nhất là danh sách / mảng số nguyên cho điều kiện một phần. Đầu ra duy nhất là một số chu kỳ. Bạn có thể nhận / đưa ra các giá trị này theo bất kỳ cách thông thường nào: STDIO, đối số / trả về hàm, v.v.
Các trường hợp thử nghiệm
Vì đầu ra không cố định, bạn có thể sử dụng bất cứ thứ gì bạn muốn kiểm tra, nhưng đây là một vài mục đích tiêu chuẩn hóa:
1 2 3 4
617 734 248 546 780 809 917 168 130 418
19384 74801 37917 81706 67361 50163 22708 78574 39406 4051 78099 7260 2241 45333 92463 45166 68932 54318 17365 36432 71329 4258 22026 23615 44939 74894 19257 49875 39764 62550 23750 4731 54121 8386 45639 54604 77456 58661 34476 49875 35689 5311 19954 80976 9299 59229 95748 42368 13721 49790