cp's OEIS Frontend

This is a front-end for the Online Encyclopedia of Integer Sequences, made by Christian Perfect. The idea is to provide OEIS entries in non-ancient HTML, and then to think about how they're presented visually. The source code is on GitHub.

A324660 Starting at n, a(n) is the total number of moves made to the right 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.

Original entry on oeis.org

0, 0, 1, 0, 10, 11, 0, 861, 4, 5, 0, 11, 59, 60, 5, 0, 57, 390898, 7, 8, 66444, 0, 22, 11, 12, 610392, 8, 9, 0, 211, 4434560, 266001, 266000, 266001, 266002, 9, 0, 43, 106674, 106673, 120, 12, 11, 12, 495, 0, 67, 50, 51, 36, 37, 100, 25, 12, 13, 0, 317, 316
Offset: 0

Views

Author

David Nacin, Mar 10 2019

Keywords

Examples

			For n=2, the points visited are 2,1,-1,-4,0 with the move from -4 to 0 being the only one to the right, hence a(2)=1.
		

Crossrefs

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}
    #Actual sequence
    def a(n):
        d=trip(n)
        return sum(1 for i in range(d['turns']) if d['spots'][i+1] > d['spots'][i])