%I #27 Oct 25 2016 02:46:22
%S 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,
%T 68,93,66,38,67,37,5,36,69,35,70,34,71,33,72,32,73,31,74,30,75,29,76,
%U 28,77,27,78,26,79,133,188,132,189,131,190,130,191,129,192,128,193,127,60,134
%N Smallest difference such that both difference and number do not occur previously.
%C Similar to Recamán's sequence (A005132), but increases the difference to avoid duplicating values. Conjecture that every nonnegative integer occurs in this sequence. Evaluating through n=20000, the smallest number that has not occurred is 139.
%C The first 14 terms appear in the original OEIS logo. - _Philippe Deléham_, Mar 01 2013
%C This is very similar to A064389, and arguably just as nice. - _Franklin T. Adams-Watters_, Nov 11 2015
%H Alois P. Heinz, <a href="/A118201/b118201.txt">Table of n, a(n) for n = 0..20000</a>
%F 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.
%p N:= 1000: # get all terms up to the first member > N
%p a[0]:= 0:
%p davail:= [$1..N]:
%p B:= Vector(2*N):
%p for n from 1 do
%p found:= false;
%p for i from 1 to nops(davail) do
%p d:= davail[i];
%p an:= a[n-1]-d;
%p if an > 0 and B[an] = 0 then
%p a[n]:= an; found:= true; break
%p fi;
%p ap:= a[n-1]+d;
%p if B[ap] = 0 then
%p a[n]:= ap; found:= true; break
%p fi
%p od:
%p if (not found) or (a[n] > N) then break fi;
%p davail:= subsop(i=NULL,davail);
%p B[a[n]]:= 1;
%p od:
%p seq(a[i],i=0..n); # _Robert Israel_, Nov 17 2015
%t M = 1000; (* get all terms up to the first member > M *)
%t a[0] = 0;
%t davail = Range[M];
%t B = Array[0&, 2M];
%t For[n = 1, True, n++,
%t found = False;
%t For[i = 1, i <= Length[davail], i++,
%t d = davail[[i]];
%t an = a[n-1] - d;
%t If[an > 0 && B[[an]] == 0,
%t a[n] = an; found = True; Break[]
%t ];
%t ap = a[n-1] + d;
%t If[B[[ap]] == 0,
%t a[n] = ap; found = True; Break[]
%t ]
%t ];
%t If [Not @ found || (a[n] > M), Break[]];
%t davail = ReplacePart[davail, i -> Nothing];
%t B[[a[n]]] = 1;
%t ];
%t Table[a[i], {i, 0, n}] (* _Jean-François Alcover_, Oct 24 2016, translated from _Robert Israel_'s Maple code *)
%Y Cf. A118202 (inverse), A005132, A064389.
%K nonn,look,nice
%O 0,3
%A _Franklin T. Adams-Watters_, Apr 14 2006