如何将整行输入转换为Ruby中的整数?
问题描述:
我想给整数输入到Ruby这样的:如何将整行输入转换为Ruby中的整数?
12 343 12312 12312 123123 231
12 343 12312 12312 123123 243
12 343 12312 12312 123123 2123
这整个事情应该被视为一个号码,以便我可以排序所有这些,如果有任何重复的数字我想打印出来。整行应作为一个整数与其他行进行比较。我无法将输入转换为一个整数,对于其中的每一行,我都能得到12.我该如何实现?
答
如果你想这一切为一个号码,只需使用:
input.gsub(/\s/,'').to_i
如果你想int数组,使用
input.split.map{|i| i.to_i}
+0
尽我所知,他希望每一行都是一个数字。 – Pesto 2009-05-28 17:55:05
答
这将继续接受输入的线路,移除所有的空格,将其转换为数字,然后将它们添加到数组中:
numbers = []
STDIN.each_line do |line|
numbers << line.gsub(/\s+/, '').to_i
end
答
以下片段将采用每个t他单独编号并打印出任何重复项目。要检查每行而不是单个数字,请取消注释额外的行。
str = <<STRING
12 343 12312 12312 123123 231
12 343 12312 12312 123123 243
12 343 12312 12312 123123 2123
STRING
nums = str.split(/\s/m).collect {|i| i.to_i}
#nums = str.gsub(/ /,'').collect {|i| i.to_i}
uniq_nums = nums.uniq.sort
uniq_nums.each do |uniq|
puts uniq if nums.find_all {|num| uniq == num}.length > 1
end
返回:
12
343
12312
123123
请用英文改写。 – 2009-05-28 17:26:22
你是说你想把空格去掉,只留下数字,所以'12 343'变成'12343'? – ceejayoz 2009-05-28 17:28:06