AleksKu / unit_calc

тестовое задание

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

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

На выходе функция должна возвращать самый дешевый маршрут между населенными пунктами отправления и прибытия, в виде списка транзитных населенных пунктов (в порядке следования), а также общую стоимость проезда.

Пожалуйста, обратите внимание на то, что нас интересует не только правильность реализации алгоритма, но и общее качество кода. Код должен быть пригоден для включения в состав программного продукта. !


Решение

Для решение задачи используется алгоритм "Дейкстры".

Алгоритм можно заменить, установив его через метод TransportCalculator::setAlgorithm, например на алгоритм "Флойда-Уоршалла" или др.

Использование

Примеры выполнения в файлах: test.php и test2.php

$calc = new TransportCalculator($routes);
$calc->calc('Москва','Краснодар');

echo "маршрут:";
var_dump($calc->getPath());

echo "\n Стоимость проезда: ".$calc->getCost();

$routes - коллекция маршрутов со стоимостью, например:

$routes = [
    ['from'=>'Москва','to'=>'Самара','cost'=>2],
    ['from'=>'Москва','to'=>'Воронеж','cost'=>3],
    ...
    ];

Тесты

UnitTests - на данный момент отутствуют.

Roadmap

  • Рефакторинг
  • unit-тестирование
  • реализация других алгоритмов
  • тестирование на больших объемах данных

About

тестовое задание


Languages

Language:PHP 100.0%