Hidden Test case 4
I am at task 2 of Google foobar test. The task is to find the smallest number of moves to reach at the destination node from the start node using Knight's move. Code is running fine and giving intended output. but there is a hidden test case number 4 that is failing and I can't figure out why.
from itertools import product
def solution(src, dest):
puzzle = [[0, 1, 2, 3, 4, 5, 6, 7],
[8, 9, 10, 11, 12, 13, 14, 15],
[16, 17, 18, 19, 20, 21, 22, 23],
[24, 25, 26, 27, 28, 29, 30, 31],
[32, 33, 34, 35, 36, 37, 38, 39],
[40, 41, 42, 43, 44, 45, 46, 47],
[48, 49, 50, 51, 52, 53, 54, 55],
[56, 57, 58, 59, 60, 61, 62, 63]]
if (src not in range(0,64) or dest not in range(0,64)) :
raise Exception('out of range')
step = 1
row_start = 0
r_e = 7
str_r = 0
str_c = 0
while src:
if r_s <= src <= r_e:
for i in range(0, 8):
if puzzle[str_r][i] == src:
str_c = i
break
break
str_r += 1
r_s += 8
r_e += 8
moves = list(product([str_r - 1, str_r + 1], [str_c - 2, str_c + 2])) + list(product([str_r - 2, str_r + 2],[str_c - 1, str_c + 1]))
m_s = [(x,y) for x,y in moves if x >= 0 and y >= 0 and x < 8 and y < 8]
for i, j in m_s:
if puzzle[i][j] == dest:
move_counter = step
return move_counter
while True:
step += 1
List_steps = []
for i, j in m_s:
r_s = 0
r_e = 7
str_r = 0
str_c = 0
while True:
if r_s <= puzzle[i][j] <= r_e:
for x in range(0, 8):
if puzzle[str_r][x] == puzzle[i][j]:
str_c = x
break
break
str_r += 1
r_s += 8
r_e += 8
moves = list(product([str_r - 1, str_r + 1], [str_c - 2, str_c + 2])) + list(product([str_r - 2, str_r + 2],[str_c - 1, str_c + 1]))
m_z = [(x,y) for x,y in moves if x >= 0 and y >= 0 and x < 8 and y < 8]
for m, n in m_z:
if puzzle[m][n] == dest:
return step
move_counter = 'Not Found'
List_steps += m_z
if move_counter == 'Not Found':
m_s = list(set(List_steps))
continue
if __name__ == '__main__':
start = int(input("Input Source :"))
end = int(input("Input Destination :"))
print(solution(start, end))
Problem
Suggest me anything that you think should I change to pass this test case. I have been stuck on this from last several days