最便宜的广场方式
#python #perl #theweeklychallenge

我总是惊讶于技术的发展。如果您在二十年前告诉我,我将在300美元(约200美元)的设备上完成这一挑战41,000英尺,我会完全嘲笑您:)

不幸的是,我与(Air Asia X)一起飞行的预算航空公司不提供WiFi,否则我也可以将这41,000英尺推向空中。

每周挑战219

abaoqian1,My solution

任务1:排序方块

任务

您有一个数字列表。

写一个脚本以使列表中的每个数字平方并返回排序列表,增加了顺序。

我的解决方案

这很简单,因此不需要太多解释。我进行输入,每个数字平方,对列表进行排序,最后打印列表。

例子

$ ./ch-1.py -2 -1 0 3 4
0, 1, 4, 9, 16

$ ./ch-1.py 5 -4 -1 3 6
1, 9, 16, 25, 36

任务2:旅行支出

任务

您有两个列表,@costs@days

列表@costs包含您可以购买的三种不同类型的旅行卡的成本。

例如@costs = (5, 30, 90)

Index 0 element represent the cost of  1 day  travel card.
Index 1 element represent the cost of  7 days travel card.
Index 2 element represent the cost of 30 days travel card.

list @days包含您想在一年中旅行的日常数。

例如:@days = (1, 3, 4, 5, 6)

上面的示例意味着您想在第1天,第3天,第4天,第5天和第6天旅行。

写一个脚本以找到最低旅行费用。

我的解决方案

对于此任务,它可以使用递归功能。对于输入,我认为前三个值是1天,7天和30天通行证的成本,并将其余的数字用于days列表。

i首先定义passes dict(perl中的哈希),其中钥匙是通行证有效的日子,值是通过的成本。我还创建了代表我要旅行的日子的travel_on列表(perl中的数组)。此列表是数字上排序的。

然后,我将使用passes dict和travel_on列表调用buy_pass函数。如果以后是空的,我不需要再购买任何通行证,因此请返回0。我循环浏览passes dict中的每个项目。我知道通行证没有覆盖的日子是第一天(即travel_on[0])加上通行证的日子。我在剩下的日子里再次致电该功能。我还跟踪最低支出,这是记录并在功能上游发送的。

例子

$ ./ch-2.py 2 7 25 1 5 6 7 9 15
11

$ ./ch-2.py 2 7 25 1 2 3 5 7 10 11 12 14 20 30 31
20