Réarrangement de boules bleues et rouges

Résolu
oncledave Messages postés 10 Date d'inscription jeudi 31 mars 2005 Statut Membre Dernière intervention 11 avril 2005 - 31 mars 2005 à 15:30
oncledave Messages postés 10 Date d'inscription jeudi 31 mars 2005 Statut Membre Dernière intervention 11 avril 2005 - 4 avril 2005 à 16:17
J'ai un travail sur l'étude de David Gries sur son livre "The science of programming".

Il semble avoir été introduit par E. Dijkstra : il fallait réarranger des boules de trois

couleurs pour former le drapeau hollandais.

Je travaille en Delphi (ou pascal) et j'ai besoin d'aide.

10 réponses

jmp77 Messages postés 1119 Date d'inscription lundi 4 février 2002 Statut Membre Dernière intervention 4 octobre 2006 7
31 mars 2005 à 17:12
Hello,



Tu as besoin d'aide daccord mais pose des questions précises on ne peut pas t'aider sinon.

Bonne prog,
JMP77.

N'oubliez pas de cliquer sur réponse acceptée.
3
WhiteHippo Messages postés 1154 Date d'inscription samedi 14 août 2004 Statut Membre Dernière intervention 5 avril 2012 3
31 mars 2005 à 17:42
C'est à ça que tu fais allusion oncledave :
Vous avez deux urnes, 50 boules rouges et 50 boules bleues.
Une urne est sélectionnée au hasard, puis une boule est sélectionnée de l'urne.
En plaçant toutes les boules dans les urnes, comment maximiser les chances d'une boule d'etre selectionnée?
Quelle est la chance exacte d'obtenir une boule rouge en utilisant votre arrangement ?

Si c'est le cas, je suppose que tu cherches un programme pascal qui puisse te permettre de faire ça ?

P.S. Mais y'a quand même un problème !!
Quel est le rapport entre :
- Les boules de trois couleurs ( et le drapeau hollandais )
- Le réarrangement de boules bleues et rouges (uniquement 2 couleurs !!)

Cordialement.
0
cs_Kenavo Messages postés 702 Date d'inscription vendredi 21 mars 2003 Statut Membre Dernière intervention 1 octobre 2009 5
31 mars 2005 à 17:44
<tt> </tt><tt>
</tt>




procedure TriDuDrapeau;


var


i, b, r: integer;


c: TCouleur;


begin


i := 0; b := 0; r := 999;


while i < r do


begin


case Table[i] of


bleu: begin


c := Table[i]; Table[i] := Table[b]; Table[b] := c;


inc(i);


inc(b);


end;


blanc: Inc(i);


rouge: begin


Dec(r);


c := Table[i]; Table[i] := Table[r]; Table[r] := c;


end;


end;


end;





extrait de http://www.enseignement.polytechnique.fr/informatique/IF/a9/a9.html



Traduit en Pascal par mes soins et par pure bonté.

Ken@vo


Code, Code, Codec !
0
cs_Kenavo Messages postés 702 Date d'inscription vendredi 21 mars 2003 Statut Membre Dernière intervention 1 octobre 2009 5
31 mars 2005 à 17:49
999 qui sert à initialiser r est bien sur le plus grand indice du tableau



J'aurais du écrire :



procedure TriDuDrapeau(Min, Max : integer);


var


i, b, r: integer;


c: TCouleur;


begin


i := Min; b := Min; r := Max;

...etc....







Ken@vo


Code, Code, Codec !
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
WhiteHippo Messages postés 1154 Date d'inscription samedi 14 août 2004 Statut Membre Dernière intervention 5 avril 2012 3
31 mars 2005 à 17:54
Ca y est, j'y suis tu fais allusion au DNF algorithm ("Dutch National Flag Problem")

Bon voir pour l'explication de la méthode :
http://www.csse.monash.edu.au/~lloyd/tildeAlgDS/Sort/Flag/

