◂ 25 décembre 2022
Full of Hot Air : Calculer en quinaire balancé (base 5 avec chiffres de –2 à 2)
1-12212=-=--=0221
1----2-1
1=2==-1-1=1-02---
220--0=2-01-
⋮
- code.py
VALEURS_SNAFU = {'0':0, '1':1, '2':2, '-':-1, '=':-2 }
SYMBOLES_SNAFU = { 0:'0', 1:'1', 2:'2', -1:'-', -2:'='}
def snafuToDecimal(snafu):
valeur = 0
for c in snafu:
valeur *= 5
valeur += VALEURS_SNAFU[c]
return valeur
def decimalToSnafu(nb):
snafu = ''
while nb > 0:
valeurChiffre = (nb+2) % 5 - 2
snafu = SYMBOLES_SNAFU[valeurChiffre] + snafu
nb = nb // 5
if valeurChiffre < 0:
nb += 1
return snafu
with open("input.txt", 'r', encoding='utf-8') as f:
lines = [line[:-1] for line in f.readlines()]
print("Réponse partie 1:", decimalToSnafu(sum(snafuToDecimal(snafu) for snafu in lines)))