A324664 Starting at n, a(n) is the smallest distance from zero for which the next move is a step away from zero, or zero if no such move is ever made, according to the following rules. On the k-th step (k=1,2,3,...) move a distance of k in the direction of zero. If the number landed on has been landed on before, move a distance of k away from zero instead.
0, 0, 1, 0, 3, 1, 0, 5, 4, 1, 0, 7, 6, 1, 4, 0, 7, 8, 7, 1, 2, 0, 5, 4, 1, 2, 7, 1, 0, 13, 2, 1, 10, 1, 1, 7, 0, 5, 1, 3, 2, 1, 10, 1, 2, 0, 17, 16, 1, 14, 1, 2, 11, 10, 1, 0, 1, 1, 17, 1, 15, 1, 1, 1, 11, 10, 0, 4, 1, 2, 1, 1, 1, 15, 1, 13, 1, 1, 0, 2, 1, 1
Offset: 0
Keywords
Examples
For n=2, the points visited are 2,1,-1,-4,0 with all moves being towards zero from the current position except for the move from -1 to -4. Thus the closest distance to zero from which a move is made away from zero is a(2) = 1.
Links
- David Nacin, A324664(n)/sqrt(n)
Programs
-
Python
#Sequences A324660-A324692 generated by manipulating this trip function #spots - positions in order with possible repetition #flee - positions from which we move away from zero with possible repetition #stuck - positions from which we move to a spot already visited with possible repetition def trip(n): stucklist = list() spotsvisited = [n] leavingspots = list() turn = 0 forbidden = {n} while n != 0: turn += 1 sign = n // abs(n) st = sign * turn if n - st not in forbidden: n = n - st else: leavingspots.append(n) if n + st in forbidden: stucklist.append(n) n = n + st spotsvisited.append(n) forbidden.add(n) return {'stuck':stucklist, 'spots':spotsvisited, 'turns':turn, 'flee':leavingspots} def minorzero(x): if x: return min(x) return 0 #Actual sequence def a(n): d = trip(n) return minorzero([abs(i) for i in d['flee']])