Pour l'algoritme :
http://www.maths.nott.ac.uk/personal/anw/G12FCO/lect5.html

Algoritme est donné en pseudo code facilement transcriptible en code Delphi.

Cordialement.
0
oncledave Messages postés 10 Date d'inscription jeudi 31 mars 2005 Statut Membre Dernière intervention 11 avril 2005
4 avril 2005 à 15:09
Bonjour

Oui, je n'ai pas été très précis, je l'avoue.

De plus, je n'ai pas internet en week-end, et je viens de lire vos
remarques, en effet le problème parle de trois couleurs et je dois en
traiter deux.

J'aurais mis l'énoncé en fichier joint, mais je n'ai pas trouvé comment faire.

Faut-il tout taper ?

Je peux envoyer un document pour plus de précision. (il me faut un email !?)

Merci à tous, je vais réfléchir sur ce que vous m'avez envoyé.



Détails de l'énoncé :

En résumé, je rempli aléatoirement (avec Randomize) un tableau (du type
TTab à définir) de taille 100 en rouge=0 et bleu=1, avec une procedure
"RemplirAleatoirement", d'écrire une procédure "Permu" qui permette
d'échanger deux éléments du type TElement = Rouge..Bleu dont TTab se
sert.

Puis une procédure "Afficher" qui affiche le tableau avec le codage 0 et 1 (code de couleur).

Avec ce tableau on désire mettre les boules rouge à gauche et les
bleues à droite, premièrement de façon récurrente (ou récursive) (i
indice à droite et j indice à gauche) puis deuxièmement de façon
itérative et doit utilisert la procédure "Rearranger(..." .

Et enfin on me demande d'étudier la complexité en O de l'algortihme
itératif, c'est à dire de déterminer les conditions les plus
défavorables d'éxécution de l'algorithme s'il y avait n boules. Puis sa
complexité en temps en O ?



Voilà je crois avoir tout dit...

Merci pour ceux qui ont pris sur leur temps !

OncleDave
0
oncledave Messages postés 10 Date d'inscription jeudi 31 mars 2005 Statut Membre Dernière intervention 11 avril 2005
4 avril 2005 à 15:14
Bonjour

Oui, je n'ai pas été très précis, je l'avoue.

De plus, je n'ai pas internet en week-end, et je viens de lire vos
remarques, en effet le problème parle de trois couleurs et je dois en
traiter deux.

J'aurais mis l'énoncé en fichier joint, mais je n'ai pas trouvé comment faire.

Faut-il tout taper ?

Je peux envoyer un document pour plus de précision. (il me faut un email !?)

Merci à tous, je vais réfléchir sur ce que vous m'avez envoyé.



Détails de l'énoncé :

En résumé, je rempli aléatoirement (avec Randomize) un tableau (du type
TTab à définir) de taille 100 en rouge=0 et bleu=1, avec une procedure
"RemplirAleatoirement", d'écrire une procédure "Permu" qui permette
d'échanger deux éléments du type TElement = Rouge..Bleu dont TTab se
sert.

Puis une procédure "Afficher" qui affiche le tableau avec le codage 0 et 1 (code de couleur).

Avec ce tableau on désire mettre les boules rouge à gauche et les
bleues à droite, premièrement de façon récurrente (ou récursive) (i
indice à droite et j indice à gauche) puis deuxièmement de façon
itérative et doit utilisert la procédure "Rearranger(..." .

Et enfin on me demande d'étudier la complexité en O de l'algortihme
itératif, c'est à dire de déterminer les conditions les plus
défavorables d'éxécution de l'algorithme s'il y avait n boules. Puis sa
complexité en temps en O ?



Voilà je crois avoir tout dit...

Merci pour ceux qui ont pris sur leur temps !

OncleDave
0
oncledave Messages postés 10 Date d'inscription jeudi 31 mars 2005 Statut Membre Dernière intervention 11 avril 2005
4 avril 2005 à 15:17
Bonjour

