Sobes.tech
Назад к задачам
Junior — Senior
24

Поиск пути между аэропортами с применением обхода в глубину

Компании, где спрашивали:

Navio
Получайте помощь с лайвкодингом в реальном времени с Sobes Copilot
Условие задачи

Необходимо реализовать функцию, которая определит любую возможную последовательность перелётов от исходного аэропорта до конечного. Функция принимает три аргумента: код аэропорта отправления, код аэропорта назначения и функцию‑поставщик билетов. Результатом работы функции должен быть Promise, который либо разрешается массивом всех промежуточных пунктов (например, ['A','B','C']), либо строкой "no way", если путь недоступен.

Гарантируется, что для заданных пунктов существует либо один единственный маршрут, либо вовсе нет (нет ситуаций с несколькими альтернативными ветвями). При поиске нельзя запускать несколько запросов одновременно, а также запрещено использовать синтаксис async/await и генераторы.

const flights = [
  ['A', 'B'],
  ['A', 'С'],
  ['A', 'D'],
  ['A', 'O'],
  ['D', 'K'],
  ['D', 'L'],
  ['D', 'M'],
  ['M', 'Q'],
  ['M', 'Z'],
  ['O', 'P'],
  ['L', 'G'],
  ['L', 'F'],
  ['F', 'Y'],
];

findPath('A', 'N', fetchFlighting).then(console.log) // Promise.resolve(['A', 'D', 'N'])
findPath('A', 'Q', fetchFlighting).then(console.log) // Promise.resolve(["A", "D", "M", "Q"])
findPath('A', 'W', fetchFlighting).then(console.log) // 'no way'