# Conta occorenze in Hash

**URL:** <https://www.ruby-forum.com/t/conta-occorenze-in-hash/198699>\
**Category:** IT\
**Created:** [November 5, 2010, 6:11pm UTC](https://www.ruby-forum.com/t/conta-occorenze-in-hash/198699 "2010-11-05T18:11:10Z")\
**Posts on this page:** 1\
**Page:** 1

<div class="post-metadata">

**Author:** ![Dobai-Pataky\_BSSSSl](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/d/77aa72/32.png) [@Dobai-Pataky\_BSSSSl](https://www.ruby-forum.com/u/Dobai-Pataky_BSSSSl)\
**Post date:** [November 5, 2010, 6:11pm UTC](https://www.ruby-forum.com/t/conta-occorenze-in-hash/198699/1 "2010-11-05T18:11:10Z")

</div>

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

1. 

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
