奇数二进制字符串
#python #perl #theweeklychallenge

每周挑战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

如示例所示,找到每个字符串的差阵列。然后挑选奇数。

我的解决方案

此任务可以分为三个子任务:

  1. 创建一个称为letter_map的dict(hash in perl),该dict(hash in perl)将字母的字母映射到整数,letter_map['a']为0,而letter_map['z']为25。
  2. 将每个单词转换为差异的空间分离值。因此,adc转换为3 -1。有了这些信息,我有一个occurrences duct键是转换的字符串,值是匹配该模式的单词的列表。
  3. 计算仅具有一个值的occurrences中值的数组unique_words。如果只有一个唯一的单词,我会显示。如果没有,我会显示错误。

例子

$ ./ch-2.py adc wzy abc
abc

$ ./ch-2.py aaa bob ccc ddd
bob