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. ერთეული მარშრუტის შექმნისთვის ბილეთების ნაკრებიდან, საჭიროა:
- იპოვოთ ქალაქი, სადაც არავინ არ ჩამოდის — ეს იქნება დასაწყისი.
- შექმენით Map სწრაფი ძიებისთვის, რათა იპოვოთ ბილეთი გამგზავრების ქალაქზე.
- იტერაციურად გაიარეთ ბილეთები, დაწყებული საწყისი ქალაქიდან, მარშრუტის ფორმირებისთვის.
შესწორებული და სრული გადაწყვეტის მაგალითი:
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" }
]
ამგვარად, პროგრამა აღადგენს სწორ წესრიგში მარშრუტს.