# schillen.py - schillen, valentie-elektronen, periode en groep voor Z = 1 tot 20
SYMBOLEN = ["H", "He", "Li", "Be", "B", "C", "N", "O", "F", "Ne",
            "Na", "Mg", "Al", "Si", "P", "S", "Cl", "Ar", "K", "Ca"]


def schillen(z):
    """Verdeling over de schillen volgens het schillenmodel (2, 8, 8, 2): geldig tot calcium."""
    verdeling = []
    for plaatsen in (2, 8, 8, 2):
        aantal = min(z, plaatsen)
        if aantal > 0:
            verdeling.append(aantal)
        z = z - aantal
    return verdeling


def groep(verdeling):
    """Groep 1, 2 of 13 tot 18, uit het aantal elektronen in de buitenste schil."""
    buiten = verdeling[-1]
    if len(verdeling) == 1:             # periode 1: waterstof in groep 1, helium in groep 18
        return 1 if buiten == 1 else 18
    if buiten <= 2:
        return buiten
    return buiten + 10


for z in range(1, 21):
    s = schillen(z)
    tekst = ", ".join(str(a) for a in s)
    print(f"{z:2d} {SYMBOLEN[z - 1]:2s}   schillen {tekst:11s}  valentie {s[-1]}"
          f"   periode {len(s)}   groep {groep(s):2d}")
