每周挑战188
#python #perl #theweeklychallenge

abioqian0,My solution

任务1:可划分对

任务

您将获得尺寸$n和divisor $k的整数@list列表。

编写一个脚本以找出满足以下规则的给定列表中的对计数。

当且仅当

时,这对(i,j)才有资格
  1. 0 <= i < j < len(list)
  2. list[i] + list[j]k

我的解决方案

这似乎相对直接。由于列表是Python中的一个保留单词,因此我将nums用于Python版本。为此,我从matches的值开始为零。我使用POP函数从输入中取出最后一个数字,然后将其存储为k

对于i迭代器,我从零开始,在第二个最后一个数字上结束。对于j迭代器,我从i+1开始,然后在最后一个位置结束。如果相关位置的数字除以k,我会增加matches。然后打印结果。

我知道有些聪明的鸡蛋将使用地图,这可能会更快一些。在这些挑战的情况下,有时我会使代码更容易理解超速。

例子

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

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

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

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

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

任务2:总零

任务

您有两个正整数$x$y

编写一个脚本以找出使零零的操作数量。每个操作都是由以下组成的:

  • $x = $x - $y如果$x >= $y
  • $y = $y - $x如果$y >= $x(使用$x的原始值)

我的解决方案

这一挑战的最困难部分是了解所需的内容。特别是“使用$ x的原始值”。我认为这是指提供的$ x的价值,但是很明显,在此特定迭代中,这意味着$ x。

以此为止,代码变得直接。我有一个名为count的值,从0开始,一个循环一直持续到xy为0。

对于每次迭代,我将一个添加到count值中。如果x更大,我会服用y,同样,如果y是Grexater,则我将x从中取出。如果xy相同,我将它们都设置为零,因为我们知道从每个值中获取另一个值会导致此。

例子

$ ./ch-2.py 5 4
5

$ ./ch-2.py 4 6
3

$ ./ch-2.py 2 5
4

$ ./ch-2.py 3 1
3

$ ./ch-2.py 7 4
5