login
Permutation of natural numbers arising from applying the walk of triangular horizontal-first spiral (defined in A214250) to the data of square spiral (e.g. A214526).
0

%I #7 Nov 07 2024 15:22:10

%S 1,8,2,4,16,5,6,7,22,45,23,9,11,3,15,35,63,36,17,18,19,20,21,44,75,

%T 114,76,46,24,10,28,12,14,34,62,98,142,99,64,37,38,39,40,41,42,43,74,

%U 113,160,215,161,115,77,47,25,27,53,29,13,33,61,97,141,193,253

%N Permutation of natural numbers arising from applying the walk of triangular horizontal-first spiral (defined in A214250) to the data of square spiral (e.g. A214526).

%o (Python)

%o SIZE = 29 # must be 4k+1

%o grid = [0] * (SIZE*SIZE)

%o posX = posY = SIZE//2

%o grid[posY*SIZE+posX]=1

%o n = 2

%o def walk(stepX, stepY, chkX, chkY):

%o global posX, posY, n

%o while 1:

%o posX+=stepX

%o posY+=stepY

%o grid[posY*SIZE+posX]=n

%o n+=1

%o if grid[(posY+chkY)*SIZE+posX+chkX]==0:

%o return

%o while posX:

%o walk(0, -1, 1, 0) # up

%o walk(1, 0, 0, 1) # right

%o walk(0, 1, -1, 0) # down

%o walk(-1, 0, 0, -1) # left

%o import sys

%o grid2 = [0] * (SIZE*SIZE)

%o posX = posY = SIZE//2

%o grid2[posY*SIZE+posX]=1

%o def walk2(stepX, stepY, chkX, chkY):

%o global posX, posY

%o while 1:

%o a = grid[posY*SIZE+posX]

%o if a==0:

%o sys.exit(1)

%o print(a, end=', ')

%o posX+=stepX

%o posY+=stepY

%o grid2[posY*SIZE+posX]=1

%o if grid2[(posY+chkY)*SIZE+posX+chkX]==0:

%o return

%o while posX<SIZE-2:

%o walk2(-1, 0, 1, -1) # left

%o walk2(1, -1, 1, 1) # up-right

%o walk2(1, 1, -1, 0) # down-right

%o walk2(-1, 0, 1, -1) # left

%Y Cf. A214250, A214526, A217013.

%K nonn

%O 1,2

%A _Alex Ratushnyak_, Sep 30 2012