Dữ liệu vào: Một mảng I gồm k số nguyên dương. Các số nguyên sẽ không lớn hơn 100 và k 100 .
Đầu ra: Mã của bạn phải xuất tất cả các mảng O có thể có số nguyên không âm có độ dài k với giới hạn là 0 ≤ O i I i . Để lấy từ một mảng sang mảng tiếp theo, bạn có thể thêm hoặc trừ 1 đến một giá trị trong mảng. Mã của bạn không được xuất ra cùng một mảng hai lần. Nếu số lượng các mảng khác nhau được xuất ra rất lớn, mã của bạn sẽ chỉ tiếp tục xuất ra mãi mãi cho đến khi nó bị giết.
Ví dụ
Nếu tôi là một mảng gồm k thì đây chính xác là vấn đề lặp lại trên tất cả các mã Gray có độ rộng bit k , ngoại trừ phần tử đầu tiên và phần tử cuối cùng không cần phải tiếp cận trong một bước.
Nếu
I = [2,1]
sau đó một thứ tự có thể của các mảng đầu ra là(0,0),(0,1),(1,1),(1,0),(2,0),(2,1)
- Nếu
I = [2,1,3]
sau đó một thứ tự có thể của các mảng đầu ra là(0,0,0),(0,0,1),(0,0,2),(0,0,3),(0,1,3),(0,1,2),(0,1,1),(0,1,0),(1,1,0),(1,1,1),(1,1,2),(1,1,3),(2,1,3),(2,1,2),(2,1,1),(2,1,0),...
.
Đây là một thử thách chơi gôn mã, bài nộp với mã nguồn có độ dài ngắn nhất sẽ thắng. Đừng để những câu trả lời ngắn trong ngôn ngữ chơi gôn ngăn cản bạn đăng câu trả lời bằng các ngôn ngữ khác. Cố gắng đưa ra câu trả lời ngắn nhất bằng bất kỳ ngôn ngữ nào.
Đây cũng là một thách thức phức tạp hạn chế. Mỗi mảng mới phải được xuất với thời gian trôi qua O (k) kể từ khi mảng được xuất ra trước đó (hoặc bắt đầu chương trình cho mảng đầu tiên được xuất ra). Điều này có nghĩa là thời gian chạy trên mỗi mảng đầu ra mới (chúng là mỗi chiều dài k ) không được lớn hơn O (k) . Đó là cần có tỷ lệ thời gian cho k và không, ví dụ k 2 hoặc 2 k . Lưu ý đây không phải là thời gian trung bình trên mỗi đầu ra mà là thời gian trường hợp xấu nhất cho mỗi và mọi mảng xuất ra.
Bạn có thể giả sử rằng tất cả số học trên số nguyên 64 bit có thể được thực hiện trong thời gian không đổi cũng như có thể đọc và xuất chúng cũng như gán và tra cứu và thay đổi giá trị trong mảng.
Một hậu quả của sự phức tạp hạn chế là các giải pháp chỉ xuất ra khi thoát khỏi chương trình không được chấp nhận.
n
và k
bị hạn chế? giả sử họ đi đến vô cùng với chiều rộng bit làm thế nào để đi
I_i+1
? Bạn có thể đạt 0 từI_i
không?)