From: Justin Collins Date: 2010-11-06T02:47:19+09:00 Subject: Re: Conta occorrenze in Hash Daniel Jovanovski wrote: > 1) > procedura coppie_frequenti() che stampi l'elenco delle coppie di > parole [p1 p2] tali che nell'array la parola p1 sia immediatamente > seguita da p2 almeno 10 volte. L'output dovrebbe essere quindi qualcosa > del tipo: > > [diritto di]: 13 volte > [la legge]: 21 volte > [pu嘆 essere]: 12 volte > > Come si fa a contate le occorrenze nell'hash usando come chiave una > coppia di parole (= un array di due elementi contenente le 2 parole). > > def coppie_frequenti() > h = Hash.new(0) > File.read("cost54.txt").downcase!.each do |i| #ciclo che conta le > h[i]+= 1 #occorrenze in un file di testo. come si trasforma > in > end #ciclo che conta copie di parole > > 2) > Come posso stampare il risultato del Hash in questo modo: > 10 volte: diritti casi loro norme > 11 volte: tutela limiti lavoro > 12 volte: cittadini > 13 volte: delle alle > 14 volte: ogni tutti > 16 volte: hanno sono legge. > 19 volte: essere > 20 volte: dalla > 22 volte: repubblica alla > 27 volte: diritto > 28 volte: legge > 34 volte: della > 54 volte: art > > avvendo mi stampato questo: > 10 volte: norme > 10 volte: loro > 10 volte: diritti > 10 volte: casi > 11 volte: lavoro > 11 volte: tutela > 11 volte: limiti > 12 volte: cittadini > 13 volte: alle > 13 volte: delle > 14 volte: ogni > 14 volte: tutti > 16 volte: hanno > 16 volte: sono > 16 volte: legge. > 19 volte: essere > 20 volte: dalla > 22 volte: alla > 22 volte: repubblica > 27 volte: diritto > 28 volte: legge > 34 volte: della > 54 volte: art. > > > il cosice: > def parole_frequenti2() > h = Hash.new(0) > File.read("cost54.txt").downcase!.split(" ").each do |i| #ciclo che > conta le occorrenze in un file di testo > h[i] += 1 > end > > h.delete_if { |key,val| key.size <= 3 or val < 10} > h.sort { |key,val| key[1] <=> val[1] }.each {|key, val| puts "#{val} > volte: #{key}" } > array1=h.to_a > > n=10 > while n <= 54 > #cosa dovrei metere dentro il ciclo per ottenere il risultato??? > n+=1 > end > end > frequency = { 'alle' => 13, 'legge' => 16, 'delle' => 13, 'sono' => 16 } freq_lists = {} frequency.each do |word, freq| freq_lists[freq] ||= [] freq_lists[freq] << word end freq_lists.keys.sort.each do |freq| puts "#{freq} volte: #{freq_lists[freq].join ' '}" end Hope that helps, Justin