27 lines
542 B
Plaintext
27 lines
542 B
Plaintext
program recaman;
|
|
a := {[0,0]};
|
|
|
|
loop for i in [1..14] do
|
|
extend(a);
|
|
end loop;
|
|
|
|
print("First 15:", [a(n) : n in [0..14]]);
|
|
|
|
loop
|
|
doing n := extend(a);
|
|
until #(rept:=[[r,i] : r = a(i) | r=n]) > 1
|
|
do pass;
|
|
end loop;
|
|
|
|
print("First repetition:", n, "at", {x:x in rept}{n});
|
|
|
|
proc extend(rw a);
|
|
n := max/ domain a;
|
|
t := a(n) - n-1;
|
|
if t<0 or t in range a then
|
|
t := a(n) + n+1;
|
|
end if;
|
|
return a(n+1) := t;
|
|
end proc;
|
|
end program;
|