Skip to content

PCR-JS-2022/JS-6

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

5 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

JS-6

Говорят, что путешествия позволяют человеку открывать новые горизонты и вдохновляться. Кеша, как истинный фотограф, не может провести выходные без парочки красивых фотографий. В этот раз темой фоток стали городские пейзажи Урала. Но путешствия даже на свой машине это достаточно дорого, и Кеше хочется узнать цену поездки в тот или иной город заранее.

Помогите написать Инокентию программу - навигатор, который будет искать самый кратчайший путь между городами A и B и считать стоимость потраченного для путешествия бензина. Не забывайте и о том, что чтобы передвигаться между городами, необходимо заправляться в каждой промежуточной точке маршрута, включая стартовую. При этом стоит учитывать, что дороги между точками в одну сторону и в обратно не всегда равны, а также могут отсутствовать вовсе.

Вам необходимо реализовать класс Navigator, который в конструкторе принимает массив объектов с информацией о городах:

  • name - Название города
  • petrolPrice - Стоимость литра бензина в этом городе
  • paths - Массив городов где ключ это name других городов, а значение это протяженность дороги

Также в классе должен быть реализован метод buildPath, принимающий два названия города(город A и город B) и расход автомобиля в соотношении л/км. Метод должен возвращать объект, содержащий поля:

  • distance - Кратчайшее расстояние от города A до города B
  • sum - Сумма, которая будет затрачена на бензин или пораждать ошибку, если построить маршрут не удается в следствии получения некорректных входных данных или отсутствия пути из города A в город B.

Пример работы:

const cities = [
  {
    name: "Yekaterinburg",
    petrolPrice: 50.0,
    paths: {
      Chelyabinsk: 200,
      Tumen: 350,
    },
  },
  {
    name: "Perm",
    petrolPrice: 46.0,
    paths: {
      Yekaterinburg: 300,
      Chelyabinsk: 500,
      Tumen: 650,
    },
  },
  {
    name: "Chelyabinsk",
    petrolPrice: 42.45,
    paths: {
      Yekaterinburg: 400,
      Perm: 700,
      Tumen: 748,
    },
  },
  {
    name: "Tumen",
    petrolPrice: 60.45,
    paths: {
      Yekaterinburg: 9,
      Perm: 780,
      Chelyabinsk: 130,
    },
  },
];

const nav = new Navigator(cities);
nav.buildPath("Yekaterinburg", "Perm", 0.06);

/*
{
  distance: 900,
  sum: 2382.9,
},
*/

Полезные ссылки:

About

Путешествие Кеши

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published