codyssi_2025/01_compass_calibration/part3.py

44 lines
1.3 KiB
Python

import importlib.util
# Import del file con le liste di numeri ed operatori
data = "matrix.py"
spec = importlib.util.spec_from_file_location("matrix", data)
matrix = importlib.util.module_from_spec(spec)
spec.loader.exec_module(matrix)
# creo una lista vuota
num = []
# per ogni riga della lisa dei numeri estraggo il valore
# mi serve perche' se no prende l'andare a capo come valore
for line in matrix.n.splitlines():
num.append(line)
#inverto la stringa degli operatori
s_inverted = matrix.s[::-1]
# creo una nuova lista di lunghezza pari alla meta' dei numeri a disposizione
elementi = int(len(num)/2)
# scorro i tre array, i numeri in posizione pari sono unita', i numeri in
# posizione dispari (faccio per 10) sono decine e poi sommo tutto nella nuova lista
new_num = [0] * elementi
for n, (d, u) in enumerate(zip(num[::2], num[1::2])):
new_num[n] += int(u) + (int(d)*10)
# creo la variabile per sommare i valori
# la definisco con il valore del primo numero
# converto la stringa contenuta nella lista in intero
result = int(new_num[0])
# ciclo insieme tutti i numeri e gli operatori (invertiti), partendo dal
#secondo numero della lista dei valori
for n, op in zip(new_num[1:], s_inverted):
if op == '+':
result += int(n)
if op == '-':
result -= int(n)
#stampo il risultato
print("result =", result)