Как я могу преобразовать всю строку ввода в целое число в Ruby? - PullRequest
0 голосов
/ 28 мая 2009

Я хочу дать целочисленный ввод Ruby следующим образом:

12 343 12312 12312 123123 231
12 343 12312 12312 123123 243
12 343 12312 12312 123123 2123

Вся эта вещь должна быть взята как число, чтобы я мог отсортировать все из них, и если есть повторяющиеся числа, я хочу их напечатать. Вся строка должна рассматриваться как целое число для сравнения с другими строками. Я не могу взять ввод в одно целое число, для каждой из этих строк он дает мне 12. Как я могу это сделать?

Ответы [ 3 ]

6 голосов
/ 28 мая 2009

Если вы хотите, чтобы все это было одним числом, просто используйте:

input.gsub(/\s/,'').to_i

Если вы хотите получить массив целых чисел, используйте

input.split.map{|i| i.to_i}
1 голос
/ 28 мая 2009

Это будет принимать строки ввода, удалять все пробелы, преобразовывать их в числа и добавлять их в массив:

numbers = []
STDIN.each_line do |line|
  numbers << line.gsub(/\s+/, '').to_i
end
0 голосов
/ 28 мая 2009

В следующем фрагменте каждого номера будут взяты по отдельности и распечатаны все дубликаты. Чтобы проверить каждую строку вместо отдельных номеров, раскомментируйте дополнительную строку.

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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...