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.

A214226 Sum of the eight nearest neighbors of n in a triangular horizontal-last spiral with positive integers.

Original entry on oeis.org

72, 80, 60, 76, 132, 100, 164, 112, 136, 200, 144, 128, 128, 136, 156, 196, 284, 220, 204, 208, 324, 224, 232, 248, 288, 384, 296, 264, 256, 264, 272, 280, 288, 296, 324, 380, 500, 404, 372, 368, 376, 384, 548, 400, 408, 416, 424, 448, 504, 632, 512, 464, 448
Offset: 1

Views

Author

Alex Ratushnyak, Jul 07 2012

Keywords

Examples

			Triangular spiral begins:
__ __ __ __ __ __ __ 43
__ __ __ __ __ __ 42 21 44
__ __ __ __ __ 41 20  7 22 45
__ __ __ __ 40 19  6  1  8 23 46
__ __ __ 39 18  5  4  3  2  9 24 47
__ __ 38 17 16 15 14 13 12 11 10 25 48
__ 37 36 35 34 33 32 31 30 29 28 27 26 49
64 63 62 61 60 69 58 57 56 55 54 53 52 51 50
The eight nearest neighbors of 3 are 6, 1, 8, 4, 2, 14, 13, 12; their sum is a(3)=60.
		

Crossrefs

Cf. A002061 - numbers on the central vertical axis.
Cf. A054552 - numbers on the axis starting with 1 and 2.
Cf. A214227 - sum of the four nearest neighbors.
Cf. A214250 - same sum in a triangular "horizontal-first" spiral.

Programs

  • Python
    SIZE=27 # must be odd
    grid = [0] * (SIZE*SIZE)
    saveX = [0]* (SIZE*SIZE)
    saveY = [0]* (SIZE*SIZE)
    saveX[1] = saveY[1] = posX = posY = SIZE//2
    grid[posY*SIZE+posX]=1
    n = 2
    def walk(stepX,stepY,chkX,chkY,chkX2,chkY2):
      global posX, posY, n
      while 1:
        posX+=stepX
        posY+=stepY
        grid[posY*SIZE+posX]=n
        saveX[n]=posX
        saveY[n]=posY
        n+=1
        if posX==0 or grid[(posY+chkY)*SIZE+posX+chkX]+grid[(posY+chkY2)*SIZE+posX+chkX2]==0:
            return
    while 1:
        walk( 1, 1, -1,  0, -1, 0)    # right+down
        walk(-1, 0,  1, -1, 0, -1)    # left
        if posX==0:
            break
        walk( 1,-1,  1, 1, 1, 1)    # right+up
    for n in range(1,101):
        posX = saveX[n]
        posY = saveY[n]
        k = grid[(posY-1)*SIZE+posX] + grid[(posY+1)*SIZE+posX]
        k+= grid[(posY-1)*SIZE+posX-1] + grid[(posY-1)*SIZE+posX+1]
        k+= grid[(posY+1)*SIZE+posX-1] + grid[(posY+1)*SIZE+posX+1]
        k+= grid[posY*SIZE+posX-1] + grid[posY*SIZE+posX+1]
        print(k, end=', ')