ThoughtWorks2018校园招聘作业题目--出租车

前几天在讨论区看到牛友分享的自己的春招题目,我也想来分享一下自己做过的校园招聘作业题目,附带答案哦~
说明:

* 作业提交截止时间:101712:00

* 可以选用擅长的语言完成,例如CC++JavaC#JavascriptPythonScala

* 可以使用第三方库简化代码(如日期,时间、集合操作等)

* 作业的输⼊和输出必须和题目的测试用例输出严格一致

* 作业完成后必须附上 Readme 纯⽂本文档(推荐使用 markdown 排版)

* Readme文档中应描述如何运行单元测试或主程序来证明作业的正确性(至少针对测试⽤用例输入能够得到对应输出)

家庭作业部分

在未来,出租汽车公司已经采用自动驾驶汽车来开展出租车业务。哒哒出行就是这样一家公司,为了提⾼用户体验,公司需要设计一款软件来统计提醒车辆保养情况。汽车保养分为每一万公里保养和定期保养两种,另外汽车除保养之外,达到一定条件,则会进入报废。

1万公里保养提醒则如下:

* 汽车每跑1万公里()就要保养一次,距离1万公里还差500公里()的时候就要开始提醒

* 为了简化规则,不需考虑未及时保养或者重复保养的场景,以及不需考虑上次实际保养时间和大修时间

定期保养提醒规则如下:

* 3年以下⻋辆每12个月定期保养一次

* 3年及以上⻋每6个月定期保养一次

* 若车辆有大修,则每3个月就需要定期保养一次

* 定期保养全部提前一个月开始提醒,直到需要保养的那天()为止

* 在计算月份时,只需考虑月份,不需考虑日期,如0731日和81日之间也差一个月,在计算年份时,只需要考虑年份,不需考虑月和日,如20161231日和201711日也认为相差一年。

* 为了简化规则,不需考虑未及时保养或者重复保养的场景,以及不需考虑上次实际保养时间和大修时间

车辆报废规则如下:

* 一般车辆6年(据购买日期加6*365=2190天)开始报废

* 若车辆有大修,报废年限降为3年(据购买日期加3*365=1095天)

* 报废车辆提前一个月开始提醒(提前一个月提醒,不需要考虑日,比如 0328日 车辆报废,那么 0201日 即可开始提醒)

注意:

* 如果车辆已经开始提醒报废或已经报废,则无需保养

* 如果车辆同时需要每1万公里保养和定期保养,则按每1万公里保养计

 

请编写程序,提醒公司相关人员需要保养和报废的车辆。

 

程序输⼊为字符串,其格式严格规定如下:

* 文本的第一行表示提交日期,识别车辆状况时以该日期作为当前日期。该行格式

SubmitDate: {提交日期 yyyy-MM-dd} ,如 SubmitDate: 2030/09/01

* 随后每一行代表一辆汽车。汽车的各种信息使用 | 字符进行分隔,其排列顺序为

{车牌号}|{购买日期}|{品牌名称}|{目前运行公里数}|{有无大修}

* 购买日期的格式为 yyyy/MM/dd (如 2026/02/18 );

* 目前运行公里数为整数,不带有除数字之外的其他符号;

* 有无大修的格式为 'T' 或者 'F' ,前者表示有大修,后者表示无大修;

范例:

SubmitDate: 2030/09/01

CAR0001|2025/04/05|Porsche|10000|F

CAR0002|2029/10/14|Porsche|9000|F

CAR0003|2026/08/17|Porsche|13000|F

CAR0004|2027/11/01|BYD|23000|T

CAR0005|2027/01/11|BYD|19500|F

CAR0006|2029/07/01|Audi|10001|T

CAR0007|2028/04/19|Ford|9800|F

CAR0008|2027/07/10|Ford|15000|T

CAR0009|2024/10/22|Ford|90300|F

程序输出:

* 对于前面的输入,相应的输出范例为:

Reminder

==================

* Time-related maintenance coming soon...

Audi: 1 (CAR0006)

Porsche: 1 (CAR0002)

* Distance-related maintenance coming soon...

BYD: 1 (CAR0005)

Ford: 1 (CAR0007)

Porsche: 1 (CAR0001)

* Write-off coming soon...

BYD: 1 (CAR0004)

Ford: 1 (CAR0009)

其中

* Time-related maintenance 指需要提醒定期保养的车辆

* Distance-related maintenance 指需要提醒每1万公里保养的车辆

* Write-off 指需要提醒报废的车辆

* 每一组中的车辆按照品牌升序排序(品牌第一个字母均为大写)

 

测试用例一

输⼊

SubmitDate: 2030/09/01

CAR0001|2025/04/05|Porsche|10000|F

CAR0002|2029/10/14|Porsche|9000|F

CAR0003|2026/08/17|Porsche|13000|F

CAR0004|2027/11/01|BYD|23000|T

CAR0005|2027/01/11|BYD|19500|F

CAR0006|2029/07/01|Audi|10001|T

CAR0007|2028/04/19|Ford|9800|F

CAR0008|2027/07/10|Ford|15000|T

CAR0009|2024/10/22|Ford|90300|F

输出

Reminder

==================

* Time-related maintenance coming soon...

Audi: 1 (CAR0006)

Porsche: 1 (CAR0002)

 

* Distance-related maintenance coming soon...

BYD: 1 (CAR0005)

Ford: 1 (CAR0007)

Porsche: 1 (CAR0001)

 

* Write-off coming soon...

BYD: 1 (CAR0004)

Ford: 1 (CAR0009)

 

测试用例二

输入

SubmitDate: 2050/05/01

CAR0001|2044/05/01|Volkswagen|65535|F

CAR0002|2044/05/03|BMW|100001|F

CAR0003|2047/05/02|Mercedes-Benz|37789|T

CAR0004|2047/05/03|Honda|59908|T

CAR0005|2049/12/10|Peugeot|49999|F

CAR0006|2046/11/15|Jeep|2000|F

CAR0007|2046/11/16|Jeep|5000|F

 

输出

Reminder

==================

 

* Time-related maintenance coming soon...

Jeep: 2 (CAR0006, CAR0007)

 

* Distance-related maintenance coming soon...

Peugeot: 1 (CAR0005)

 

* Write-off coming soon...

BMW: 1 (CAR0002)

Honda: 1 (CAR0004)

#春招##笔试题目#
全部评论
你好,请问你这道题的答案还在吗?
1 回复
分享
发布于 2018-07-22 15:18

相关推荐

点赞 16 评论
分享
牛客网
牛客企业服务