Cops 'chủ đề
Trong luồng này, nhiệm vụ của bạn là tạo một chương trình / hàm dựa trên đệ quy để tạo ra bất kỳ chuỗi số nguyên nào. Những tên cướp sẽ thử và tìm một giải pháp không đệ quy ngắn hơn trong chuỗi của Cướp .
Tóm tắt thử thách
Trong nhiều ngôn ngữ, các hàm đệ quy có thể đơn giản hóa đáng kể một tác vụ lập trình. Tuy nhiên, chi phí cú pháp cho một đệ quy thích hợp có thể hạn chế khả năng sử dụng của nó trong môn đánh gôn.
Các cảnh sát sẽ tạo ra một chương trình hoặc hàm lấy một số nguyên duy nhất n
, sẽ tạo ra các n
mục đầu tiên của một chuỗi số nguyên, chỉ sử dụng đệ quy 1 . Họ cũng nên đảm bảo rằng có một cách không hồi quy ngắn hơn để tạo chuỗi để đánh dấu mục nhập của họ là an toàn.
Những tên cướp sẽ cố gắng tìm một chương trình hoặc hàm ngắn hơn trong cùng một ngôn ngữ, tạo ra chuỗi số nguyên giống nhau, không sử dụng đệ quy 2 .
Nếu đệ trình của cảnh sát không bị bẻ khóa trong vòng mười ngày (240 giờ), cảnh sát sẽ chứng minh rằng trên thực tế có thể có một cách tiếp cận không đệ quy ngắn hơn bằng cách tiết lộ giải pháp của riêng họ. Sau đó họ có thể đánh dấu trình của họ là an toàn .
Người chiến thắng trong thử thách cảnh sát sẽ là người đệ trình dựa trên đệ quy ngắn nhất (theo mã-golf ) được đánh dấu an toàn.
Người chiến thắng trong thử thách cướp sẽ là kẻ cướp phá được nhiều giải pháp nhất.
1: Nó chỉ cần được đệ quy theo cú pháp; bạn không cần phải lo lắng về việc tối ưu hóa cuộc gọi ví dụ.
2: Một lần nữa, không đệ quy theo cú pháp; vì vậy bạn không thể đăng một giải pháp đệ quy và yêu cầu nó được biên dịch thành một vòng lặp nhờ tối ưu hóa cuộc gọi đuôi.
Yêu cầu nộp đơn
Mỗi lần gửi sẽ lấy một số nguyên duy nhất n
(không hoặc dựa trên một). Việc gửi sau đó sẽ xuất hoặc trả về các n
mục đầu tiên của một chuỗi số nguyên lựa chọn. (lưu ý rằng chuỗi số nguyên này không được phụ thuộc vào n
). Phương thức đầu vào và đầu ra có thể khác nhau giữa phương pháp đệ quy và không đệ quy. Chuỗi số nguyên có thể là bất kỳ chuỗi xác định nào có độ dài ít nhất là 5. Chuỗi cần được giải thích chính xác.
Trình của bạn không phải làm việc cho lớn tùy ý n
, nhưng nên làm việc ít nhất n=5
. Cách tiếp cận không đệ quy phải có khả năng hoạt động tối thiểu giống n
như cách tiếp cận đệ quy, hoặc tối đa n=2^15-1
, tùy theo cái nào nhỏ hơn.
Đệ quy
Vì lợi ích của thách thức này, đệ quy được định nghĩa là tạo ra chuỗi mong muốn bằng cách sử dụng một hàm (hoặc cấu trúc giống như hàm) tự gọi (hoặc gọi một chuỗi các hàm kết thúc bằng cách gọi chính nó, bao gồm các cấu trúc như tổ hợp Y). Độ sâu đệ quy nên đi đến vô cùng như n
đi đến vô tận. Cách tiếp cận không đệ quy là bất cứ điều gì không đệ quy.
n
nếu về mặt lý thuyết là đúng, nhưng nó không thể chạy được do hạn chế về thời gian hoặc bộ nhớ?
n=5
phải được tính toán
xfor
có sẵn thông qua một số loại nhập khẩu?) Vì vậy có lẽ ngôn ngữ này không thể cạnh tranh.
for
được thực hiện bằng đệ quy phía sau,for
đệ quy hay vòng lặp?