Oui, je n'ai pas été très précis, je l'avoue.

De plus, je n'ai pas internet en week-end, et je viens de lire vos
remarques, en effet le problème parle de trois couleurs et je dois en
traiter deux.

J'aurais mis l'énoncé en fichier joint, mais je n'ai pas trouvé comment faire.

Faut-il tout taper ?

Je peux envoyer un document pour plus de précision. (il me faut un email !?)

Merci à tous, je vais réfléchir sur ce que vous m'avez envoyé.



Détails de l'énoncé :

En résumé, je rempli aléatoirement (avec Randomize) un tableau (du type
TTab à définir) de taille 100 en rouge=0 et bleu=1, avec une procedure
"RemplirAleatoirement", d'écrire une procédure "Permu" qui permette
d'échanger deux éléments du type TElement = Rouge..Bleu dont TTab se
sert.

Puis une procédure "Afficher" qui affiche le tableau avec le codage 0 et 1 (code de couleur).

Avec ce tableau on désire mettre les boules rouge à gauche et les
bleues à droite, premièrement de façon récurrente (ou récursive) (i
indice à droite et j indice à gauche) puis deuxièmement de façon
itérative et doit utilisert la procédure "Rearranger(..." .

Et enfin on me demande d'étudier la complexité en O de l'algortihme
itératif, c'est à dire de déterminer les conditions les plus
défavorables d'éxécution de l'algorithme s'il y avait n boules. Puis sa
complexité en temps en O ?



Voilà je crois avoir tout dit...

Merci pour ceux qui ont pris sur leur temps !

OncleDave
0
oncledave Messages postés 10 Date d'inscription jeudi 31 mars 2005 Statut Membre Dernière intervention 11 avril 2005
4 avril 2005 à 15:24
Bonjour

Oui, je n'ai pas été très précis, je l'avoue.

De plus, je n'ai pas internet en week-end, et je viens de lire vos
remarques, en effet le problème parle de trois couleurs et je dois en
traiter deux.

J'aurais mis l'énoncé en fichier joint, mais je n'ai pas trouvé comment faire.

Faut-il tout taper ?

Je peux envoyer un document pour plus de précision. (il me faut un email !?)

Merci à tous, je vais réfléchir sur ce que vous m'avez envoyé.



Détails de l'énoncé :

En résumé, je rempli aléatoirement (avec Randomize) un tableau (du type
TTab à définir) de taille 100 en rouge=0 et bleu=1, avec une procedure
"RemplirAleatoirement", d'écrire une procédure "Permu" qui permette
d'échanger deux éléments du type TElement = Rouge..Bleu dont TTab se
sert.

Puis une procédure "Afficher" qui affiche le tableau avec le codage 0 et 1 (code de couleur).

Avec ce tableau on désire mettre les boules rouge à gauche et les
bleues à droite, premièrement de façon récurrente (ou récursive) (i
indice à droite et j indice à gauche) puis deuxièmement de façon
itérative et doit utilisert la procédure "Rearranger(..." .

Et enfin on me demande d'étudier la complexité en O de l'algortihme
itératif, c'est à dire de déterminer les conditions les plus
défavorables d'éxécution de l'algorithme s'il y avait n boules. Puis sa
complexité en temps en O ?



Voilà je crois avoir tout dit...

Merci pour ceux qui ont pris sur leur temps !

OncleDave
0
oncledave Messages postés 10 Date d'inscription jeudi 31 mars 2005 Statut Membre Dernière intervention 11 avril 2005
4 avril 2005 à 16:17
Je crois que je m'y prends mal, mon message est parti trois ou quatre
fois, le réseau n'est pas très stable, j'ai dû cliquer trop de fois.

Y a t-il un moyen d'enlever les message superflu ?

Merci de votre compréhension.

OncleDave
0
Rejoignez-nous