2010-10-07 4 views

Répondre

3

Vous pourriez faire:

a.select{|v| v == 1}.size 

C'est seulement une solution

+0

merci beaucoup .... – nirmal

+0

fonctionnent parfaitement: D –

1

Quelqu'un viendra probablement avec une solution plus spécialisée, mais je voudrais juste le réduire

counts = [1,3,3].reduce({}) do |acc,n| 
    acc.tap do |a| 
    a[n] ||= 0 
    a[n] += 1 
    end 
end 

counts.each {|k,v| puts "#{k} was found #{v} times"} 

(notez que robinet est ruby ​​1.9, et est backported dans activesupport)

sortie de ce sera

1 a été trouvée 1 fois
3 a été trouvée 2 fois

0

a = [1,2,3,4,5,1,2,2,3,4]

=> [1, 2, 3, 4, 5, 1 , 2, 2, 3, 4]

a.uniq.each do | i |

?> Met i.to_s + 'est apparu' + a.count (i) .to_s + '' fois

fin

1 est apparu 2 fois

2 est apparu 3 fois

3 est apparu 2 fois

4 est apparu 2 fois

5 est apparu 1 fois

=> [1, 2, 3, 4, 5]