2009-05-28 9 views
0

Je veux donner entrée entier à Ruby comme ceci:Comment puis-je convertir une ligne entière d'entrée en un entier dans Ruby?

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

devrait prendre cette chose tout comme un numéro pour que je puisse trier tous et s'il y a des chiffres répéter, je veux les imprimer. La ligne entière doit être traitée comme un entier pour la comparaison avec les autres lignes. Je ne suis pas en mesure de prendre l'entrée dans un entier, pour chacune de ces lignes il me donne 12. Comment puis-je accomplir cela?

+2

en anglais S'il vous plaît reformulent. –

+1

Dites-vous que vous voulez supprimer les espaces et ne laisser que les chiffres, alors '12 343 'devient' 12343 '? – ceejayoz

Répondre

6

Si vous voulez tout comme un numéro, il suffit d'utiliser:

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

Si vous voulez un tableau de ints, utilisez

input.split.map{|i| i.to_i} 
+0

Autant que je sache, il veut que chaque ligne soit un numéro. – Pesto

+0

Mon cerveau a cessé d'essayer d'analyser après 'dem', 'dat' et 'non'. –

1

Cela permet de garder l'acceptation des lignes d'entrée, supprimer tous les espaces , le convertir en un certain nombre, et les ajouter à un tableau:

numbers = [] 
STDIN.each_line do |line| 
    numbers << line.gsub(/\s+/, '').to_i 
end 
0

L'extrait suivant prendra chacun t Il numérote individuellement et imprime les doublons. Pour vérifier chaque ligne au lieu des numéros individuels, décommentez la ligne supplémentaire.

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 

Retours:

12 
343 
12312 
123123 
+0

u na pas compris ma question .. !! 12 231 1231 1231 212 est une entrée toute entière et 12 231 1231 1231 211 est une autre entrée , j'ai pour trier – Hick

+0

Comme je l'ai mentionné dans mon post initial, la ligne de commentaires du code lu chaque ligne d'entrée en tant que Numéro unique. Donc, tout simplement sans commentaire, cela vous donnera le comportement désiré. – ldfritz

Questions connexes