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.
%I A215468 #26 Aug 06 2025 12:16:30 %S A215468 50,62,72,86,76,84,122,88,144,104,166,120,152,160,144,218,160,168,248, %T A215468 184,192,278,208,216,260,268,240,248,346,264,272,280,384,296,304,312, %U A215468 422,328,336,344,400,408,368,376,384,506,400,408,416,424,552,440,448,456,464,598 %N A215468 Sum of the 8 nearest neighbors of n in a rotated-square spiral with positive integers. %H A215468 David Radcliffe, <a href="/A215468/b215468.txt">Table of n, a(n) for n = 1..10000</a> %e A215468 Spiral begins: %e A215468 85 %e A215468 / %e A215468 / %e A215468 84 61-62 %e A215468 / / \ %e A215468 / / \ %e A215468 83 60 41-42 63 %e A215468 / / / \ \ %e A215468 / / / \ \ %e A215468 82 59 40 25-26 43 64 %e A215468 / / / / \ \ \ %e A215468 / / / / \ \ \ %e A215468 81 58 39 24 13-14 27 44 65 %e A215468 / / / / / \ \ \ \ %e A215468 / / / / / \ \ \ \ %e A215468 80 57 38 23 12 5--6 15 28 45 66 %e A215468 / / / / / / \ \ \ \ \ %e A215468 / / / / / / \ \ \ \ \ %e A215468 79 56 37 22 11 4 1--2 7 16 29 46 67 %e A215468 \ \ \ \ \ \ / / / / / / %e A215468 \ \ \ \ \ \ / / / / / / %e A215468 78 55 36 21 10 3 8 17 30 47 68 %e A215468 \ \ \ \ \ / / / / / %e A215468 \ \ \ \ \ / / / / / %e A215468 77 54 35 20 9 18 31 48 69 %e A215468 \ \ \ \ / / / / %e A215468 \ \ \ \ / / / / %e A215468 76 53 34 19 32 49 70 %e A215468 \ \ \ / / / %e A215468 \ \ \ / / / %e A215468 75 52 33 50 71 %e A215468 \ \ / / %e A215468 \ \ / / %e A215468 74 51 72 %e A215468 \ / %e A215468 \ / %e A215468 73 %e A215468 . %e A215468 The 8 nearest neighbors of 4 are 1,3,5,10,11,12,21,23, their sum is 86, so a(4)=86. %o A215468 (Python) %o A215468 SIZE=17 # must be odd %o A215468 grid = [0] * (SIZE*SIZE) %o A215468 posX = posY = SIZE//2 %o A215468 saveX = [0]* (SIZE*SIZE+1) %o A215468 saveY = [0]* (SIZE*SIZE+1) %o A215468 grid[posY*SIZE+posX]=1 %o A215468 saveX[1]=posX %o A215468 saveY[1]=posY %o A215468 posX += 1 %o A215468 grid[posY*SIZE+posX]=2 %o A215468 saveX[2]=posX %o A215468 saveY[2]=posY %o A215468 n = 3 %o A215468 def walk(stepX, stepY, chkX, chkY): %o A215468 global posX, posY, n %o A215468 while 1: %o A215468 posX+=stepX %o A215468 posY+=stepY %o A215468 grid[posY*SIZE+posX]=n %o A215468 saveX[n]=posX %o A215468 saveY[n]=posY %o A215468 n+=1 %o A215468 if grid[(posY+chkY)*SIZE+posX+chkX]==0: %o A215468 return %o A215468 while posX!=SIZE-1: %o A215468 walk(-1, 1, -1, -1) # down-left %o A215468 walk(-1, -1, 1, -1) # up-left %o A215468 walk( 1, -1, 1, 0) # up-right %o A215468 walk( 1, 0, 1, 1) # right %o A215468 walk( 1, 1, -1, 1) # down-right %o A215468 for s in range(1, n): %o A215468 posX = saveX[s] %o A215468 posY = saveY[s] %o A215468 i,j = grid[(posY-1)*SIZE+posX-1], grid[(posY-1)*SIZE+posX+1] %o A215468 u,v = grid[(posY+1)*SIZE+posX-1], grid[(posY+1)*SIZE+posX+1] %o A215468 if i==0 or j==0 or u==0 or v==0: %o A215468 break %o A215468 k = grid[(posY-1)*SIZE+posX ] + grid[(posY+1)*SIZE+posX ] %o A215468 k+= grid[ posY *SIZE+posX-1] + grid[ posY *SIZE+posX+1] %o A215468 print(i+j+u+v+k, end=' ') %o A215468 print() %o A215468 for y in range(SIZE): %o A215468 for x in range(SIZE): %o A215468 print('%3d' % grid[y*SIZE+x], end=' ') %o A215468 print() %o A215468 (Python) %o A215468 def spiral(x, y): %o A215468 r = abs(x) + abs(y) %o A215468 return 1 + 2*r*r + (y-r if x > 0 else r-y) %o A215468 def A215468(n): %o A215468 x = A010751(n-1) %o A215468 y = A305258(n-1) %o A215468 return sum(spiral(x+i, y+j) for i in (-1, 0, 1) for j in (-1, 0, 1) %o A215468 if (i, j) != (0, 0)) # _David Radcliffe_, Aug 05 2025 %Y A215468 Coordinates (but 0-based): A010751, A305258. %Y A215468 Other spiral sums: A214176, A214177, A214226, A214227, A214230, A214231, A214250, A214251, A214252. %K A215468 nonn,easy %O A215468 1,1 %A A215468 _Alex Ratushnyak_, Aug 11 2012