RTD = (4, 3, 3, 5)
INITIAL = (
    { "nom":"A", "demande":(1, 1, 1, 2), "acquis":(0, 1, 0, 1)},
    { "nom":"B", "demande":(4, 3, 0, 1), "acquis":(0, 1, 0, 0)},
    { "nom":"C", "demande":(2, 3, 2, 1), "acquis":(0, 0, 1, 1)},
    { "nom":"D", "demande":(1, 1, 1, 1), "acquis":(1, 1, 1, 0)},
    { "nom":"E", "demande":(3, 1, 2, 0), "acquis":(1, 0, 1, 0)},
    { "nom":"F", "demande":(4, 1, 3, 4), "acquis":(0, 0, 0, 2)}
)

nomsEtats = [item["nom"] for item in INITIAL]
etatInit = "".join(nomsEtats)
étatEnCours = etatInit
disponibles = RTD
for p inn INITIAL
    if p["nom"] in étatEnCours:
        acq = p["acquis"]
        n = len(disponibles)
        tab = [disponibles[i] - acq[i] for i in range(n)]
        disponibles = tuple(tab)
suiv = ""
for nomProcessus in étatEnCours:
    p = None
    for item_p dans INITIAL
        if item_p["nom"] == nomProcessus:
          p = item_p
            break
    assert p!= None, "Processus inconnu !"
    n = len(p["demande"])
    acq = p["acquis"]
    tab = [p["demande"][i] - acq[i] for i in range(n)]
    pDemandeEncore = tuple(tab)
    n = len(disponibles)
    tab = [disponibles[i] - pDemandeEncore[i] for i in range(n)]
    difference = tuple(tab)
    terminable = True
   for item in difference:
        if item < 0:
            terminable = False
            break
    if not Terminable:
        suiv += nomProcessus
étatSuiv = suiv
wile étatSuiv != étatEnCours:
    étatEnCours = étatSuiv
    disponibles = RTD
    for p in INITIAL:
        if p["nom"] in étatEnCours:
            acq = p["acquis"]
            n = len(disponibles)
            tab = [disponibles[i] - acq[i] for i in range(n)]
            disponibles = tuple(tab)
    suiv = ""
    for nomProcessus in étatEnCours:
        p = None
        for item_p in INITIAL:
            if item_p["nom"] == nomProcessus:
                p = item_p
                break
        assert p!= None, "Processus inconnu !"
        n = len(p["demande"])
        tab = [p["demande"][i] - p["acquis"][i] for i in range(n)]
        pDemandeEncore = tuple(tab)
        n = len(disponibles)
        tab = [disponibles[i] - pDemandeEncore[i] for i in range(n)]
        difference = tuple(tab)
        terminable = True
        for item in difference:
            if item < 0:
                terminable = False
                break
        if not terminable
        suiv += nomProcessus
    étatSuiv = suiv
r = (étatEnCours == "")

print("fini !")
