gpt4 book ai didi

arrays - Ruby:从文件中读取整数并将它们放入数组中

转载 作者:数据小太阳 更新时间:2023-10-29 07:47:41 24 4
gpt4 key购买 nike

我有一个文件 (InputFile.txt),其中包含整数 block ,每个 block 使用 * 字符拆分。每个 block 包含一些行,每行包含三个整数,例如:

4 1233 8

2 55 11

2 4 33

*

3 5 34

2 1 44

6 5 33

*

我想读取每个 block 并将每个 block 中的整数放入二维数组中并对其进行一些处理。我找到了以下代码:

f = File.read 'InputFile.txt'
f.split('*').each do |set|
set.split.map(&:to_i)

此代码可以读取每个 block ,但我不知道如何将每个 block 放入二维数组中。例如,我尝试了 set[0][0] 并返回 4,但是当我尝试 set[0][1] 时它返回空格。谁能告诉我该怎么办?我希望看到 1233 作为第二个数字。

最佳答案

f = File.read 'InputFile.txt'
data_array = f.split('*').map do |block|
block.split(/\n+/)
.map { |e| e.split(/\s+/)
.map(&:to_i) }
.reject { |a| a.empty? }
end
# => [[[4, 1233, 8], [2, 55, 11], [2, 4, 33]],
# [[3, 5, 34], [2, 1, 44], [6, 5, 33]]]

这适用于由 * 分隔的任意数量的 blocks。并且,在每个 block 中,由任意数量的新行分隔,并且在每一行中,integer 元素由任意数量的空格分隔。

因为,每个 block 是一个,并且,每个中的三个元素分别代表source_nodedest_nodeweight,因此,要访问这些信息,您可以执行以下操作:

data_array.each_with_index do |row, index|
p "Graph: #{index}"
row.each do |inner_row|
p "source_node: #{inner_row[0]}, dest_node: #{inner_row[1]}, weight: #{inner_row[2]}"
end
p '- - -'
end

# => "Graph: 0"
# "source_node: 4, dest_node: 1233, weight: 8"
# "source_node: 2, dest_node: 55, weight: 11"
# "source_node: 2, dest_node: 4, weight: 33"
# "- - -"
# "Graph: 1"
# "source_node: 3, dest_node: 5, weight: 34"
# "source_node: 2, dest_node: 1, weight: 44"
# "source_node: 6, dest_node: 5, weight: 33"

关于arrays - Ruby:从文件中读取整数并将它们放入数组中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33458956/

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