from random import randint nb_interrupteurs = 10 etats_interrupteurs = [_%2==1 for _ in range(nb_interrupteurs)] etats_interrupteurs = [False for _ in range(nb_interrupteurs)] etats_interrupteurs = [randint(0,1)==0 for _ in range(nb_interrupteurs)] commutations = [] print(etats_interrupteurs) def inverse_interrupteur(n: int): global etats_interrupteurs global commutations #print("On inverse l'interrupteur", n) commutations.append(n) etats_interrupteurs[n-1] = not etats_interrupteurs[n-1] def islight() -> bool: global etats_interrupteurs result = True for etat_interrupteur in etats_interrupteurs: if not etat_interrupteur: result = False break return result def cherche_commutations(n): #print("commute", n) if n == 1 and not islight(): inverse_interrupteur(n) elif n > 1 and not islight(): cherche_commutations(n-1) if not islight(): inverse_interrupteur(n) if not islight(): cherche_commutations(n-1) cherche_commutations(nb_interrupteurs) print(etats_interrupteurs) print(len(commutations))