Sobes.tech
Middle

De ces billets, on peut construire un seul itinéraire ininterrompu. Il n'y a pas de boucles ni de répétitions dans l'itinéraire. Il faut écrire un programme qui renvoie ces mêmes objets de billets dans l'ordre de l'itinéraire. ```javascript function getRoute(tickets = []) { const cities = new Map(); for (const ticket of tickets) { cities.set(ticket.from, ticket); } const result = []; let currentCity = startcity; while (cities.has(currentCity)) { const next = cities.get(currentCity); result.push(next); currentCity = next.to; } return result; } console.clear() console.log(getRoute([ { from: 'London', to: 'Moscow' }, { from: 'NY', to: 'London' }, { from: 'Moscow', to: 'Spb' }, ])); ```

sobes.tech IA

Réponse de l'IA

Dans le code présenté, la définition de la ville de départ startcity est manquante. Pour construire un seul itinéraire à partir de l'ensemble des billets, il faut :

  1. Trouver la ville à partir de laquelle personne n'arrive — ce sera le point de départ.
  2. Créer une Map pour rechercher rapidement un billet par la ville de départ.
  3. Parcourir de manière itérative les billets, en commençant par la ville initiale, pour former l'itinéraire.

Exemple d'une solution corrigée et complète :

function getRoute(tickets = []) {
  const fromCities = new Set(tickets.map(t => t.from));
  const toCities = new Set(tickets.map(t => t.to));

  // Trouver la ville de départ — celle qui est dans from, mais pas dans to
  let startcity = null;
  for (const city of fromCities) {
    if (!toCities.has(city)) {
      startcity = city;
      break;
    }
  }

  const citiesMap = new Map();
  for (const ticket of tickets) {
    citiesMap.set(ticket.from, ticket);
  }

  const result = [];
  let currentCity = startcity;

  while (citiesMap.has(currentCity)) {
    const nextTicket = citiesMap.get(currentCity);
    result.push(nextTicket);
    currentCity = nextTicket.to;
  }

  return result;
}

console.log(getRoute([
  { from: 'London', to: 'Moscow' },
  { from: 'NY', to: 'London' },
  { from: 'Moscow', to: 'Spb' },
]));

Résultat :

[
  { "from": "NY", "to": "London" },
  { "from": "London", "to": "Moscow" },
  { "from": "Moscow", "to": "Spb" }
]

Ainsi, le programme restaure la route dans le bon ordre.