# Subproblem 1: Menghitung Atom
def hitung_atom(reaksi):
elemen = {}
for mol in reaksi:
for e, jml in mol.items():
if e in elemen:
elemen[e] += jml
else:
elemen[e] = jml
return elemen
# Subproblem 2: Mengecek Persamaan Reaksi
def cek_persamaan(reaktan, produk):
return hitung_atom(reaktan) == hitung_atom(produk)
# Subproblem 3: Menghitung Hasil Reaksi
def hasil_reaksi(reaktan, produk):
if cek_persamaan(reaktan, produk):
return hitung_atom(reaktan)
return "Persamaan reaksi tidak seimbang"
# Subproblem 4: Melengkapi Koefisien Reaktan dan Produk
def lengkapi_koef(reaktan, produk):
atom_reaktan = hitung_atom(reaktan)
atom_produk = hitung_atom(produk)
for i, mol in enumerate(reaktan):
for e, jml in mol.items():
koef = atom_produk[e] // atom_reaktan[e]
reaktan[i] = {k: v * koef for k, v in mol.items()}
for i, mol in enumerate(produk):
for e, jml in mol.items():
koef = atom_reaktan[e] // atom_produk[e]
produk[i] = {k: v * koef for k, v in mol.items()}
return reaktan, produk