每周挑战208
#python #perl #theweeklychallenge

abioqian0,My solutions

本周的最后一刻提交,所以这个博客将比平常更统治。

任务1:最小索引总和

任务

您有两个字符串。

编写一个脚本,以找出具有最小索引总和的给定两个阵列中的所有常见字符串。如果找不到普通字符串,则返回一个空列表。

我的解决方案

这是可能不需要优化解决方案的任务之一。我敢肯定,一些聪明的团队普华永道人有关于最佳解决方案的博客文章。

对于此任务,我从前两个参数中提取类似单词的字符串,并将其称为first_listsecond_list(是的,真的想象中的列表名称!)

然后,我将index_sum设置为一个比组合列表的长度多。这样可以确保如果我们确实找到解决方案,则index_sum将较低。

i然后在first_list上迭代,i1为索引位置,而w是该位置的单词。然后,我在second_list中检索了该单词的位置。如果出现,我会计算位置的总和,如果它的相同或小于当前的index_sum值。

python似乎没有内置的命令来获取与标准匹配的列表中的项目索引(在这种情况下为单词),因此我创建了一个称为find_index_in_list的函数来执行此操作。公平地说,perl也不是list :: moreutils做我们想要的。

例子

$ ./ch-1.py "Perl Raku Love" "Raku Perl Like"
("Perl", "Raku")

$ ./ch-1.py "A B C" "D E F"
()

$ ./ch-1.py "A B C" "C A B"
("A")

任务2:重复和丢失

任务

您有一个序列的整数,其中一个丢失和一个重复。

编写一个脚本以在给定数组中找到副本和缺少整数。返回-1如果没有找到。

为了完成此任务,让我们假设数组包含不超过一个重复和缺失。

我的解决方案

这些示例没有给我们指示没有重复的预期输出是什么,但是数字丢失,就像[1, 2, 33, 4]一样。在这种情况下,输出中的第一个值将为空白。

对于此任务,我从数组的长度迭代1,并计算具有该值的列表中的项目数。如果没有,我设置了missing值。如果有超过1,我设置了duplicate值。

最后,我按照示例中提供的输出打印。

例子

$ ./ch-2.py 1 2 2 4
(2, 3)

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

$ ./ch-2.py 1 2 3 3
(3, 4)

$ ./ch-2.py 1 2 3 33
(, 4)