Traduction
Pierre
-
Pierre -
Pierre -
Bonjours j'ai besoin de votre aide j'ai ce code:
Pourriez vous m'expliquer que fait chaque ligne du programme dumoin les plus importante via un # derrière la ligne en question que je puisse comprendre le fonctionnement de ce code merci d'avance
def diagAscendante(i, j):
j1 = j - min(i, j)-1
for i1 in range(i-min(i,j),min(8,7-j1)):
j1+=1
yield i1, j1
def diagDescendante(i, j):
j1=j+min(i,7-j)+1
for i1 in range(i-min(i,7-j),min(8,j1)):
j1-=1
yield i1, j1
def positionValide(L, l, c):
if not L[l] < 0: return False
try:
z=L.index(c)
return False
except ValueError:
pass
diagonaleAscendante = diagAscendante(l, c)
if any([L[i]==j for i, j in diagonaleAscendante]): return False
diagonaleDescendante = diagDescendante(l, c)
if any([L[i]==j for i, j in diagonaleDescendante]): return False
return True
from time import perf_counter
def backTracking(L, l, c):
while c > 7 and l > 0:
l -= 1
c=L[l]+1
L[l] = -1
if c > 7: return -1, 0
return l, c
T=perf_counter()
S = [] # Liste des solutions.
L = [-1 for _ in range(8)]
l=0
c=0
while l >= 0:
while c < 8:
if not positionValide(L, l, c):
c+=1
else:
L[l] = c
c+=1
l += 1
if l <= 7:
c=0
else:
S.append(L[:])
l -= 1
c+=1
L[l] = -1
l, c = backTracking(L, l, c)
print("Temps: {round(perf_counter()-T, 3)} secondes")
print(len(S))
for i,L in enumerate(S):
print(i+1,": ",*L)
Pourriez vous m'expliquer que fait chaque ligne du programme dumoin les plus importante via un # derrière la ligne en question que je puisse comprendre le fonctionnement de ce code merci d'avance
1 réponse
-
yg_be Messages postés 23437 Date d'inscription Statut Contributeur Dernière intervention Ambassadeur 1 588
bonjour,
comment en es-tu arrivé à utiliser un code que tu ne comprends pas?
dans quel contexte fais-tu cela?-
Enfait j'ai se code d'un ami tout simplement et j'essaye d'apprendre et il me faudrai comprendre ce code voila tout c'est pour cela que je demande de me dire si possible a quoi correspond chaque ligne ou du moinnles grandes lignes merci si tu peut m'aider
-