Enable Javascript in your browser and then refresh this page, for a much enhanced experience.
First solution in Clear category for Square Spiral by tokiojapan55
def get_addr(number):
magic = lambda r,d: 4*r*r+(d-3)*r+1
if number == 1:
return (0, 0)
r = 1
while number > magic(r, 7):
r += 1
if number > magic(r, 5):
return (-r, number - magic(r, 7) + r)
elif number > magic(r, 3):
return (magic(r, 5) - number - r, -r)
elif number > magic(r, 1):
return (r, magic(r, 3) - number - r)
else:
return (number - magic(r, 1) + r, r)
def find_distance(first, second):
sx,sy = get_addr(first)
ex,ey = get_addr(second)
return abs(sx-ex)+abs(sy-ey)
April 20, 2020
Comments: