/front-task-1

Тестовое задание на позицию front-end dev. в компанию https://targetai.kz/

Primary LanguageJavaScript

Транспортный путь

У вас есть карта звёздного неба. На ней указано название каждой звезды, а также расстояние от неё до других звёзд в световых секундах. Логика по отрисовке графа уже сделана, вам необходимо реализовать функцию solution, которая должна принимать три аргумента:

  • объект, в котором ключами являются названия звёзд, а значениями — расстояния до звёзд (в космосе одностороннее движение);
  • название начальной точки пути - (e.g start);
  • название конечной точки пути - (e.g finish);

Функция должна возвращать кратчайшее расстояние от звезды start до звезды finish и путь, по которому нужно пройти.

Сигнатура функции:

const solution = function(graph, start, finish)  {
    // Ваше решение
}

Пример входных данных:

const graph = {
  start: { A: 50, B: 20 },
  A: { C: 40, D: 20 },
  B: { A: 90, D: 90 },
  C: { D: 160, finish: 50 },
  D: { finish: 20 },
  finish: {}
};
const start = 'start';
const finish = 'finish';

Пример выходных данных:

{
    distance: 90,
    path: ['start', 'A', 'D', 'finish']
}

Примечание:

Результатом решения задания является ваш собственный форк данного репозитория со всеми изменениями. Каркас решения находится в папке src/, поместите свое решение в solution.js.

Задача со звёздочкой:

Сделать звёздную карту draggable, т.е. добавить возможность перетягивать выбранные звёзды и их связи с другими звёздами. Реализовывать задачку со звёздочкой необходимо только после выполнения основного задания (имплементации транспортного пути). Задание НЕ обязательно к выполнению и выполняется по желанию.

Также приветствуются любые улучшения существующего "дизайна" 😭💩 каркаса (UI/UX).