login
Negative van Eck's sequence: For n >= 1, if there exists an m < n such that a(m) = a(n), take the largest such m and set a(n+1) = n-m, otherwise a(n+1) = -a(n). Start with a(1)=0.
1

%I #26 Jul 27 2019 16:45:06

%S 0,0,1,-1,1,2,-2,2,2,1,5,-5,5,2,5,2,2,1,8,-8,8,2,5,8,3,-3,3,2,6,-6,6,

%T 2,4,-4,4,2,4,2,2,1,22,-22,22,2,5,22,3,20,-20,20,2,7,-7,7,2,4,19,-19,

%U 19,2,5,16,-16,16,2,5,5,1,28,-28,28,2,7,19,15,-15,15,2,6,48,-48,48,2,5,17,-17,17,2,5,5,1,23,-23,23,2,7,23,3,51,-51

%N Negative van Eck's sequence: For n >= 1, if there exists an m < n such that a(m) = a(n), take the largest such m and set a(n+1) = n-m, otherwise a(n+1) = -a(n). Start with a(1)=0.

%C Similar logic as van Eck's sequence except that if a(n) hasn't appeared before, then a(n+1) = -a(n) instead of being 0.

%F If a(n) < 0, then a(n+1) = -a(n) and a(n+2) = 2. - _Rémy Sigrist_, Jul 14 2019

%e We start with a(1) = 0.

%e 0 has not occurred before, so our rule says that a(2) = -a(1) = 0.

%e Now 0 has occurred before, at a(1), which is 1 term before, so a(3) = 1.

%e 1 has not occurred before, so a(4) = -a(3) = -1.

%e -1 has not occurred before, so a(5) = -a(4) = 1.

%e Now 1 has occurred before, at a(3), which is 2 term before, so a(6) = 2.

%e 2 has not occurred before, so a(6) = -a(5) = -2.

%e And so on...

%o (Python)

%o import numpy as np

%o def A308619(n):

%o NegVanEck = np.array([0])

%o #first value is 0

%o i=NegVanEck[0]

%o while i < n:

%o last = NegVanEck[-1]

%o pos = np.where(NegVanEck == last)

%o if pos[0].size == 1:

%o NegVanEck = np.append(NegVanEck, -last)

%o else:

%o NegVanEck = np.append(NegVanEck, pos[0][-1] - pos[0][-2])

%o i += 1

%o return NegVanEck

%o print(A308619(1000)) #prints first 1000 integers of the sequence

%Y Cf. A181391.

%K sign

%O 1,6

%A _João D. R. Camacho_, Jun 11 2019