每周挑战193
abaoqian1,My solutions
本周两个相对直接的任务,所以评论不像往常一样多。
任务1:二进制字符串
任务
您有一个整数,$n
> 0。
编写一个脚本以查找大小$n
的所有可能的二进制数。
我的解决方案
值得庆幸的是,Python和Perl都提供了简单的方法,可以将A(基本10)整数转换为带有领先零的二进制编号。对于带有y
领先零的整数x
,我们可以在python中使用format(x, '0yb')
,而sprintf('%0yb', x)
则可以在perl中使用。
以此为止,我们知道所有二进制数字都可以从0到2 n -1之间的整数转换。
例子
$ ./ch-1.py 2
00, 01, 10, 11
$ ./ch-1.py 3
000, 001, 010, 011, 100, 101, 110, 111
任务2:奇数字符串
任务
您获得了相同长度的字符串列表,@s
。
写一个脚本以在给定列表中找到奇数。使用以0
开头的字母的位置值,即a = 0, b = 1, ... z = 25
。
如示例所示,找到每个字符串的差阵列。然后挑选奇数。
我的解决方案
此任务可以分为三个子任务:
- 创建一个称为
letter_map
的dict(hash in perl),该dict(hash in perl)将字母的字母映射到整数,letter_map['a']
为0,而letter_map['z']
为25。 - 将每个单词转换为差异的空间分离值。因此,
adc
转换为3 -1
。有了这些信息,我有一个occurrences
duct键是转换的字符串,值是匹配该模式的单词的列表。 - 计算仅具有一个值的
occurrences
中值的数组unique_words
。如果只有一个唯一的单词,我会显示。如果没有,我会显示错误。
例子
$ ./ch-2.py adc wzy abc
abc
$ ./ch-2.py aaa bob ccc ddd
bob