Enable Javascript in your browser and then refresh this page, for a much enhanced experience.
First solution in Clear category for Chess Knight by tokiojapan55
def chess_knight(start, moves):
#replace this for solution
axis = lambda p:(ord(p[0])-ord('a'),int(p[1])-1)
cell = lambda p:chr(ord('a')+p[0])+str(p[1]+1)
stack,result,checked = [axis(start)],set(),set()
for _ in range(moves):
for (r,c) in stack[:]:
for dr,dc in [(-2,1),(-1,2),(1,2),(2,1),(2,-1),(1,-2),(-1,-2),(-2,-1)]:
if 0<=r+dr<8 and 0<=c+dc<8:
result.add((r+dr,c+dc))
if (r+dr,c+dc) not in checked:
stack.append((r+dr,c+dc))
checked.add((r,c))
return sorted([cell(p) for p in result])
April 18, 2020