A217296 Permutation of natural numbers arising from applying the walk of rotated-square spiral (defined in A215468) to the data of square spiral (e.g. A214526).
1, 4, 6, 8, 2, 3, 15, 5, 19, 7, 23, 9, 11, 12, 14, 34, 16, 18, 40, 20, 22, 46, 24, 10, 28, 29, 13, 33, 61, 35, 17, 39, 69, 41, 21, 45, 77, 47, 25, 27, 53, 54, 30, 32, 60, 96, 62, 36, 38, 68, 106, 70, 42, 44, 76, 116, 78, 48, 26, 52, 86, 87, 55, 31, 59, 95, 139
Offset: 1
Keywords
Programs
-
Python
SIZE = 29 # must be 4k+1 grid = [0] * (SIZE*SIZE) posX = posY = SIZE//2 grid[posY*SIZE+posX]=1 n = 2 def walk(stepX, stepY, chkX, chkY): global posX, posY, n while 1: posX+=stepX posY+=stepY grid[posY*SIZE+posX]=n n+=1 if grid[(posY+chkY)*SIZE+posX+chkX]==0: return while posX: walk(0, -1, 1, 0) # up walk(1, 0, 0, 1) # right walk(0, 1, -1, 0) # down walk(-1, 0, 0, -1) # left grid2 = [0] * (SIZE*SIZE) posY = SIZE//2 posX = posY+1 grid2[posY*SIZE+posX-1] = grid2[posY*SIZE+posX] = 1 print(1, end=',') def walk2(stepX, stepY, chkX, chkY): global posX, posY while 1: a = grid[posY*SIZE+posX] if a==0: raise ValueError print(a, end=',') posX+=stepX posY+=stepY grid2[posY*SIZE+posX]=1 if grid2[(posY+chkY)*SIZE+posX+chkX]==0: return while posX!=SIZE-1: walk2(-1, 1, -1, -1) # down-left walk2(-1, -1, 1, -1) # up-left walk2( 1, -1, 1, 0) # up-right walk2( 1, 0, 1, 1) # right walk2( 1, 1, -1, 1) # down-right