初学者问题:
我有这样的代码:
p true_columns
=> [["1", "88", "59"], ["2", "79", "63"], ["3", "77", "55"], ["4", "77", "59"], ["5", "90", "66"], ["6", "81", "61"], ["7", "73", "57"], ["8", "75", "54"], ["9", "86", "32*"], ["10", "84", "64"], ["11", "91", "59"], ["12", "88", "73"], ["13", "70", "59"], ["14", "61", "59"], ["15", "64", "55"], ["16", "79", "59"], ["17", "81", "57"], ["18", "82", "52"], ["19", "81", "61"], ["20", "84", "57"], ["21", "86", "59"], ["22", "90", "64"], ["23", "90", "68"], ["24", "90", "77"], ["25", "90", "72"], ["26", "97*", "64"], ["27", "91", "72"], ["28", "84", "68"], ["29", "88", "66"], ["30", "90", "45"]]
我的问题是能够将这些数据拆分成一个列表,并能够找到大集合中每个数组的第二个和第三个值之间差异的最小值/最大值。不是最干净的代码,但请耐心等待:
true_columns.each do |data|
difference = data[1].to_i - data[2].to_i
difference_string = difference.to_s.split(" ")
print difference_string
end
=> ["29"]["16"]["22"]["18"]["24"]["20"]["16"]["21"]["54"]["20"]["32"]["15"]["11"]["2"]["9"]["20"]["24"]["30"]["20"]["27"]["27"]["26"]["22"]["13"]["18"]["33"]["19"]["16"]["22"]["45"]
任何类型的 min/max/[x] 命令都将返回一些将“difference_string”减少为更基本的东西,连接原始的 difference_string。例子:
print difference_string.min
=> 2916221824201621542032151129202430202727262213183319162245
我相信这与作为 Fixnum 形式的原始变量有关,我不确定如何将其转换为一个列表,我可以用它来提取差异字符串.min 之类的东西。另外,如果有人能给我解释为什么 min/max 命令将数据简化为上述形式,那就太好了。
编辑:
作为参考,我在顶部的代码是:
file = File.open("file.dat")
columns = []
file.each_line do |line|
p line
columns << line.split(" ")[0 , 3]
end