Algorithme/Code en python
Bonjour,
Je souhaiterais implémenter l'algorithme suivant en python :
si i = j alors
retourner (A[i], 1)
sinon
(x, cx) = maj(i, (i + j)/2)
(y, cy) = maj((i + j)/2 + 1, j)
si cx ̸= 0 alors
cx ← cx + occur(x, (i + j)/2 + 1, j)
si cy ̸= 0 alors
cy ← cy + occur(x, i, (i + j)/2)
si cx >(j−i+1)/2 alors
retourner (x, cx)
sinon
si cy >(j−i+1)/2 alors retourner (y,cy)
sinon
retourner (−,0)
Ce qui nous donne :
*
Mais du coup ce que j'ai fais ne marche pas, sa reste bloqué sur cette ligne de code
Je vous remercie d'avance pour votre aide.
Je souhaiterais implémenter l'algorithme suivant en python :
si i = j alors
retourner (A[i], 1)
sinon
(x, cx) = maj(i, (i + j)/2)
(y, cy) = maj((i + j)/2 + 1, j)
si cx ̸= 0 alors
cx ← cx + occur(x, (i + j)/2 + 1, j)
si cy ̸= 0 alors
cy ← cy + occur(x, i, (i + j)/2)
si cx >(j−i+1)/2 alors
retourner (x, cx)
sinon
si cy >(j−i+1)/2 alors retourner (y,cy)
sinon
retourner (−,0)
Ce qui nous donne :
def occur(A,x,i,j):
p=0
for k in range (i,j+1):
if x==A[k]:
p=p+1
return p
def maj(i,j):
if i==j:
return(A[i],1)
else:
(x,cx) = maj(i,(j-i+1) // 2)
(y,cy) = maj(((j-i+1) // 2)+1,j)
if cx!=0:
cx=cx+occur(x,((j-i+1) // 2)+1,j)
if cy!=0:
cy=cy+occur(x,i,(j-i+1) // 2)
if cx>(j-i+1) // 2:
return (x,cx)
else:
if cy>(j-i+1) // 2:
return (y,cy)
else:
return (-1,0)
*
Mais du coup ce que j'ai fais ne marche pas, sa reste bloqué sur cette ligne de code
(x,cx) = maj(i,(j-i+1) // 2)
Je vous remercie d'avance pour votre aide.
Configuration: Macintosh / Safari 11.0.3
| EDIT : Ajout des balises de code (la coloration syntaxique).
Explications disponibles ici : ICI Merci d'y penser dans tes prochains messages. |
1 réponse
-
Contributeurbonjour, essayons d'abord de comprendre ton algorithme:
que signifie la ligne suivante, où tu utilises = et pas ←?(x, cx) = maj(i, (i + j)/2)
comme tu n'expliques pas le contexte, comment pouvons-nous deviner ce que tu essaies de faire?
par ailleurs, "sa reste bloqué", vraiment? peut-être un message d'erreur?