A118201 Smallest difference such that both difference and number do not occur previously.
0, 1, 3, 6, 2, 7, 13, 20, 12, 21, 11, 22, 10, 23, 9, 24, 8, 25, 43, 62, 42, 63, 41, 18, 44, 68, 93, 66, 38, 67, 37, 5, 36, 69, 35, 70, 34, 71, 33, 72, 32, 73, 31, 74, 30, 75, 29, 76, 28, 77, 27, 78, 26, 79, 133, 188, 132, 189, 131, 190, 130, 191, 129, 192, 128, 193, 127, 60, 134
Offset: 0
Links
- Alois P. Heinz, Table of n, a(n) for n = 0..20000
Programs
-
Maple
N:= 1000: # get all terms up to the first member > N a[0]:= 0: davail:= [$1..N]: B:= Vector(2*N): for n from 1 do found:= false; for i from 1 to nops(davail) do d:= davail[i]; an:= a[n-1]-d; if an > 0 and B[an] = 0 then a[n]:= an; found:= true; break fi; ap:= a[n-1]+d; if B[ap] = 0 then a[n]:= ap; found:= true; break fi od: if (not found) or (a[n] > N) then break fi; davail:= subsop(i=NULL,davail); B[a[n]]:= 1; od: seq(a[i],i=0..n); # Robert Israel, Nov 17 2015
-
Mathematica
M = 1000; (* get all terms up to the first member > M *) a[0] = 0; davail = Range[M]; B = Array[0&, 2M]; For[n = 1, True, n++, found = False; For[i = 1, i <= Length[davail], i++, d = davail[[i]]; an = a[n-1] - d; If[an > 0 && B[[an]] == 0, a[n] = an; found = True; Break[] ]; ap = a[n-1] + d; If[B[[ap]] == 0, a[n] = ap; found = True; Break[] ] ]; If [Not @ found || (a[n] > M), Break[]]; davail = ReplacePart[davail, i -> Nothing]; B[[a[n]]] = 1; ]; Table[a[i], {i, 0, n}] (* Jean-François Alcover, Oct 24 2016, translated from Robert Israel's Maple code *)
Formula
a(n+1) = a(n)-d or a(n)+d, where a(n+1) must be positive and must not have occurred previously in the sequence; choose the smallest positive d such that this is possible where d is not |a(m+1)-a(m)| for any m < n; if both a(n)-d and a(n)+d have not occurred, choose a(n)-d.
Comments