Find the oxidation states of each of the atoms in a given molecule. These can be output as a list or otherwise.
The total oxidation state of a molecule will always be zero. The total oxidation state is the sum of the oxidation states of each of the individual atoms in the molecule.
The following atoms have constant oxidation states:
H, always has state +1
O, always has state -2
- All Group 1 elements have a state +1
- All Group 2 elements have a state +2
F, always has state -1
Cl, always has state -1
In monatomic molecules (such as
S8), all of the atoms always have a state 0. I.e. (
0, 0 and
0, 0, 0, 0, 0, 0, 0, 0)
The Group 1 elements are:
Li, Na, K, Rb, Cs, Fr. The Group 2 elements are:
Be, Mg, Ca, Sr, Ba, Ra.
You will be able to work out the states of every atom in the molecule given. There will be no ambiguous inputs (i.e. you won't be given
You should output the oxidation states of the individual atoms, not the total state.
If there is an element which is not listed in the list above in the molecule, you need to work out its oxidation state yourself since the sum of the oxidation states of all the atoms adds up to zero.
The molecules do not have to exist in real life.
You will never get a single atom such as
Built-in functions which access data about oxidation states are disallowed.
Input > Output H2O > +1, +1, -2 CO2 > +4, -2, -2 CH4 > -4, +1, +1, +1, +1 H2SO4 > +1, +1, +6, -2, -2, -2, -2 NaHCO3 > +1, +1, +4, -2, -2, -2 XeF8 > +8, -1, -1, -1, -1, -1, -1, -1, -1 TiCl2 > +2, -1, -1 P4 > 0, 0, 0, 0
The shortest code in bytes wins.