-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathdizionari.py
92 lines (76 loc) · 2.21 KB
/
dizionari.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
import time
from minuscole import ruota_parola
def istogramma(stringa):
d = dict()
for c in stringa:
d[c] = d.get(c, 0) + 1
return d
def stampa_isto(isto):
for item in isto:
print(item, isto[item])
def lookup_inverso(dict, value):
for key in dict:
if dict[key] == value:
return key
raise LookupError('Il valore non compare nel dizionario')
def inverti_diz(diz):
inverso = dict()
for chiave in diz:
valore = diz[chiave]
inverso.setdefault(valore, []).append(chiave)
return inverso
def fibonacci(n):
if n == 0:
return 0
elif n == 1:
return 1
else:
return fibonacci(n - 1) + fibonacci(n - 2)
memo = {0:0, 1:1}
def memo_fibonacci(n):
if n in memo:
return memo[n]
res = memo_fibonacci(n - 1) + memo_fibonacci(n - 2)
memo[n] = res
return res
"""start = time.time()
fibonacci(42)
print("Per calcolare fibonacci(42) sono passati ", time.time() - start, " secondi")
second_start = time.time()
memo_fibonacci(42)
print("Per calcolare memo_fibonacci(42) sono passati ", time.time() - second_start, " secondi")"""
def controlla(stringa):
inputfile = open('words.txt')
dizionario = dict()
for riga in inputfile:
parola = riga.strip()
dizionario[parola] = 'inserted'
if stringa in dizionario:
return True
else:
return False
def ha_duplicati(lista):
incontrati = {}
for elemento in lista:
if elemento in incontrati:
return True
incontrati[elemento] = 'inserted'
return False
def rotazioni(parola):
"""La funzione ruotabili prende una stringa come input
e produce come output un dizionario contenente tutte le
possibili stringhe generate dalla rotazione della stringa
per un intero n compreso tra 1 e 25"""
rotazioni = {}
for numero in range(1, 26):
rotazioni[ruota_parola(parola, numero)] = True
return rotazioni.keys()
def coppie_ruotabili(elenco):
diz = {}
for parola1 in elenco:
lista = []
for parola2 in elenco:
if parola2 in rotazioni(parola1):
lista.append(parola2)
diz[parola1] = lista
return diz