codyssi_2025/04_aeolian_transmissions/part2.py

50 lines
1.6 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
def letters_to_numbers(text):
return [ord(char) - 64 for char in text.upper() if 'A' <= char <= 'Z']
# 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:
#numeri = letters_to_numbers(line.strip())
# calcolo lunghezza totale della stringa (senza a capo)
total_len = len(line.strip("\n"))
# calcolo del numero di lettere da tagliare
cut = int(total_len/10)
# calcolo del numero di caratteri da tenere
resto = total_len - (2*cut)
# definisco una variabile per ciclare solo fino alla lunghezza richiesta
l = 0
# per ogni riga (tolto a capo) eseguo la funzione per convertire la lettera in numero
for i in line.strip("\n"):
if l == cut:
l = 0
break
numero = letters_to_numbers(i)
# sommo alla variabile, la quota di numeri della prima parte di lettere
somma += numero[0]
l += 1
# sommo alla variabile la cifra numerica della parte centrale della stringa
somma += (sum(int(x) for x in str(resto)))
l = 0
# come per il for sopra, ma per le ultime cifre della stringa
for i in reversed(line.strip("\n")):
if l == cut:
l = 0
break
numero = letters_to_numbers(i)
somma += numero[0]
l += 1
print ("Result: ", somma)