Forum des Bioingénieurs de l'ULB
Vous souhaitez réagir à ce message ? Créez un compte en quelques clics ou connectez-vous pour continuer.
-50%
Le deal à ne pas rater :
-50% Baskets Nike Air Huarache Runner
69.99 € 139.99 €
Voir le deal

Exercice 21

5 participants

Aller en bas

Exercice 21 Empty Exercice 21

Message par CharlotteBD Mar 25 Jan - 17:12

Est ce que quelqu'un aurait compris la résolution de l'exercice 21 ?

Merci
CharlotteBD
CharlotteBD
Dopamine
Dopamine

Féminin
Nombre de messages : 78
Année d'étude : MA1
Section : Bioingénieur
Date d'inscription : 27/12/2010

Revenir en haut Aller en bas

Exercice 21 Empty Re: Exercice 21

Message par Le Renard Montois O-o Mer 26 Jan - 17:44

+1 pour l'explication, j'ai vraiment du mal sur la double boucle...

Merci !
Le Renard Montois O-o
Le Renard Montois O-o
Dopamine
Dopamine

Masculin
Nombre de messages : 115
Année d'étude : Diplomé(e)
Section : Bioingénieur
Option : Chimie et bioindustries
Date d'inscription : 15/09/2009

Revenir en haut Aller en bas

Exercice 21 Empty Re: Exercice 21

Message par Colin Mer 26 Jan - 18:59

+2 pour l'explication. ha ha on donne des faux espoirs à charlotte^^
Colin
Colin
Psychotrope
Psychotrope

Masculin
Nombre de messages : 289
Année d'étude : BA1
Section : Gestion en Environnement Urbain
Option : Agronomie - Option tropical
Date d'inscription : 07/06/2010

Revenir en haut Aller en bas

Exercice 21 Empty Re: Exercice 21

Message par Arnaud Mer 26 Jan - 21:15

Bon, la première fonction renvoie juste le nombre de caractères identiques qui se suivent au début d'une chaine donnée.

La seconde fait une double boucle pour renvoyer le nème nbre de conway:
-la boucle principale (while i <=n), construit a chaque fois un nbre de conway (d'abord le premier (1), puis le deuxième(11).....jusqu'au nème) et ne renvoie au final que ce nème nombre (en gros elle calcule le nème à partir de tous ceux qui sont avant).

-pour calculer un nombre de conway, il faut une boucle, la deuxième(while j< len (res) ), qui parcourt tous les caractères du nombre d'avant (le cas de base, n= 1, est fixé res = '1'). Pour chaque caractère, elle compte ceux consécutifs (grâce a la première fonction), et crée le nouveau nombre comme ca: ex: '11' -> '2'+'1' = '21'. Ensuite elle passe au caractère suivant qui est différent, donc il faut faire j = j +count ex: pour '1112', on fait le cas j=0, on compte 3 '1' donc apres on passe à j= 0+3= 3, on compte 1 '2'. Donc la nouvelle chaine ainsi crée remplace le 'res' précédent, et est utilisée pour construire le nombre suivant (on recommence la boucle principale).

Après avoir relu ceci trois fois vous comprendrez^^
Arnaud
Arnaud
Dopamine
Dopamine

Masculin
Nombre de messages : 109
Année d'étude : BA3
Section : Bioingénieur
Date d'inscription : 21/09/2009

Revenir en haut Aller en bas

Exercice 21 Empty Re: Exercice 21

Message par CharlotteBD Mer 26 Jan - 21:28

J'ai compris (fin je pense) :p

Donc tout d'abord j'ai fait une autre fonction qui pour moi est plus simple et vérifié par alessia, elle devrait marcher:

def conway_principe (l,i) #cette fonction regarde dans la liste l combien de fois l'élément à la position i est repetee.
count=1 doffice on commence a 1 comme d'office on a une fois l'element
while i+1 < len (l) and l[i]==l[i+1]: on dit i+1 count +=1 si ya bien répétition on a plus d'élément
i+=1 et on continue pour voir si encore apres on aurait pas le meme élément qu'a la position i
return count

