基于二进制打印出数字的函数

时间:2016-03-21 20:34:50

标签: ruby algorithm

我希望能够生成一个包含二进制代码中特定数字“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

非常感谢任何意见。

1 个答案:

答案 0 :(得分:1)

说明:

(1..100)是一系列数字。我们可以在其上调用.to_a将其用作数组。然后,我们选择数组中元素的元素,当三位向右移位时,逻辑上和“1”等于1.

d,e,f = zip(a,b,c)