gpt4 book ai didi

ruby - 使用 Ruby 搜索矩阵

转载 作者:太空宇宙 更新时间:2023-11-03 17:49:11 25 4
gpt4 key购买 nike

我有一个这样的矩阵:

0 1 0 0 1 0
1 0 1 0 1 0
0 1 0 1 0 0
0 0 1 0 1 1
1 1 0 1 0 0
0 0 0 1 0 0

我如何在 Ruby 中定义一个矩阵,然后在其中进行搜索?

我想编写一个程序来搜索所有行并返回总和为“1”的最高行。

最佳答案

在 Ruby 中定义矩阵的快速方法:

Array.new 6, Array.new(6, 0)
# => [
[0, 0, 0, 0, 0, 0],
[0, 0, 0, 0, 0, 0],
[0, 0, 0, 0, 0, 0],
[0, 0, 0, 0, 0, 0],
[0, 0, 0, 0, 0, 0],
[0, 0, 0, 0, 0, 0]
]

上面的代码初始化了一个包含 6 个项目的数组,并将它们的值默认为第二个参数,这是另一个包含 6 个项目且默认值为 0 的数组。

在其他命令式语言中,您将使用嵌套循环:

matrix = []
for x in [0,1,2,3,4,5]
for y in [0,1,2,3,4,5]
matrix[x] ||= [] # create the row as an empty array
matrix[x] << y # push the y value to it
end
end
# matrix is now:
# => [
[0, 1, 2, 3, 4, 5],
[0, 1, 2, 3, 4, 5],
[0, 1, 2, 3, 4, 5],
[0, 1, 2, 3, 4, 5],
[0, 1, 2, 3, 4, 5],
[0, 1, 2, 3, 4, 5]
]

搜索矩阵并找到总和最大的行:

greatest_sum_row_index = 0
greatest_sum = 0

matrix.each_with_index do |row, i|
# row.inject(:+) is a shortcut to adding each int in the array and returning the sum
sum = row.inject(:+)
if sum > greatest_sum
greatest_sum = sum
greatest_sum_row_index = i
end
end

# highest_row is now the index of the greatest sum row
matrix[greatest_sum_row_index] # returns the row with the greatest sum

关于ruby - 使用 Ruby 搜索矩阵,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28097499/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com