36 lines
707 B
Text
36 lines
707 B
Text
sequence state = repeat(0,55)
|
|
integer pos
|
|
|
|
constant MAX = 1e9
|
|
function cap(integer n)
|
|
if n<0 then n += MAX end if
|
|
return n
|
|
end function
|
|
|
|
function next()
|
|
pos = mod(pos,55)+1
|
|
integer temp = cap(state[pos]-state[mod(pos+30,55)+1])
|
|
state[pos] = temp
|
|
return temp
|
|
end function
|
|
|
|
procedure init(integer seed)
|
|
sequence temp = repeat(0,55)
|
|
temp[1] = cap(seed)
|
|
temp[2] = 1
|
|
for i=3 to 55 do
|
|
temp[i] = cap(temp[i-2]-temp[i-1])
|
|
end for
|
|
for i=1 to 55 do
|
|
state[i] = temp[mod(34*i,55)+1]
|
|
end for
|
|
pos = 55
|
|
for i=55 to 219 do
|
|
{} = next()
|
|
end for
|
|
end procedure
|
|
|
|
init(292929)
|
|
for i=220 to 222 do
|
|
printf(1,"%d: %d\n",{i,next()})
|
|
end for
|