codyssi_2025/04_aeolian_transmissions/part3.py

55 lines
2.1 KiB
Python

# importo dal file data.py le stringhe date
with open("data.py", "r") as f:
lines = f.readlines()
# definisco la funzione per convertire le lettere maiuscole nei corrispettivi numeri ed i numeri (stringa) nei corrispettivi valori
def letters_to_numbers(text):
return [ord(char) - 64 if 'A' <= char <= 'Z' else ord(char) - 48
for char in text.upper()
if ('A' <= char <= 'Z') or ('0' <= char <= '9')
]
# creo la variabile per la somma dei caratteri
somma = 0
# per ogni stringa in input (una per riga)
# lancio la funzione di conversione e sommo il numero di "celle di memoria"
for line in lines:
# definisco una variabile per salvare il valore della lettera corrente nella stringa
l = line.strip("\n")[0]
# definisco una variabile per salvare il numero di occorrenze della lettera corrente
c = 0
# definisco una nuova stringa con solo la prima lettera della stringa originale
s = ''
# per ogni riga (tolto a capo) eseguo la funzione per convertire la lettera in numero
for i in line.strip("\n"):
# se il carattere precedente e' diverso da quello attuale
if l != i:
# aggiungo alla stringa il numero di ricorrenze dell'attuale lettera
s += str(c)
# aggiungo la nuova lettera alla stringa
s += l
# associo alla variabile l il nuovo valore della stringa originale
l = i
# setto ad 1 il count
c = 0
# se se il carattere precedente e' uguale a quello attuale incremento il contatore c
if l == i:
c += 1
# prima di finire il ciclo for aggiungo alla stringa il numero di ricorrenze dell'attuale lettera
s += str(c)
# prima di finire il ciclo for aggiungo la nuova lettera alla stringa
s += l
# aggiungo una variabile per il conteggio parziale dei valori
parz = 0
for i in s:
# salvo nella variabile c il valore convertito dell'attuale carattere
c = letters_to_numbers(i)
# aggiungo il valore numerico alla variabile
parz += int(c[0])
# sommo il parziale al totale
somma += parz
print ("Result: ", somma)