我正在处理来自代码出现的2nd programming puzzle。
我给出了尺寸列表(长x宽x高)。可能超过1000:
29x13x26
11x11x14
27x2x5
6x10x13
我想将每行的数字传递给方法:
def calc(l, w, h)
# performs some calculation
end
但我不知道如何提取数字。这就是我到目前为止所做的:
a_file = File.open("presents_size.txt", "r")
a_file.each_line("\n") do |line|
puts line
end
答案 0 :(得分:3)
line.split('x').map(&:to_i) # => [29, 13, 26]
你去,这些是你的数字(你可以繁殖或其他)。
答案 1 :(得分:1)
您可以使用scanf
库:
require 'scanf'
'29x13x26'.scanf('%dx%dx%d') #=> [29, 13, 26]
%d
匹配整数,x
匹配文字“x”。
要扫描整个文件,可以在块模式下使用scanf
:
require 'scanf'
File.open('words.txt', 'rb') do |f|
f.scanf('%dx%dx%d') do |l, w, h|
# do something with l, w, h
p l: l, w: w, h: h
end
end
输出:
{:l=>29, :w=>13, :h=>26}
{:l=>11, :w=>11, :h=>14}
{:l=>27, :w=>2, :h=>5}
{:l=>6, :w=>10, :h=>13}