sasakocic/trip-sorter

旅行排序器

安装: 5

依赖项: 0

建议者: 0

安全: 0

星标: 0

关注者: 2

分支: 0

开放问题: 0

类型:项目

2.0.1 2021-04-20 20:28 UTC

This package is not auto-updated.

Last update: 2024-09-19 05:03:23 UTC


README

Build Status Code Style Status CodeCov CodeClimate Issue Count Issue Count

任务

你有一堆代表不同交通工具的登机牌,这些交通工具将带你在途中经过多个站点从A点到B点。所有的登机牌都是乱的,你也不知道旅程从哪里开始,到哪里结束。每个登机牌都包含座位分配和交通工具的信息(如航班号、公交车号等)。编写一个API,让你能够对这个列表进行排序,并呈现完成旅程的描述。例如,API应该能够接受一个未排序的登机牌集合,该集合以你定义的格式提供,并生成此列表

  1. 乘坐从马德里到巴塞罗那的78A列车。坐在45B座位上。
  2. 从巴塞罗那乘坐机场巴士到热诺亚机场。没有座位分配。
  3. 从热诺亚机场,乘坐SK455航班到斯德哥尔摩。登机口45B,座位3A。行李在344号票务柜台办理托运。
  4. 从斯德哥尔摩,乘坐SK22航班到纽约JFK。登机口22,座位7B。行李将自动从上一程转接。
  5. 你已到达最终目的地。

列表应以与输入格式兼容的格式定义。API将是一个内部PHP API,因此它将仅与其他PHP应用程序的部分进行通信,而不是服务器到服务器或服务器到客户端。使用PHP文档来记录API接受的输入和返回的输出。

假设

  • 由于结果只有一个列表,我假设输入只接收特定旅程的登机牌,我们只需要对它们进行排序。
  • 为了涵盖所有输出变体而不引入人工智能,我将假设卡片上写着“坐在45B座位上。”或“没有座位分配。”的字样。如果有座位字段,则视为另一种情况。

安装

使用Composer安装

composer install

测试

可以从根目录运行以下命令来执行测试

composer run tests

用法

输入是以下格式的数组

$cards = [
  ['from' => 'Madrid', 'to' => 'Barcelona', 'type' => 'train', 'number' => '78A', 'info' => 'Sit in the seat 45B.'],
  ['from' => 'Barcelona', 'to' => 'Gerona Airport', 'type' => 'airport bus', 'number' => '', 'info' => 'No seat assignment.'],
  ['from' => 'Gerona Airport', 'to' => 'Stockholm', 'type' => 'flight', 'number' => 'SK455', 'seat' => '3A', 'info' => 'Gate 45B, seat 3A. Baggage drop at ticket counter 344.'],
  ['from' => 'Stockholm', 'to' => 'New York JFK', 'type' => 'flight', 'number' => 'SK455', 'seat' => '7B', 'info' => 'Gate 22. Baggage will we automatically transferred from your last leg.'],
];
$result = TripSorter::sort($cards);

结果是字符串数组

  1. 乘坐从马德里到巴塞罗那的78A列车。坐在45B座位上。
  2. 从巴塞罗那乘坐机场巴士到热诺亚机场。没有座位分配。
  3. 从热诺亚机场,乘坐SK455航班到斯德哥尔摩。登机口45B,座位3A。行李在344号票务柜台办理托运。
  4. 从斯德哥尔摩,乘坐SK22航班到纽约JFK。登机口22,座位7B。行李将自动从上一程转接。
  5. 你已到达最终目的地。

贡献

有关详细信息,请参阅CONTRIBUTING

许可

有关更多信息,请参阅许可文件