login
a(n) is the Manhattan distance between n and n(n+1)/2 in a square spiral of positive integers with 1 at the center.
3

%I #11 Aug 17 2018 11:02:00

%S 0,1,3,4,2,3,5,6,4,5,9,6,6,7,11,8,8,15,9,10,10,13,11,12,22,11,15,18,

%T 12,15,17,22,12,21,25,10,26,21,19,18,24,27,15,34,24,21,31,20,28,21,31,

%U 24,28,41,19,36,36,23,35,26,38,23,41,36,28,53,29,38,40,31,39

%N a(n) is the Manhattan distance between n and n(n+1)/2 in a square spiral of positive integers with 1 at the center.

%C Spiral begins:

%C .

%C 49 26--27--28--29--30--31

%C | | |

%C 48 25 10--11--12--13 32

%C | | | | |

%C 47 24 9 2---3 14 33

%C | | | | | | |

%C 46 23 8 1 4 15 34

%C | | | | | |

%C 45 22 7---6---5 16 35

%C | | | |

%C 44 21--20--19--18--17 36

%C | |

%C 43--42--41--40--39--38--37

%C .

%C Numbers n such that a(n)*2=n: 2, 6, 10, 12, 14, 16, 20, 24, 30, 80, 192, 198, 350, 524, 536, 548, 552, 560, 564, 576, 588, 594, 606, 618, 630, 1380, 1900, 4446, ...

%o (Python)

%o import math

%o def get_x_y(n):

%o sr = int(math.sqrt(n-1))

%o sr = sr-1+(sr&1)

%o rm = n-sr*sr

%o d = (sr+1)/2

%o if rm<=sr+1:

%o return -d+rm,d

%o if rm<=sr*2+2:

%o return d,d-(rm-(sr+1))

%o if rm<=sr*3+3:

%o return d-(rm-(sr*2+2)),-d

%o return -d,-d+rm-(sr*3+3)

%o for n in range(1,333):

%o x0,y0 = get_x_y(n)

%o x1,y1 = get_x_y(n*(n+1)/2)

%o print str(abs(x1-x0)+abs(y1-y0))+',',

%Y Cf. A000217, A214526, A232113, A232114.

%K nonn

%O 1,3

%A _Alex Ratushnyak_, Nov 19 2013