Algorithme/Code en python
Loulou75
-
yg_be Messages postés 23437 Date d'inscription Statut Contributeur Dernière intervention -
yg_be Messages postés 23437 Date d'inscription Statut Contributeur Dernière intervention -
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
-
yg_be Messages postés 23437 Date d'inscription Statut Contributeur Dernière intervention Ambassadeur 1 588
bonjour, 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?