<pre><code> """You are given an insect moves in a plane starting from the original point (0,0).
The insect that can only move toward North-East, South-East, North-West, & South-West.
Now the thing is insect can't move more than a specific number of steps at a time in one direction.
For example, it can move only 3 steps in NE, 4 steps in SE, 5 steps in NW and 2 steps in SW.
If the insect moves 3 steps in direction NE at a stretch- it has to move NW, SE, or SW-
before again going in direction NE."""
"""Assumption say the insect moves in the plane from (-100,-100) to (100, 100) size plane
North is Positive y-cord
South is Negative y-cord
East is Positive x-cord
West is Negative x-cord """
def walk_ne():
max_ne = 3
global x_curr
global y_curr
global x_home
global y_home
global walked_ne
global walked_nw
global walked_se
global walked_sw
walked_ne = walked_nw = walked_sw = walked_se = False
walked_ne = True
for i in range(max_ne):
if x_curr < x_home and y_curr < y_home:
x_curr += 1
y_curr += 1
elif x_curr == x_home and (y_curr + 1) < y_home:
x_curr += 1
y_curr += 1
break
elif y_curr == y_home and (x_curr + 1) < x_home:
x_curr += 1
y_curr += 1
break
# else:
# print("Cond did not meet")
def walk_nw():
max_nw = 5
global x_curr
global y_curr
global x_home
global y_home
global walked_ne
global walked_nw
global walked_se
global walked_sw
walked_ne = walked_nw = walked_sw = walked_se = False
walked_nw = True
for i in range(max_nw):
if x_curr < x_home and y_curr > y_home:
x_curr += 1
y_curr -= 1
elif x_curr == x_home and (y_curr - 1) > y_home:
x_curr += 1
y_curr -= 1
break
elif y_curr == y_home and (x_curr + 1) < x_home:
x_curr += 1
y_curr -= 1
break
# else:
# print("Cond did not meet")
def walk_se():
max_se = 4
global x_curr
global y_curr
global x_home
global y_home
global walked_ne
global walked_nw
global walked_se
global walked_sw
walked_ne = walked_nw = walked_sw = walked_se = False
walked_se = True
for i in range(max_se):
if x_curr > x_home and y_curr < y_home:
x_curr -= 1
y_curr += 1
elif x_curr == x_home and (y_curr + 1) < y_home:
x_curr -= 1
y_curr += 1
break
elif y_curr == y_home and (x_curr - 1) > x_home:
x_curr -= 1
y_curr -= 1
break
# else:
# print("Cond did not meet")
def walk_sw():
max_sw = 2
global x_curr
global y_curr
global x_home
global y_home
global walked_ne
global walked_nw
global walked_se
global walked_sw
walked_ne = walked_nw = walked_sw = walked_se = False
walked_sw = True
for i in range(max_sw):
if x_curr > x_home and y_curr > y_home:
x_curr -= 1
y_curr -= 1
elif x_curr == x_home and (y_curr - 1) > y_home:
x_curr -= 1
y_curr -= 1
break
elif y_curr == y_home and (x_curr - 1) > x_home:
x_curr -= 1
y_curr -= 1
break
# else:
# # print("Cond did not meet")
x_curr = 0 # Current x location of insect
y_curr = 0 # Current y location of insect
x_home = int(input('home x cordinates (Integer between -100 to 100)'))
y_home = int(input('home y cordinates (Integer between -100 to 100)'))
walked_ne = walked_se = walked_nw = walked_sw = False
if (x_home + y_home) % 2 != 0:
print('Nearest the insect can go to given coordinates is ({} {}) '
'Because insect can only move in diagonal'.format(x_home-1, y_home))
x_home -= 1
while x_home != x_curr and y_home != y_curr:
if x_curr < x_home:
if y_curr < y_home:
if not walked_ne:
walk_ne()
else:
x_curr += 1
y_curr -= 1
walked_ne = False
walked_nw = True
else:
if not walked_nw:
walk_nw()
else:
x_curr += 1
y_curr += 1
walked_nw = False
walked_ne = True
else:
if y_curr < y_home:
if not walked_se:
walk_se()
else:
x_curr -= 1
y_curr -= 1
walked_se = False
walked_sw = True
else:
if not walked_sw:
walk_sw()
else:
x_curr -= 1
y_curr += 1
walked_sw = False
walked_se = True
if x_curr == x_home and y_curr != y_home:
if y_curr < y_home:
if not walked_ne:
walk_ne()
elif not walked_se:
walk_se()
else:
if not walked_nw:
walk_nw()
elif not walked_sw:
walk_sw()
elif x_curr != x_home and y_curr == y_home:
if x_curr < x_home:
if not walked_ne:
walk_ne()
elif not walked_nw:
walk_nw()
else:
if not walked_se:
walk_se()
elif not walked_sw:
walk_sw()
print(x_curr, y_curr)
</code></pre>