import itertools
import time
#memo riguardo i filtri già implementati e da implementare
# 1) eliminazione di tutte le cinquine già uscite su bari dal 1874 OK
# 2) Tutte quelle con 3-4-5 numeri in cadenza uguale. OK
# 3) Tutte quelle con 3-4-5 numeri consecutivi. OK
# 4) Tutte quelle con almeno 3 numeri pari OK
# 5) Tutte quelle con almeno 4 numeri dispari OK
# 6) Tutte quelle con 3-4-5 gemelli. OK
# 7) Tutte quelle con 3-4-5 numeri in decina uguale. OK
# 8) Tutte quelle con 3-4-5 numeri della stessa Figura. OK
# 9) Tutte quelle con 3-4-5 numeri della stessa ControFigura. OK
# 10) Tutte quelle con 3-4-5 numeri della stessa Cifra. OK
# 11) Tutte quelle con numeri di un terno delle Terzine Simmetriche distanza 30. OK anche se necessita forse di ulteriore verifica visto che non avrebbe filtrate nessuna...
# 12) Tutte quelle con i 4 numeri Radicali di ogni gruppo. OK anche se necessita forse di ulteriore verifica visto che non avrebbe filtrate nessuna...
# 13) Tutte quelle con 3 Zerati e 2 Gemelli. OK anche se necessita forse di ulteriore verifica visto che non avrebbe filtrate nessuna...
# 14) Tutte quelle con 3 Gemelli e 2 Zerati. OK anche se necessita forse di ulteriore verifica visto che non avrebbe filtrate nessuna...
# 15 Tutte quelle con 3-4-5 zerati. OK anche se necessita forse di ulteriore verifica visto che non avrebbe filtrate nessuna...
# 16) Tutte quelle con i 5 numeri più ritardati in quel momento. ANCORA DA FARE...
# 17) Tutte quelle con i 5 numeri meno frequenti in quel momento. ANCORA DA FARE...
#implementata anche la possibilità di scegliere anzichè tutti i 90 anche gruppi numerici base molto più ristretti come abs, semi abs, cf ecc...
#io a tal proposito lo testerò subito con due mie cf36 una per BARI e una per CAGLIARI... :)
file_path = "estrazioni-bari.txt"
# Creiamo un dizionario per memorizzare tutte le combinazioni estratte da Bari
formazioni_estrazioni = {}
# Apriamo il file e leggiamo le estrazioni riga per riga
with open(file_path, "r") as file:
for line in file:
# Dividiamo la riga in una lista di numeri
numeri_riga = tuple(sorted(map(int, line.strip().split(","))))
# Aggiungiamo la tupla dei numeri estratti al dizionario con la combinazione come chiave
formazioni_estrazioni[numeri_riga] = True
# Definiamo il tempo di inizio dell'esecuzione dello script
start_time = time.time()
# Definisci il gruppo numerico personalizzato di tua scelta
gruppo_numerico_personalizzato = [1, 3, 7, 8, 9, 11, 12, 13, 14, 17, 20, 25, 26, 32, 37, 38, 42, 43, 48, 49, 51, 52, 54, 58, 62, 63, 67, 69, 71, 72, 73, 76, 79, 81, 82, 89]
# Stampiamo il numero di combinazioni finali prima di applicare qualunque tipo di filtro
print("Numero di combinazioni finali prima di applicare qualunque tipo di filtro:", len(list(itertools.combinations(gruppo_numerico_personalizzato, 5))))
# Generiamo tutte le possibili combinazioni di 5 numeri nel gruppo numerico personalizzato, escludendo le combinazioni già estratte da Bari
combinazioni_finali = []
for combinazione in itertools.combinations(gruppo_numerico_personalizzato, 5):
if combinazione not in formazioni_estrazioni:
combinazioni_finali.append(combinazione)
# Stampiamo il numero di combinazioni finali dopo il filtro e un esempio di esse
print("Numero di combinazioni finali dopo il filtro 'eliminazione di tutte le c5 già uscite su bari dal 1874':", len(combinazioni_finali))
if combinazioni_finali:
print("Esempio di combinazione finale dopo il filtro 'eliminazione c5 già uscite':", combinazioni_finali[0])
# Stampiamo il tempo impiegato per generare le combinazioni
end_time = time.time()
generation_time = end_time - start_time
print("Tempo impiegato per generare le combinazioni:", generation_time, "secondi")
# Definiamo una funzione per verificare se una combinazione ha 3, 4 o 5 numeri nella stessa cadenza
def has_same_stride(combination):
cadenze = {
1: 0, 2: 0, 3: 0, 4: 0, 5: 0, 6: 0, 7: 0, 8: 0, 9: 0, 0: 0
}
# Calcoliamo la cadenza di ciascun numero nella combinazione
for num in combination:
cadenza = num % 10
cadenze[cadenza] += 1
# Controlliamo se ci sono 3, 4 o 5 numeri nella stessa cadenza
for numeri_cadenza in cadenze.values():
if numeri_cadenza >= 3:
return True
return False
# Applichiamo il filtro alle combinazioni finali
start_time = time.time()
combinazioni_finali_filtrate = [combinazione for combinazione in combinazioni_finali if not has_same_stride(combinazione)]
end_time = time.time()
# Stampiamo il numero di combinazioni finali dopo l'applicazione del filtro e il tempo impiegato
print("Numero di combinazioni finali dopo il filtro delle cadenze:", len(combinazioni_finali_filtrate))
filter_time = end_time - start_time
print("Tempo impiegato per applicare il filtro delle cadenze:", filter_time, "secondi")
# Stampiamo un esempio di combinazione finale dopo il filtro
if combinazioni_finali_filtrate:
print("Esempio di combinazione finale dopo il filtro delle cadenze:", combinazioni_finali_filtrate[0])
# Definiamo una funzione per verificare se una combinazione ha 3 numeri consecutivi
def has_consecutive_numbers(combination):
sorted_combination = sorted(combination)
for i in range(len(sorted_combination) - 2):
if sorted_combination[i] + 1 == sorted_combination[i+1] and sorted_combination[i+1] + 1 == sorted_combination[i+2]:
return True
return False
# Applichiamo il filtro alle combinazioni finali
start_time = time.time()
combinazioni_finali_filtrate_consecutivi = [combinazione for combinazione in combinazioni_finali_filtrate if not has_consecutive_numbers(combinazione)]
end_time = time.time()
# Stampiamo il numero di combinazioni finali dopo l'applicazione del filtro e il tempo impiegato
print("Numero di combinazioni finali dopo il filtro dei valori consecutivi:", len(combinazioni_finali_filtrate_consecutivi))
filter_time = end_time - start_time
print("Tempo impiegato per applicare il filtro dei valori consecutivi:", filter_time, "secondi")
# Stampiamo un esempio di combinazione finale dopo il filtro
if combinazioni_finali_filtrate_consecutivi:
print("Esempio di combinazione finale dopo il filtro dei valori consecutivi:", combinazioni_finali_filtrate_consecutivi[0])
# Modifichiamo la funzione per verificare se una combinazione ha almeno 3 numeri pari
def has_at_least_three_even_numbers(combination):
count_even = sum(1 for num in combination if num % 2 == 0)
return count_even >= 3
# Applichiamo il filtro alle combinazioni finali
start_time = time.time()
combinazioni_finali_filtrate_pari = [combinazione for combinazione in combinazioni_finali_filtrate_consecutivi if not has_at_least_three_even_numbers(combinazione)]
end_time = time.time()
# Stampiamo il numero di combinazioni finali dopo l'applicazione del filtro e il tempo impiegato
print("Numero di combinazioni finali dopo il filtro dell'eliminazione di c5 con 3 o più numeri pari:", len(combinazioni_finali_filtrate_pari))
filter_time = end_time - start_time
print("Tempo impiegato per applicare il filtro dei numeri pari:", filter_time, "secondi")
# Stampiamo un esempio di combinazione finale dopo il filtro
if combinazioni_finali_filtrate_pari:
print("Esempio di combinazione finale dopo il filtro dell'eliminazione di c5 con 3 o più numeri pari:", combinazioni_finali_filtrate_pari[0])
# Definiamo una funzione per verificare se una combinazione ha almeno 4 numeri dispari
def has_at_least_four_odd_numbers(combination):
count_odd = sum(1 for num in combination if num % 2 != 0)
return count_odd >= 4
# Applichiamo il filtro alle combinazioni finali
start_time = time.time()
combinazioni_finali_filtrate_dispari = [combinazione for combinazione in combinazioni_finali_filtrate_pari if has_at_least_four_odd_numbers(combinazione)]
end_time = time.time()
# Stampiamo il numero di combinazioni finali dopo l'applicazione del filtro e il tempo impiegato
print("Numero di combinazioni finali dopo il filtro dell'eliminazione di c5 con 4 o più numeri dispari:", len(combinazioni_finali_filtrate_dispari))
filter_time = end_time - start_time
print("Tempo impiegato per applicare il filtro dei numeri dispari:", filter_time, "secondi")
# Stampiamo un esempio di combinazione finale dopo il filtro
if combinazioni_finali_filtrate_dispari:
print("Esempio di combinazione finale dopo il filtro dell'eliminazione di c5 con 4 o più numeri dispari:", combinazioni_finali_filtrate_dispari[0])
# Definiamo una funzione per verificare se una combinazione ha 3 o più numeri gemelli
def has_three_or_more_twins(combination):
twins = [11, 22, 33, 44, 55, 66, 77, 88] # Lista dei numeri gemelli
count_twins = sum(1 for num in combination if num in twins)
if count_twins >= 3:
return True
return False
# Applichiamo il filtro alle combinazioni finali
start_time = time.time()
combinazioni_finali_filtrate_gemelli = [combinazione for combinazione in combinazioni_finali_filtrate_dispari if not has_three_or_more_twins(combinazione)]
end_time = time.time()
# Stampiamo il numero di combinazioni finali dopo l'applicazione del filtro e il tempo impiegato
print("Numero di combinazioni finali dopo il filtro delle combinazioni con 3 o più gemelli:", len(combinazioni_finali_filtrate_gemelli))
filter_time = end_time - start_time
print("Tempo impiegato per applicare il filtro dei gemelli:", filter_time, "secondi")
# Stampiamo un esempio di combinazione finale dopo il filtro
if combinazioni_finali_filtrate_gemelli:
print("Esempio di combinazione finale dopo il filtro delle combinazioni con 3 o più gemelli:", combinazioni_finali_filtrate_gemelli[0])
# Definiamo una funzione per verificare se una combinazione ha 3, 4 o 5 numeri nella stessa decina
def has_same_decade(combination):
decade_count = {}
for num in combination:
decade = num // 10
if decade in decade_count:
decade_count[decade] += 1
else:
decade_count[decade] = 1
for count in decade_count.values():
if count >= 3:
return True
return False
# Applichiamo il filtro alle combinazioni finali
start_time = time.time()
combinazioni_finali_filtrate_decade = [combinazione for combinazione in combinazioni_finali_filtrate_gemelli if not has_same_decade(combinazione)]
end_time = time.time()
# Stampiamo il numero di combinazioni finali dopo l'applicazione del filtro e il tempo impiegato
print("Numero di combinazioni finali dopo il filtro delle combinazioni con 3-4-5 numeri in decina uguale:", len(combinazioni_finali_filtrate_decade))
filter_time = end_time - start_time
print("Tempo impiegato per applicare il filtro delle combinazioni con 3-4-5 numeri in decina uguale:", filter_time, "secondi")
# Stampiamo un esempio di combinazione finale dopo il filtro
if combinazioni_finali_filtrate_decade:
print("Esempio di combinazione finale dopo il filtro delle combinazioni con 3-4-5 numeri in decina uguale:", combinazioni_finali_filtrate_decade[0])
# Definiamo le figure nel lotto
figure = {
1: [1, 10, 19, 28, 37, 46, 55, 64, 73, 82],
2: [2, 11, 20, 29, 38, 47, 56, 65, 74, 83],
3: [3, 12, 21, 30, 39, 48, 57, 66, 75, 84],
4: [4, 13, 22, 31, 40, 49, 58, 67, 76, 85],
5: [5, 14, 23, 32, 41, 50, 59, 68, 77, 86],
6: [6, 15, 24, 33, 42, 51, 60, 69, 78, 87],
7: [7, 16, 25, 34, 43, 52, 61, 70, 79, 88],
8: [8, 17, 26, 35, 44, 53, 62, 71, 80, 89],
9: [9, 18, 27, 36, 45, 54, 63, 72, 81, 90]
}
# Definiamo una funzione per verificare se una combinazione ha 3, 4 o 5 numeri della stessa figura
def has_same_figure(combination):
for figura, numeri_figura in figure.items():
count = sum(1 for num in combination if num in numeri_figura)
if count >= 3:
return True
return False
# Applichiamo il filtro alle combinazioni finali
start_time = time.time()
combinazioni_finali_filtrate_figura = [combinazione for combinazione in combinazioni_finali_filtrate_decade if not has_same_figure(combinazione)]
end_time = time.time()
# Stampiamo il numero di combinazioni finali dopo l'applicazione del filtro e il tempo impiegato
print("Numero di combinazioni finali dopo il filtro delle combinazioni con 3-4-5 numeri della stessa figura:", len(combinazioni_finali_filtrate_figura))
filter_time = end_time - start_time
print("Tempo impiegato per applicare il filtro delle combinazioni con 3-4-5 numeri della stessa figura:", filter_time, "secondi")
# Stampiamo un esempio di combinazione finale dopo il filtro
if combinazioni_finali_filtrate_figura:
print("Esempio di combinazione finale dopo il filtro delle combinazioni con 3-4-5 numeri della stessa figura:", combinazioni_finali_filtrate_figura[0])
# Definiamo le controfigure nel lotto
controfigure = {
1: [1, 12, 23, 34, 45, 56, 67, 78, 89],
2: [2, 13, 24, 35, 46, 57, 68, 79, 90],
3: [3, 11, 14, 25, 36, 47, 58, 69, 80],
4: [4, 15, 22, 26, 37, 48, 59, 70, 81],
5: [5, 16, 27, 33, 38, 49, 60, 71, 82],
6: [6, 17, 28, 39, 44, 50, 61, 72, 83],
7: [7, 18, 29, 40, 51, 55, 62, 73, 84],
8: [8, 19, 30, 41, 52, 63, 66, 74, 85],
9: [9, 20, 31, 42, 53, 64, 75, 77, 86],
10: [10, 21, 32, 43, 54, 65, 76, 87, 88]
}
# Definiamo una funzione per verificare se una combinazione ha 3, 4 o 5 numeri della stessa controfigura
def has_same_controfigure(combination):
for controfigura, numeri_controfigura in controfigure.items():
count = sum(1 for num in combination if num in numeri_controfigura)
if count >= 3:
return True
return False
# Applichiamo il filtro alle combinazioni finali
start_time = time.time()
combinazioni_finali_filtrate_controfigura = [combinazione for combinazione in combinazioni_finali_filtrate_figura if not has_same_controfigure(combinazione)]
end_time = time.time()
# Stampiamo il numero di combinazioni finali dopo l'applicazione del filtro e il tempo impiegato
print("Numero di combinazioni finali dopo il filtro delle combinazioni con 3-4-5 numeri della stessa controfigura:", len(combinazioni_finali_filtrate_controfigura))
filter_time = end_time - start_time
print("Tempo impiegato per applicare il filtro delle combinazioni con 3-4-5 numeri della stessa controfigura:", filter_time, "secondi")
# Stampiamo un esempio di combinazione finale dopo il filtro
if combinazioni_finali_filtrate_controfigura:
print("Esempio di combinazione finale dopo il filtro delle combinazioni con 3-4-5 numeri della stessa controfigura:", combinazioni_finali_filtrate_controfigura[0])
def filtro_cifra_uguale(combinazioni):
cifre = {
1: [1, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 21, 31, 41, 51, 61, 71, 81],
2: [2, 12, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 32, 42, 52, 62, 72, 82],
3: [3, 13, 23, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 43, 53, 63, 73, 83],
4: [4, 14, 24, 34, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 54, 64, 74, 84],
5: [5, 15, 25, 35, 45, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 65, 75, 85],
6: [6, 16, 26, 36, 46, 56, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 76, 86],
7: [7, 17, 27, 37, 47, 57, 67, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 87],
8: [8, 18, 28, 38, 48, 58, 68, 78, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89]
}
start_time = time.time()
combinazioni_filtrate = []
for combinazione in combinazioni:
cifre_presenti = []
for numero in combinazione:
for cifra, numeri_cifra in cifre.items():
if numero in numeri_cifra:
cifre_presenti.append(cifra)
break
if len(set(cifre_presenti)) >= 3:
continue
combinazioni_filtrate.append(combinazione)
end_time = time.time()
tempo_impiegato = end_time - start_time
return combinazioni_filtrate, tempo_impiegato
# Utilizzo del filtro
#combinazioni_dopo_filtro_cifra_uguale, tempo_filtro_cifra_uguale = filtro_cifra_uguale(combinazioni)
# Utilizzo del filtro
combinazioni_dopo_filtro_cifra_uguale, tempo_filtro_cifra_uguale = filtro_cifra_uguale(combinazioni_finali_filtrate_controfigura)
# Stampa dei risultati
print("Numero di combinazioni finali dopo il filtro delle combinazioni con 3-4-5 numeri della stessa cifra:", len(combinazioni_dopo_filtro_cifra_uguale))
print("Esempio di combinazione finale dopo il filtro delle combinazioni con 3-4-5 numeri della stessa cifra:", combinazioni_dopo_filtro_cifra_uguale[0]) # Modifica l'indice in base alla tua necessità
print("Tempo impiegato per applicare il filtro delle combinazioni con 3-4-5 numeri della stessa cifra:", tempo_filtro_cifra_uguale, "secondi")
#import time # Assicurati di importare il modulo time per utilizzare la funzione time.time()
# Definiamo le terzine simmetriche
terzine_simmetriche = [
[16, 46, 76], [6, 36, 66], [28, 58, 88], [21, 51, 81], [5, 35, 65],
[1, 31, 61], [23, 53, 83], [22, 52, 82], [2, 32, 62], [19, 49, 79],
[20, 50, 80], [24, 54, 84], [29, 59, 89], [30, 60, 90], [27, 57, 87],
[25, 55, 85], [26, 56, 86], [18, 48, 78], [9, 39, 69], [10, 40, 70],
[11, 41, 71], [4, 34, 64], [7, 37, 67], [8, 38, 68], [15, 45, 75],
[3, 33, 63], [17, 47, 77], [12, 42, 72], [13, 43, 73], [14, 44, 74]
]
# Applichiamo il filtro alle combinazioni finali
start_time = time.time()
# Creiamo una nuova lista vuota per le combinazioni finali dopo il filtro delle terzine simmetriche
combinazioni_finali_dopo_terzine = []
# Iteriamo su ogni combinazione rimanente dopo i filtri precedenti
for combinazione in combinazioni_dopo_filtro_cifra_uguale:
# Verifichiamo se la combinazione contiene almeno tre numeri appartenenti a una terzina simmetrica
has_symmetric = False
for trio in terzine_simmetriche:
count = sum(1 for num in combinazione if num in trio)
if count >= 3:
has_symmetric = True
break
# Se la combinazione non contiene una terzina simmetrica, la aggiungiamo alla lista delle combinazioni finali
if not has_symmetric:
combinazioni_finali_dopo_terzine.append(combinazione)
# Stampiamo il numero di combinazioni finali dopo l'applicazione del filtro e il tempo impiegato
print("Numero di combinazioni finali dopo il filtro delle combinazioni con terzine simmetriche:", len(combinazioni_finali_dopo_terzine))
filter_time = time.time() - start_time
print("Tempo impiegato per applicare il filtro delle combinazioni con terzine simmetriche:", filter_time, "secondi")
# Stampiamo un esempio di combinazione finale dopo il filtro
if combinazioni_finali_dopo_terzine:
print("Esempio di combinazione finale dopo il filtro delle combinazioni con terzine simmetriche:", combinazioni_finali_dopo_terzine[0])
# Definiamo la funzione filtro_numeri_radicali
def filtro_numeri_radicali(combinazioni_finali_dopo_terzine):
gruppi_radicali = {
8: [8, 80, 88, 89],
4: [4, 40, 44, 49],
7: [7, 70, 77, 79],
3: [3, 30, 33, 39],
6: [6, 60, 66, 69],
2: [2, 20, 22, 29],
1: [1, 10, 11, 19],
5: [5, 50, 55, 59]
}
combinazioni_filtrate = []
for combinazione in combinazioni_finali_dopo_terzine:
numeri_radicali_presenti = 0
for gruppo in gruppi_radicali.values():
if all(numero in combinazione for numero in gruppo):
numeri_radicali_presenti += 1
if numeri_radicali_presenti < 4:
combinazioni_filtrate.append(combinazione)
return combinazioni_filtrate
# Applichiamo il filtro numeri radicali
combinazioni_filtrate = filtro_numeri_radicali(combinazioni_finali_dopo_terzine)
# Stampiamo il numero di combinazioni finali dopo l'applicazione del filtro e il tempo impiegato
print("Numero di combinazioni finali dopo il filtro delle combinazioni radicali:", len(combinazioni_filtrate))
filter_time = time.time() - start_time
print("Tempo impiegato per applicare il filtro delle combinazioni radicali:", filter_time, "secondi")
# Stampiamo un esempio di combinazione finale dopo il filtro
if combinazioni_filtrate:
print("Esempio di combinazione finale dopo il filtro delle combinazioni radicali:", combinazioni_filtrate[0])
# 17) eliminazione di tutte le cinquine rimaste dopo i precedenti filtri con 3 Zerati e 2 Gemelli
def filtro_cinquine_zerati_gemelli(combinazioni_finali_dopo_numeri_radicali):
combinazioni_filtrate = []
for combinazione in combinazioni_finali_dopo_numeri_radicali:
count_zerati = sum(1 for num in combinazione if num % 10 == 0)
count_gemelli = sum(1 for num in combinazione if combinazione.count(num) >= 2)
if count_zerati != 3 or count_gemelli != 2:
combinazioni_filtrate.append(combinazione)
return combinazioni_filtrate
# Applichiamo il filtro delle cinquine con 3 Zerati e 2 Gemelli
combinazioni_filtrate = filtro_cinquine_zerati_gemelli(combinazioni_filtrate)
# Stampiamo il numero di combinazioni finali dopo l'applicazione del filtro e il tempo impiegato
print("Numero di combinazioni finali dopo il filtro delle combinazioni con 3 Zerati e 2 Gemelli:", len(combinazioni_filtrate))
filter_time = time.time() - start_time
print("Tempo impiegato per applicare il filtro delle combinazioni con 3 Zerati e 2 Gemelli:", filter_time, "secondi")
# Stampiamo un esempio di combinazione finale dopo il filtro
if combinazioni_filtrate:
print("Esempio di combinazione finale dopo il filtro delle combinazioni con 3 Zerati e 2 Gemelli:", combinazioni_filtrate[0])
# 18) eliminazione delle cinquine rimaste dopo i precedenti filtri con 3 Gemelli e 2 Zerati
def filtro_cinquine_gemelli_zerati(combinazioni_finali_dopo_zerati_gemelli):
combinazioni_filtrate = []
for combinazione in combinazioni_finali_dopo_zerati_gemelli:
count_gemelli = sum(1 for num in combinazione if combinazione.count(num) >= 2)
count_zerati = sum(1 for num in combinazione if num % 10 == 0)
if count_gemelli != 3 or count_zerati != 2:
combinazioni_filtrate.append(combinazione)
return combinazioni_filtrate
# Applichiamo il filtro delle cinquine con 3 Gemelli e 2 Zerati
combinazioni_filtrate = filtro_cinquine_gemelli_zerati(combinazioni_filtrate)
# Stampiamo il numero di combinazioni finali dopo l'applicazione del filtro e il tempo impiegato
print("Numero di combinazioni finali dopo il filtro delle combinazioni con 3 Gemelli e 2 Zerati:", len(combinazioni_filtrate))
filter_time = time.time() - start_time
print("Tempo impiegato per applicare il filtro delle combinazioni con 3 Gemelli e 2 Zerati:", filter_time, "secondi")
# Stampiamo un esempio di combinazione finale dopo il filtro
if combinazioni_filtrate:
print("Esempio di combinazione finale dopo il filtro delle combinazioni con 3 Gemelli e 2 Zerati:", combinazioni_filtrate[0])
# 19) eliminazione di tutte le cinquine rimaste con 3-4-5 zerati
def filtro_cinquine_zerati(combinazioni_finali_dopo_cinquine_gemelli_zerati):
combinazioni_filtrate = []
for combinazione in combinazioni_finali_dopo_cinquine_gemelli_zerati:
count_zerati = sum(1 for num in combinazione if num % 10 == 0)
if count_zerati not in [3, 4, 5]:
combinazioni_filtrate.append(combinazione)
return combinazioni_filtrate
# Applichiamo il filtro delle cinquine con 3-4-5 zerati
combinazioni_filtrate = filtro_cinquine_zerati(combinazioni_filtrate)
# Stampiamo il numero di combinazioni finali dopo l'applicazione del filtro e il tempo impiegato
print("Numero di combinazioni finali dopo il filtro delle combinazioni con 3-4-5 zerati:", len(combinazioni_filtrate))
filter_time = time.time() - start_time
print("Tempo impiegato per applicare il filtro delle combinazioni con 3-4-5 zerati:", filter_time, "secondi")
# Stampiamo un esempio di combinazione finale dopo il filtro
if combinazioni_filtrate:
print("Esempio di combinazione finale dopo il filtro delle combinazioni con 3-4-5 zerati:", combinazioni_filtrate[0])