Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby 我如何循环一组数字,进行一些加法和附加到数组中?_Ruby_Arrays_Loops_While Loop_Append - Fatal编程技术网

Ruby 我如何循环一组数字,进行一些加法和附加到数组中?

Ruby 我如何循环一组数字,进行一些加法和附加到数组中?,ruby,arrays,loops,while-loop,append,Ruby,Arrays,Loops,While Loop,Append,我的目标是创建一个数组,其中包含一组骰子上2个数字的每个组合的总和。我正在创建一个循环的开始,在执行die1[1]+die2[0..5]之前,将die1[0]添加到die2[0..5]中 我有下面的代码,我做错了什么。我希望能够调用数组中的特定数字,例如dieSums[4],并获得一个数字。知道我在这里做错了什么吗 die1 = [1,2,3,4,5,6] die2 = [1,2,3,4,5,6] dieSums = [] count = 0 while count <= 5 do

我的目标是创建一个数组,其中包含一组骰子上2个数字的每个组合的总和。我正在创建一个循环的开始,在执行
die1[1]+die2[0..5]
之前,将
die1[0]
添加到
die2[0..5]

我有下面的代码,我做错了什么。我希望能够调用数组中的特定数字,例如
dieSums[4]
,并获得一个数字。知道我在这里做错了什么吗

die1 = [1,2,3,4,5,6] 
die2 = [1,2,3,4,5,6]

dieSums = []

count = 0
while count <= 5 do   
  dieSums << die1[0] + die2[count]   
  count += 1   
  puts dieSums[5]    
end
die1=[1,2,3,4,5,6]
die2=[1,2,3,4,5,6]
dieSums=[]
计数=0

当count调用时,将dieSums[5]
放入循环中
dieSums[5]
直到最后一次迭代才存在。如果您在循环外调用它,它将起作用:

die1 = [1,2,3,4,5,6] 
die2 = [1,2,3,4,5,6]

dieSums = []

count = 0
while count <= 5 do   
  dieSums << die1[0] + die2[count]   
  count += 1
end

puts dieSums[5] #=> 7
die1=[1,2,3,4,5,6]
die2=[1,2,3,4,5,6]
dieSums=[]
计数=0

while countA
while
loop,正如您所写的,并不是很鲁比诺。(Rubinic?)迭代数组元素的更惯用方法:

#!/usr/bin/ruby

die1 = [1,2,3,4,5,6]
die2 = [1,2,3,4,5,6]

dieSums = []

die1.each do |d1|
    die2.each do |d2|
        dieSums << d1 + d2
    end
end
puts dieSums[5]
#/usr/bin/ruby
die1=[1,2,3,4,5,6]
die2=[1,2,3,4,5,6]
dieSums=[]
die1.每个do | d1|
die2.每个人都做d2|

dieSums作为旁注:注意你把问题复杂化了(因为你用命令式的术语思考,请看一看)。两个骰子的所有可能值之和:

>> die = [1,2,3,4,5,6]
>> die.product(die).map { |v1, v2| v1 + v2 }
=> [2, 3, 4, 5, 6, 7, 3, 4, 5, 6, 7, 8, 4, 5, 6, 7, 8, 9, 5, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 11, 7, 8, 9, 10, 11, 12]
  • 如果不希望重复值,请在末尾调用
    uniq
  • 如果您不关心订单,请使用
    重复组合(2)
    而不是
    产品
  • 请注意,
    die.product(die)
    =
    die.repeated\u置换(2)
找到N个骰子的所有和几乎一样简单:

>> die.repeated_permutation(5).map { |values| values.inject(:+) }

我是个笨蛋。我还没到,但感谢你对如何编写干净ruby的见解!用4个空格(或制表符?)缩进也不是很像ruby;)@d11wtq,呵呵,没错,但我不能忍受两个空格缩进:嵌套的差异太微妙了。当我在已经有两个空格的项目中工作时,我坚持使用两个空格,但我一直在抱怨。我一直在寻找一种在Ruby中实现列表理解的机制,但认为大多数机制看起来都很糟糕。鉴于Ruby不支持更简单的列表理解,这几乎是最佳的。