Back to questions
Яндекс Маркет
Middle
2
/ * У нас есть набор билетов вида: [ { from: 'London', to: 'Moscow' }, { from: 'NY', to: 'London' }, { from: 'Moscow', to: 'Spb' }, ... ] Из этих билетов можно построить единственный, неразрывный маршрут. Петель и повторов в маршруте нет. Нужно написать программу, которая возвращает эти же объекты билетов в порядке следования по маршруту. * / function getRoute(tickets = [], startCity = 'NY') { // your code here }
Companies where asked
Answer from AI
sobes.tech 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