Sobes.tech
Middle

/* Mamy zestaw biletów w następującej formie: [ { from: 'Londyn', to: 'Moskwa' }, { from: 'NY', to: 'Londyn' }, { from: 'Moskwa', to: 'Spb' }, ... ] Z tych biletów można zbudować jedną, nieprzerwaną trasę. Na trasie nie ma pętli ani powtórzeń. Należy napisać funkcję, która zwróci te same obiekty biletów w kolejności zgodnej z trasą. */ function getRoute(tickets = [], startCity = 'NY') { // your code here }

sobes.tech AI

Odpowiedź od AI

Для решения задачи нужно упорядочить билеты так, чтобы каждый следующий билет начинался там, где закончился предыдущий. Поскольку маршрут единственный и непрерывный, можно построить словарь (Map) от города отправления к билету, а затем, начиная с начального города, последовательно брать следующий билет.

Пример решения на JavaScript:

function getRoute(tickets = [], startCity = 'NY') {
  const map = new Map();
  tickets.forEach(ticket => {
    map.set(ticket.from, ticket);
  });

  const route = [];
  let currentCity = startCity;

  while (map.has(currentCity)) {
    const ticket = map.get(currentCity);
    route.push(ticket);
    currentCity = ticket.to;
  }

  return route;
}

// Пример использования:
const tickets = [
  { from: 'London', to: 'Moscow' },
  { from: 'NY', to: 'London' },
  { from: 'Moscow', to: 'Spb' },
];

console.log(getRoute(tickets, 'NY'));
// Выведет билеты в порядке: NY->London, London->Moscow, Moscow->Spb