Giả sử chúng ta định nghĩa một chương trình đơn giản lấy một mảng L gồm các số tự nhiên có độ dài N và thực hiện như sau:
i=0 #start at the first element in the source array
P=[] #make an empty array
while L[i]!=0: #and while the value at the current position is not 0
P.append(L[i]) #add the value at the current position to the end of the output array
i=(i+L[i])%N #move that many spaces forward in the source array, wrapping if needed
return P #return the output array
Mỗi chương trình như vậy sẽ chạy mãi mãi hoặc cuối cùng sẽ chấm dứt, tạo ra một danh sách các số nguyên dương. Công việc của bạn là, đưa ra một danh sách P gồm các số nguyên dương, tạo ra một danh sách ngắn nhất, L, các số tự nhiên chấm dứt và tạo P khi cắm vào chương trình trước đó.
Một danh sách như vậy luôn tồn tại, vì người ta chỉ có thể thêm các P[i]-1số 0 sau mỗi P[i]danh sách, sau đó một số 0 cuối cùng và nó sẽ tạo ra danh sách ban đầu. Ví dụ, đưa ra [5,5], một giải pháp là [5,0,0,0,0,5,0,0,0,0,0]. Tuy nhiên, [5,0,5]ngắn hơn nhiều, vì vậy giải pháp tự động không phải là giải pháp hợp lệ cho chương trình của bạn.
[5,6]->[5,6,0,0]
[5,7]->[5,0,0,0,0,7,0,0]
[5,6,7]->[5,6,0,7]
[5,6,8]->[5,0,8,0,0,6,0,0,0]
[1,2,3,4]->[1,2,0,3,0,0,4,0]
[1,2,1,2]->[1,2,0,1,2,0,0]
[1,3,5,7]->[1,3,0,0,5,0,0,0,0,7]
[1,3,5,4]->[1,3,4,0,5,0,0]
Đầu vào là danh sách các số nguyên dương (ở một số định dạng bạn có thể chỉ định) và đầu ra phải ở cùng định dạng. Danh sách và kích thước số nguyên có thể lên tới 2 ^ 16. Đây là mã golf, vì vậy chương trình ngắn nhất trong byte thắng!