我希望能够生成一个包含二进制代码中特定数字“x”的数字列表。
例如,4(0100)是5(0101),6(0110)和7(0111)的一部分,但不是8(1000)。
我想创建一个接受参数“n”的函数,即8,并编译一个在其中使用“n”的说1..1000之间的所有数字的列表。
像8 9 10 11 12 13 14 15 24 25 26 ......
看起来模式类似于(从“n”开始)打印下一个“n”数字跳过下一个“n”数字,然后打印下一个“n”然后跳过下一个“n”。
有一种简单的方法可以使这项工作吗?
对于1(0001),它很容易就像:
(1..1000).each do |x|
puts x if x % 2 == 1
end
然而,对于较大的数字,它似乎并不那么简单。
我在思考(包含伪代码)的内容:
def binary_count(n)
(n..1000).each do |x|
#pseudo code
next n.each do |y|
puts x
end
skip next n
repeat
end
end
非常感谢任何意见。
答案 0 :(得分:1)
说明:
(1..100)是一系列数字。我们可以在其上调用.to_a将其用作数组。然后,我们选择数组中元素的元素,当三位向右移位时,逻辑上和“1”等于1.
d,e,f = zip(a,b,c)