在Ruby中生成序列

时间:2018-12-08 19:03:45

标签: ruby

我想从用户那里获取一个整数,并生成一个以给定整数开头的五个数字的序列,然后使用迭代将每个先前的数字乘以四。例如,如果我输入2,则列表应为[2, 8, 32, 128, 512]

n = gets
i = 0
while i < 4
  n = n * 4
  p n
  i = i + 1
end

3 个答案:

答案 0 :(得分:0)

我不确定您是要创建一个数字数组以供以后使用还是要迭代。在下面的内容中,您可以用任何想要的内容替换puts备忘录,备忘录将包含您要查找的每个通行证的值。

s = 2 
(s...(s+5)).reduce(s) do |memo, i| 
    puts memo
    memo = memo * 4 
end

答案 1 :(得分:0)

运行:

<Switch>
  <div className="someclass">  
    <Header />
    <Route exact path='users' component={Users} />
    <Footer />
  </div>
  <Route component={NotFound} /> . ** This also doesn't work here **
</Switch>

输入:

(5 - 1).times.with_object([gets.to_i]){|i, a| a.push(a.last * 4)}

返回值:

2

答案 2 :(得分:-1)

有很多方法可以完成您所描述的内容。评论中和@Abhimanyu的其他答案中已经有一些实现。

  

我遇到的麻烦是迭代序列的值。我一直把它当作[2,2,2,2,2]

您的代码示例将不起作用,因为Kernel#gets不会返回数字,而是一个String后跟一个换行符(因为它使用了默认变量,它与全局变量{{1 }},恰好是$/

"\n"

要修复您的代码段,您需要添加[1] pry(main)> gets 2 => "2\n" [2] pry(main)> gets.class 2 => String 来删除换行符并将其转换为整数:

.chomp.to_i