42 lines
1.1 KiB
Python
42 lines
1.1 KiB
Python
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))
|