每周挑战220
这是我连续第二周完成任务,并在空中写了40,000英尺以上的博客。
abaoqian1,My solution
任务1:常见字符
任务
您有一个单词列表。
写一个脚本以返回给定列表的每个单词中找到的常见字符列表(按字母顺序排序)。
我的解决方案
这些是我采取的步骤。
- 从
words
的列表(perl中的数组)中,我创建了一个名为set_list
的列表。每个项目都是每个单词中出现的下部案例字母的集合(hash)。在python中,这是使用set(word)
实现的,因为字符串是一个觉得的。在perl中,我有一个称为word_to_hash
的函数,因为它似乎太多了,无法将其塞入单个地图语句中。 - 我从
set_list
中摘下第一个单词,然后将其分配给first_word
变量。 - 我在字母内循环遍历每个字母。
- 我检查了这封信的确是英语字母的一封信,并且在
set_list
列表中的所有单词中都出现。如果是,我将其附加到letters
列表。 - 最后,我在字母列表中打印项目。
例子
$ ./ch-1.py Perl Raku Rust
r
$ ./ch-1.py love live leave
e, l, v
任务2:正方形
任务
您有一个整数,@ints
。
如果相邻元素的总和是一个完美的正方形,则阵列是正方形的。
编写一个脚本以找到平方的给定数组的所有排列。
我的解决方案
我使用Python的itertools和Perl的Algorithm::Combinatorics的置换函数而不是重新发明一些完美的轮子,以通过所有可能的排列来工作。如果我们已经有了这些数字的解决方案(例如重复的数字),我们会跳到下一个排列。
然后,i的内部循环比我们拥有的整数数量少于1到一个。我检查该位置的值和以前的位置是一个完美的正方形。这是通过计算两个数字总和的平方根来完成的,并且检查它等于整数。
例子
$ ./ch-2.py 1 17 8
(1, 8, 17), (17, 8, 1)
$ ./ch-2.py 2 2 2
(2, 2, 2)