Выполняем тестовое задание на вакансию "Стажёр-разработчик на JavaScript"

За неделю прочитал развлекательное чтиво на 640 страниц: Изучаем программирование на JavaScript, чтобы как-то понять как сделать тестовое задание на позицию Стажёр-разработчик на JavaScript

Скажу честно, вбивал себе в голову принципы JavaScript с особым усердием, но за неделю, конечно, этот язык программирования не узнать, но отвел себе неделю на чтение литературы и неделю на разработку. Но что-то из книги понял…

Попробую сегодня (26.09.2015) начать делать задание.

Техническое задание: Сортировщик карточек путешественников.

Условие:
Вам дана стопка посадочных карточек на различные виды транспорта, которые доставят вас из точки A в точку B. Карточки перепутаны, и вы не знаете, где начинается и где заканчивается ваше путешествие. Каждая карточка содержит информацию о том, откуда и куда вы едете на данном отрезке маршрута, а также о типе транспорта (номер рейса, номер места и прочее).

Предоставьте JavaScript API, который отсортирует такой список карточек и вернет словесное описание, как проделать ваше путешествие. API должен принимать на вход несортированный список карточек в формате придуманном вами и возвращать, например, такое описание:

  • Take train 78A from Madrid to Barcelona. Seat 45B.
  • Take the airport bus from Barcelona to Gerona Airport. No seat assignment.
  • From Gerona Airport, take flight SK455 to Stockholm. Gate 45B. Seat 3A. Baggage drop at ticket counter 344.
  • From Stockholm, take flight SK22 to New York JFK. Gate 22. Seat 7B. Baggage will be automatically transferred from your last leg.

Требования:

  • Алгоритм должен работать с любым количеством карточек, если все карточки образуют одну неразрывную цепочку.
  • Время прибытия и отправления неизвестно и не важно. Подразумевается, что средство передвижения для следующего отрезка дожидается вас.  вычеркнул, чтобы не отвлекало, нас это на данный момент не интересует.
  • Структура кода должна быть расширяема для использования любых типов транспорта и информации, которая может быть связана с каждым типом транспорта.
  • API будет вызываться из других частей JavaScript-кода без необходимости дополнительных запросов между браузером и сервером.
  • Не используйте библиотеки и фреймворки, напишите все с нуля.
  • Задокументируйте в коде формат входных и выходных данных. 

 РЕШЕНИЕ

На самом деле это не решение, а мысли вслух, т.е. переложу то что понял из книги на решение поставленной задачи.
  1. У нас есть карточки путешественников. Это некий объект информации, в котором заключена следующая информация: Пункт отправления (А), Пункт назначения (B), способ передвижения, дополнительная информация (чисто разбавить сухой текст)
  2. Мы должны сортировать ПО ПОРЯДКУ пунктов отправления и назначения. Например: A1-B1(A2)-B2(A3)-B3 и так далее.
  3. Есть несколько способов передвижения: Ноги, Машина, Городской транспорт, Поезда, Самолеты, Параходы и так далее — нужно чтобы была возможность расширять перечень
  4. У каждого способа передвижения своя специфика на каждый вид транспорта
  5. Метод сортировки по массиву объектов An и Bn.
Какие у меня будут объекты?
Города
Способы передвижения

Какие у меня будут функции?
Сортировка

Черновой вариант сортировки и вывода 

Автор: Ilya Druzhinin
Дата публикации: 2015-09-26T06:12:00.001-07:00