每周挑战205
#python #perl #theweeklychallenge

abioqian0,My solution

任务1:第三高

任务

您有一个整数。

编写一个脚本以找出第三高的情况,如果发现否则返回最大值。

我的解决方案

这相对直接。从第三个示例可以明显看出,我们只关心唯一数字。我要做的第一件事是对删除非唯一数字的列表进行排序。对于Python,我使用sorted(set(n))。集合是独一无二的,并且排序将把设置返回列表。在Perl中,我使用了sort {$a <=> $b} (uniq(@n))。 uniq来自列表:: util,而{$a <=> $b}则以数值为单位。

如果列表中有三个或多个唯一值,我从末端获得第三个值并显示。如果少于3个唯一值,我将显示最后一个。

例子

$ ./ch-1.py 5 3 4
3

$ ./ch-1.py 5 6
6

$ ./ch-1.py 5 4 4 3
3

任务2:最大XOR

任务

您有一个整数。

编写一个脚本以查找通过x x x x数两个不同成员获得的最高值。

我的解决方案

在Python和Perl中,^操作员返回两个整数的XOR-ED值。像第一个任务一样,我删除了非唯一值。带有本身的数字XOR-ED将始终为零。

我敢肯定,一些聪明的团队PWC成员有一些公式来获得最有效的XOR-ED值,我只是尝试所有组合。

鉴于我们只需要比较两个值,我使用一个简单的迭代而不是诸如Itertools的组合之类的方法来产生所有可能的组合。

这是通过两个循环完成的。外循环(带有可变first)循环从0到2的循环少于阵列的长度。内部循环(称为second)循环循环比first的循环比数组的长度少一个。对于每次迭代,我在适当的位置计算两个数字的XOR-ED数。如果它大于当前的max,我设置了一个新的max值。

例子

$ ./ch-2.py 1 2 3 4 5 6 7
7

$ ./ch-2.py 2 4 1 3
7

$ ./ch-2.py 10 5 7 12 8
15