我想像这样给Ruby整数输入:
12 343 12312 12312 123123 231
12 343 12312 12312 123123 243
12 343 12312 12312 123123 2123
这整个事情应该被视为一个数字,以便我可以对它们进行排序,如果有任何重复的数字,我想打印它们。应将整行视为整数,以便与其他行进行比较。我无法将输入转换为一个整数,对于它给我的每一行都是12.我怎样才能做到这一点?
答案 0 :(得分:6)
如果您想将它全部作为一个数字,请使用:
input.gsub(/\s/,'').to_i
如果您想要一组整数,请使用
input.split.map{|i| i.to_i}
答案 1 :(得分:1)
这将继续接受输入行,删除所有空格,将其转换为数字,然后将它们添加到数组中:
numbers = []
STDIN.each_line do |line|
numbers << line.gsub(/\s+/, '').to_i
end
答案 2 :(得分:0)
以下代码段将分别获取每个数字并打印出任何重复数据。要检查每一行而不是单个数字,请取消注释额外的行。
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