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