字母和数字
#python #perl #theweeklychallenge

每周挑战189

abaoqian1,My solution

任务1:更大的角色

任务

您有一个字符(a..z)和目标字符的数组。

编写一个脚本,以在给定阵列词典中发现最小的字符大于目标字符。

我的解决方案

可以解决这一挑战有两种方法。一种解决方案是通过字母表工作并在比赛中退出。这在perl中相对直接(++ab),在python中并不容易。

所以我采取的方法如下:

  1. 从输入中获取最后一个值并将其存储为target
  2. 在列表中找到大于目标的所有其他值。
  3. 对此列表进行排序
  4. 打印列表中的第一项。如果找不到项目,请打印目标。

例子

$ ./ch-1.py e m u g b
e

$ ./ch-1.py d c e f a
c

$ ./ch-1.py j a r o
r

$ ./ch-1.py d c a f a
c

$ ./ch-1.py t g a l v
v

任务2:阵列学位

任务

您的数组为2个或多个非阴性整数。

编写一个脚本以找出最小的切片,即原始数组的连续子阵列,具有给定数组的程度。

阵列的度数是阵列中元素的最大频率。

我的解决方案

对于此挑战,我创建了一个函数调用get_degree。这返回最常用的数字的频率。该函数创建一个计数每个数字频率的dict(hash),然后返回所有值的最大值。

i然后有一个双回路,可以查看数组的所有可能切片。如果切片具有所需的程度,并且我们没有解决方案或切片之和小于任何以前的解决方案,我们将此切片标记为解决方案。

i然后打印上述循环中发现的切片。

例子

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

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

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

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

$ ./ch-2.py 2 1 2 1 1
1, 2, 1, 1