codyssi_2025/03_supplies_in_surplus/part3.py

70 lines
2.4 KiB
Python

import data
# splitto la lista data per togliere gli spazi e gli "a capo"
split = data.l.splitlines()
# aggiungo una variabile per sommare i range
somma = 0
# aggiungo una variabile per fare una lista di liste
listona = []
# aggiungo variabile per calcolo lunghezza massima
max_len = 0
for i in split:
# splitto nuovamente per non avere il carattere - e separare i due numeri
splot = i.split(" ")
# definisco due nuove variabili per splittare le due stringhe
asplot = []
bsplot = []
# associo alle due nuove stringhe i valori
asplot = splot[0]
bsplot = splot[1]
# definisco le variabili per splittare i quattro valori di ogni stringa
alfa = 0
beta = 0
gamma = 0
delta = 0
# associo ad ogni variabile uno dei quattro numeri dei due range
alfa = int(asplot.split("-")[0])
beta = int(asplot.split("-")[1])
gamma = int(bsplot.split("-")[0])
delta= int(bsplot.split("-")[1])
# creo due liste vuote
boxes1 = []
boxes2 = []
# associo alle due liste tutti i valori dei due range
boxes1 = list(range(alfa,beta+1))
boxes2 = list(range(gamma,delta+1))
# creo una copia della prima lista
new_boxes = boxes1
# per ogni elemento della seconda lista, che non e' presente nella prima lista,
# lo aggiungo a new_boxes
for l in boxes2:
new_boxes.append(l)
# rimuovo eventuali numeri duplicati
no_duplicates_boxes = list(set(new_boxes))
# ordino dal minore al maggiore
sort_boxes = sorted(no_duplicates_boxes)
# aggiungo la lista di ogni riga ad una lista (lista di liste)
listona.append(sort_boxes)
# calcolo la lunghezza della lista
len_listona = len(listona)
# se la lunghezza della lista e' != 2 salto
if len_listona == 2:
# creo una variabile temporanea con la lista parzuiale dei numeri
lista_par = []
# popolo la lista con tutti i numeri della lista di liste
lista_par = sum(listona, [])
# elimino numeri doppi e metto in ordine crescente
lista_par_sort_unic = (sorted(set(lista_par)))
# se nella lista di liste ci sono gia' due elementi (due righe di dati)
# allora elimino il primo elemento
del listona[0]
# se il numero di elementi e' maggiore del caso precedente, allora aggiorno
if len(lista_par_sort_unic) > max_len:
max_len = len(lista_par_sort_unic)
print ("Result :", max_len)