Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- function shortestDistance(index, nivel = 0, aux = []) {
- const alvo = 'd';
- console.log(' '.repeat(nivel + 1), 'Aux', aux);
- if (aux.find(x => x == index))
- {
- console.log(' '.repeat(nivel + 1), 'Loop detectado');
- return -1;
- }
- let newAux = [...aux, index];
- let city = this.setCity[index];
- console.log(' '.repeat(nivel), 'Buscando filhos da cidade', city.city);
- if (city.city === alvo)
- {
- console.log(' '.repeat(nivel + 1), 'Encontrou', alvo);
- return 0;
- }
- let distances = [];
- city.nextCityIndex.forEach((cityIndex, childIndex) => {
- let distanceToChild = city.distanceToChild[childIndex];
- console.log(' '.repeat(nivel + 1), 'Distancia do filho', city.city ,'até o filho', this.setCity[cityIndex].city, 'é', distanceToChild);
- let minorDistanceOfChildToC = this.shortestDistance(cityIndex, nivel + 1, newAux);
- console.log(' '.repeat(nivel + 1), 'Menor distância do filho', this.setCity[cityIndex].city, 'até', alvo, 'é', minorDistanceOfChildToC);
- if (minorDistanceOfChildToC != -1)
- distances.push(distanceToChild + minorDistanceOfChildToC);
- })
- console.log(' '.repeat(nivel + 1), "Distâncias encontradas do filho", city.city, 'até', alvo, distances);
- var min = -1;
- if (distances.length > 0)
- {
- min = distances.reduce((a, b) => {
- return Math.min(a, b);
- })
- console.log(' '.repeat(nivel + 1), "Menor distância do filho", city.city, 'até', alvo, 'é', min);
- }
- else
- {
- console.log(' '.repeat(nivel + 1), "Não foi possível encontrar menor distância do filho", city.city, 'até', alvo);
- }
- return min;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement