# encoding=utf-8 ## por causo dos comentários com acentos def queue(x=[]) : return x ## definição rápida de uma fila... def enqueue(q,x): q.insert(0,x) def dequeue(q) : return q.pop() def vaiCavalo(orig,dest): ## vaiCavalo is © Bacco saltos = [(-1,-2),(-2,-1),(-2,1),(-1,2),(1,2),(2,1),(2,-1),(1,-2)] visitada = [[False]*8 for i in range(8)] ts = queue([orig+(0,)]) ## fila das tentativas=[(x,y,nivel)] path={ 0:orig } while ts: ## enquando há mais tentativas nx,ny,lev = dequeue(ts) ## get proxima tentativa path[lev]=(nx,ny) if (nx,ny) == dest : return ("found",lev,path) for dx,dy in saltos: ## agendar novas tentativas x,y = nx+dx, ny+dy if 0 <= x < 8 and 0 <= y < 8 and not visitada[x][y]: enqueue(ts,(x,y,lev+1)) visitada[nx][ny] = True return "not found" print("passos feitos:", vaiCavalo((3, 2),(3, 3)))