У вас есть карта звёздного неба. На ней указано название каждой звезды, а также расстояние от неё до других звёзд в световых секундах.
Логика по отрисовке графа уже сделана, вам необходимо реализовать функцию 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).