Sobes.tech
Middle

От тези билети може да се построи единствен, непрекъснат маршрут. В маршрута няма цикли или повторения. Трябва да напишете програма, която връща същите обекти на билетите в реда на маршрута. ```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 AI

Отговор от AI

В представения код липсва дефиницията за началния град startcity. За да построите единствен маршрут от набора билети, трябва:

  1. Да намерите града, към който никой не пристига — това ще бъде началото.
  2. Да създадете Map за бързо търсене на билет по град на тръгване.
  3. Да преминавате итеративно през билетите, започвайки от началния град, формирайки маршрута.

Пример за коригирано и пълно решение:

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

  // Намиране на стартовия град — този, който е в from, но не и в 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' },
]));

Резултат:

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

По този начин програмата възстановява маршрута в правилния ред.