0

我有以下问题:

  1. 有一个由 6 个数字组成的数组,每个数字最多两位数。
  2. Y是一个数组,其第i个元素是第一个数组的前i +1个元素的总和。
  3. 通过键盘接受数字输入。如果它与Y中的一个数字匹配,则显示一条消息;如果没有,请重新启动程序。

图表

这是我正在考虑的算法:

  • 初始化空数组 [x] & [y]
  • 6.times.map{ Random.rand(1..99) }
  • 使用每个添加数字吗?
  • 存储在数组 [y]
  • 将输入与 == 数组 [y] 进行比较
  • 如果任何实例匹配显示消息,否则重新启动

对于这个问题的任何指导或帮助,我将不胜感激。

4

2 回答 2

2
loop do
  x = Array.new(6){rand(99)}
  y = []
  x.each{|k| y.push(k + y.last.to_i)}
  y.shift
  break if y.include?(gets.to_i)
end
puts 'message'
于 2011-06-25T02:50:49.040 回答
1

这是您的问题的快速解决方案。

def check_number_in_array
  x = Array.new(6)
  y = []
  begin
    x.collect! { rand(99) }
    y.clear
    sum = 0
    x.each do |i|
      sum = sum+i
      y << sum
    end
    gets
    # The following lines are just for "debugging"
    print "x = [ "
    x.each {|i| print i, " "}
    print "]\ny = [ "
    y.each {|i| print i, " "}
    print "]\n"
  end while !y.include?($_.to_i)
  puts "Good guess!"
end
于 2011-06-25T01:01:55.590 回答