def conway_suite (l): #la fonction va faire la suite de nombre
res=''
i=0
while i res.append (n+l[i])
return res

def conway (n): #la fonction va chercher le nieme terme de la suite de Conway.

suite='1'
i=2
while i<=n:
suite=conway_suite (suite)
i=i+1
return suite



J'explique la méthode dans le cour

def next_count(s):
"""Renvoie le nombre de caractères successifs au début de la chaîne s égaux au premier caractère."""
fini = False
i = 1 expliqué avant
while i < len(s) and not fini: on rajoute le not fini pour se dire qu'on l'a pas encore fait lelement qu'on est entrain de traiter (jcrois que c'est ca c'est comme ca que je comprend car apres des qu'on a plus la meme chose on va mettre fini = true et donc ainsi on peut passer a l'element apres)
if s[i] == s[0]:
i += 1
else:
fini = True
return i

def conway(n):
"""Renvoie le n-ième nombre de la suite rigolote de Conway."""
res = -1
if n > 0: dans ma fonction je suppose deja que n>0 car ce serait pas logique de demander un terme negatif
res = '1'
i = 2 on dit que i= à 2 car on dit deja le premier terme qui est egale a 1
while i <= n: # for i in range(2,n+1): la suite va permettre de faire la suite jusque quand on arrive au terme voulu
# construit le i-ème nombre de Conway
j = 0
next_res = ''
while j < len(res): on refait une boucle car on commence au premier terme de la suite qui est un au début pour arriver au deuxieme terme
char = res[j] on garde la valeur qu'on est entrain de traiter pour ainsi la mettre apres
count = next_count(res[j:len(res)]) on va retenir le nombre de fois que l'element a été répété grace a la fonction qu'on a décrite avant. On met (res[j:len(res)]) car on de l'endroit ou on est jusque la longueur du terme ou on est non compris. (Si c'est pas logique, mettez des chiffres et mettez vous devant la suite)
next_res = next_res + str(count) + char donc la next_res va valoir le nombre de répétition (mis en chaine pour pas que le count et le + char s'additionne) suivi de l'élément qu'on était entrain de traité
j = j + count et on continue au suivant (on fait + count car on veut directement passer au prochain élément de la suite sans prendre une répétition)
res = next_res
i += 1
return res
[b][i]


J'espere avoir été clair. Je ne dis pas que tout ce que je dis est bon et je me suis pas relue donc possible d'erreur, sorry d'avance Smile
CharlotteBD
CharlotteBD
Dopamine
Dopamine

Féminin
Nombre de messages : 78
Année d'étude : MA1
Section : Bioingénieur
Date d'inscription : 27/12/2010

Revenir en haut Aller en bas

Exercice 21 Empty Re: Exercice 21

Message par Lise Jeu 27 Jan - 15:41

jpense que ta fonction va avoir un probleme pcq pour def conway_suite (l) tu n'utilise pas def conway_principe (l,i)... mais sinon merchi! j'ai dja compris qql trucs en plus!
Lise
Lise
Psychotrope
Psychotrope

Féminin
Nombre de messages : 328
Année d'étude : BA3
Section : Bioingénieur
Date d'inscription : 21/05/2010

Revenir en haut Aller en bas

Exercice 21 Empty Re: Exercice 21

Message par CharlotteBD Jeu 27 Jan - 17:30

Tu as raison j'ai oublié d'écrire une ligne :p
CharlotteBD
CharlotteBD
Dopamine
Dopamine

Féminin
Nombre de messages : 78
Année d'étude : MA1
Section : Bioingénieur
Date d'inscription : 27/12/2010

Revenir en haut Aller en bas

Exercice 21 Empty Re: Exercice 21

Message par Contenu sponsorisé


Contenu sponsorisé


Revenir en haut Aller en bas

Revenir en haut

- Sujets similaires

 
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum
Ne ratez plus aucun deal !
Abonnez-vous pour recevoir par notification une sélection des meilleurs deals chaque jour.
IgnorerAutoriser