普通正方形
#python #perl #theweeklychallenge

每周挑战220

这是我连续第二周完成任务,并在空中写了40,000英尺以上的博客。

abaoqian1,My solution

任务1:常见字符

任务

您有一个单词列表。

写一个脚本以返回给定列表的每个单词中找到的常见字符列表(按字母顺序排序)。

我的解决方案

这些是我采取的步骤。

  1. words的列表(perl中的数组)中,我创建了一个名为set_list的列表。每个项目都是每个单词中出现的下部案例字母的集合(hash)。在python中,这是使用set(word)实现的,因为字符串是一个觉得的。在perl中,我有一个称为word_to_hash的函数,因为它似乎太多了,无法将其塞入单个地图语句中。
  2. 我从set_list中摘下第一个单词,然后将其分配给first_word变量。
  3. 我在字母内循环遍历每个字母。
  4. 我检查了这封信的确是英语字母的一封信,并且在set_list列表中的所有单词中都出现。如果是,我将其附加到letters列表。
  5. 最后,我在字母列表中打印项目。

例子

$ ./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)