login
Smallest difference such that both difference and number do not occur previously.
4

%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