我想給整數輸入到Ruby這樣的:如何將整行輸入轉換爲Ruby中的整數?
12 343 12312 12312 123123 231
12 343 12312 12312 123123 243
12 343 12312 12312 123123 2123
這整個事情應該被視爲一個號碼,以便我可以排序所有這些,如果有任何重複的數字我想打印出來。整行應作爲一個整數與其他行進行比較。我無法將輸入轉換爲一個整數,對於其中的每一行,我都能得到12.我該如何實現?
我想給整數輸入到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}
盡我所知,他希望每一行都是一個數字。 – 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