Jeu de la ronde (1)

Des enfants jouent dans une cour de récréation : ils se placent en rond et choisissent au hasard l'un d'entre eux.

A partir de là, la règle est simple :

  • Le premier enfant tape sur l'épaule de son voisin de gauche : celui-ci est éliminé. Au début l'enfant \(1\) élimine donc l'enfant \(2\) ;

  • On passe à l'enfant restant suivant et l'on recommence : il élimine celui situé à sa gauche. Dans l'exemple, l'enfant \(3\) élimine le \(4\) ;

  • On continue encore et encore jusqu'à ce qu'il ne reste plus qu'un seul enfant : c'est le gagnant !

Le jeu de la ronde

Dans le cas où \(13\) enfants jouent comme sur la figure, le gagnant est l'enfant n°\(11\).

La question est simple : qui va gagner ?

Dans cet exercice on utilise un tableau de booléen nommé joueurs dans lequel chaque valeur indique que le joueur concerné est encore en jeu (True) ou a déjà été éliminé (False).

Attention

Les indices des listes Python étant comptabilisés à partir de 0, avoir joueurs[2] égal à False signifie que le joueur n°\(3\) a été éliminé.

Ce tableau sera initialisé avec autant de valeurs True qu'il y a de joueurs.

La partie se déroulera ainsi :

  • on garde trace de l'indice du joueur qui doit jouer ;

  • on cherche dans le tableau l'indice du prochain joueur encore en jeu ;

  • on « élimine » ce joueur ;

  • on cherche l'indice du prochain joueur encore en jeu : ce sera à lui de jouer.

Ces différentes étapes continuent jusqu'à ce qu'il ne reste plus qu'un seul joueur encore en jeu.

Compléter les fonctions ci-dessous.

Fonction indice_prochain_True

La fonction indice_prochain_True prend en paramètres une liste de booléens ainsi qu'un indice et renvoie l'indice de la prochaine valeur de la liste égale à True.

On prendra soin de « boucler » les indices : si celui-ci dépasse la longueur de la liste, on le ramène à 0.

On garantit que la liste booleens contient au moins une valeur True.

Exemples
>>> booleens = [True, True, False, True, False]
>>> indice_prochain_True(booleens, 0)
1
>>> indice_prochain_True(booleens, 1)
3
>>> indice_prochain_True(booleens, 3)
0

###(Dés-)Active le code après la ligne # Tests (insensible à la casse)
(Ctrl+I)
Entrer ou sortir du mode "deux colonnes"
(Alt+: ; Ctrl pour inverser les colonnes)
Entrer ou sortir du mode "plein écran"
(Esc)
Tronquer ou non le feedback dans les terminaux (sortie standard & stacktrace / relancer le code pour appliquer)
Si activé, le texte copié dans le terminal est joint sur une seule ligne avant d'être copié dans le presse-papier
Évaluations restantes : 10/10

.128013n«T»m%wOgPo,6]uRèa8bsr[vcej1S9_d(iyk02; 5à+l4t/.E3)fh:=é7qp050G0A0U0s0I0S0v0O0z0S0s0v0v0%010U0I0+010406050v0p0f0f0s0w0J040D0l0S0p0 0l0b0O020s0f0+0N0O0q0A190w0*0p0A0v050V16181a1c140+041A1H051K0V1K1M1H140G0I0y0@0_0{0}0#0I0j0#0S1!0#0U12050/0u0S0A1V0`0|011Z1#1%1#0U1-1/1+0U0u0l0G1c1,0w1I0U0#0@1f0v0+0s0b0}0M011;1X010!0;0A0b1n0A1+2c2e2j1?2m1/2p0f2r040a0O0k0w0l0+0l0v0I1i1k0-2a0w0w0A0z2M1A2t0b1I0V282Y0U2625270G2v0}1%0b2o2J1+1S1U0^1=2,0I2.0b221T1+0+2R1I2W2Y33152d1k2@2k2|0w190S120O0C2V3713362u391?3b3d3f0M3i2e3k2W2+013p0s3e040O0Y3t2X143w3n0}3z3B0O0T3F3v373x3L3f0P3P3H3R3J3y0l3c3A3f0n3W3l381W3o3#3q3C0)3*3I3-3K3/3%3C0t3?3Y3^3!3$3M0E3~3m403T040C0L3P1J311A2=2#0G2)3x0z222B0,1T1I300A323j4c4l0-4t462^010K120-0!4c3@4A0h3f4G3 4A0b0!122`1S0z0A0F300l0z0#0:0b0F0d0w1x4L4z2k11040H4*3,4N12211f0A2o1z1B4u4H4,120m3P0O3+3S4Q4:3x4-0Z0$3W0O5d534~3o120/0;1/52543Z0l120%5m5g3K0u122y573Z4-4/4|3u5n474?0l4^4`5y40595c5e5E4=040I5s4M2k5p040R5r5C2X5f5U1?0f0I123h5!135e5$4+1?4C5R4F5-5:4;3a565_5P5V5q5Z335`55045j0S5l5-5 1?4-5b5-065/5/6b3K5}636j015W623j643Z5)124b6f6i5t4B120h1Z696m6z0l4J042|0U5T5;6k044@1/5J6a6z4-0x5K5Q5S6T5%0}4-0o6e336g6h5d6n0b6l6r6n5W5Y6M5{5(5*495N6,6n5?0I5^6F6#3y6:3u6s406p6q776.5i0:680A6X4 046)3j6+6,6y746/5R6^3x6p7t6t6{6w6*7p6N6A042R0U0p0w0b7w5F7s6f1A4w4s4d7Q0V4g1A0U4i7V2%2Z21232#0s1.7S4g1G4y6_0}2R0f0F0!0s0K4U0#0Y121s1u1w1y0O7l5D1N3k1H0i2N0(0u1h1:2d0w0O2`0z0w0(2A0b0U0A8e0_0O0y3A0A7H0O2O057P7M8y0O0s2m2N8c1=8n8B0p0O0c0O0B0l1x8u0e0O161T2e0U0W0O0D0I0O0S004R0I4T8v0(2d0{1:8p671/8v8J1}0A0s8J1j8#0p8!0G1j2.8#0s8q8s8u8x4m3x1^1$1(1*7-3x6u047z4u0V8y0W1J8504870O8i0+0r8m0@0.8f0b8h8j2o0U8v2e0?0p92210p0^1:0B0p0v1w000Q9s2o4l8l2R8e9I1:8r1/8u0(0j8s0O9T982O3Z9b1`1)2s740K0z124%4)6a9l4m049n847,9r2I7H0w0:9E8`0{8!1h0;0I0v8H8$2H0(a88m977P9a1(9=9e6=120g4c9 4x8X0X1k0A0!0!0.0m8#8%0b4S1:0-0y0I9D0O2$2H0O0ja8aK8#3#9Q0p8%0S0O1y9E9)3A9,53ap9:ar9d9@7C7r8;7h9~8A9y9.1:a:1_a=9f3Za^7f6E6;6Gav7K5Qa_axa|0va*9*a%9-a/409;b26n9h9j838A6e1Q4o2?bma;1{a?7.2l2n2z2B2D0D8h109E0k0J281j4c4r7-344u8y6 4DaD7i1?6I536!a@4P5RaK8)4U4W4Y4!4$4(a`356U125Bb@7q5G5I0b4{b{7C4-515~6z7r6Zc1bC59823G7BbCb55kb?b8747vc57q5v045xb%cab_bZ6O6Q4_b cu015M6x5Oc6765#au047bcGb^4.czc7bb605XcP6`5+czcB737C5Wawcma@7ech6}784A5?6C2ncS0}6H126Kc/756P5H6Rcycr58126Wc}b4cFb35L126(c)ce65c8cjcY5qc@5AcNd3c*cQ0Rc@9h5,c9c~040Zc@cZc@cg7gc)bW7E0.7H7Jc#cfd314ay7SbR4f4pdH0-670v04.

###(Dés-)Active le code après la ligne # Tests (insensible à la casse)
(Ctrl+I)
Entrer ou sortir du mode "deux colonnes"
(Alt+: ; Ctrl pour inverser les colonnes)
Entrer ou sortir du mode "plein écran"
(Esc)
Tronquer ou non le feedback dans les terminaux (sortie standard & stacktrace / relancer le code pour appliquer)
Si activé, le texte copié dans le terminal est joint sur une seule ligne avant d'être copié dans le presse-papier
Évaluations restantes : 10/10

.128013n«T»m%wOgPo,6]uRèa8bsr[vcej1S9_d(iyk02; 5à+l4t/.E3)fh:=é7qp050G0A0U0s0I0S0v0O0z0S0s0v0v0%010U0I0+010406050v0p0f0f0s0w0J040D0l0S0p0 0l0b0O020s0f0+0N0O0q0A190w0*0p0A0v050V16181a1c140+041A1H051K0V1K1M1H140G0I0y0@0_0{0}0#0I0j0#0S1!0#0U12050/0u0S0A1V0`0|011Z1#1%1#0U1-1/1+0U0u0l0G1c1,0w1I0U0#0@1f0v0+0s0b0}0M011;1X010!0;0A0b1n0A1+2c2e2j1?2m1/2p0f2r040a0O0k0w0l0+0l0v0I1i1k0-2a0w0w0A0z2M1A2t0b1I0V282Y0U2625270G2v0}1%0b2o2J1+1S1U0^1=2,0I2.0b221T1+0+2R1I2W2Y33152d1k2@2k2|0w190S120O0C2V3713362u391?3b3d3f0M3i2e3k2W2+013p0s3e040O0Y3t2X143w3n0}3z3B0O0T3F3v373x3L3f0P3P3H3R3J3y0l3c3A3f0n3W3l381W3o3#3q3C0)3*3I3-3K3/3%3C0t3?3Y3^3!3$3M0E3~3m403T040C0L3P1J311A2=2#0G2)3x0z222B0,1T1I300A323j4c4l0-4t462^010K120-0!4c3@4A0h3f4G3 4A0b0!122`1S0z0A0F300l0z0#0:0b0F0d0w1x4L4z2k11040H4*3,4N12211f0A2o1z1B4u4H4,120m3P0O3+3S4Q4:3x4-0Z0$3W0O5d534~3o120/0;1/52543Z0l120%5m5g3K0u122y573Z4-4/4|3u5n474?0l4^4`5y40595c5e5E4=040I5s4M2k5p040R5r5C2X5f5U1?0f0I123h5!135e5$4+1?4C5R4F5-5:4;3a565_5P5V5q5Z335`55045j0S5l5-5 1?4-5b5-065/5/6b3K5}636j015W623j643Z5)124b6f6i5t4B120h1Z696m6z0l4J042|0U5T5;6k044@1/5J6a6z4-0x5K5Q5S6T5%0}4-0o6e336g6h5d6n0b6l6r6n5W5Y6M5{5(5*495N6,6n5?0I5^6F6#3y6:3u6s406p6q776.5i0:680A6X4 046)3j6+6,6y746/5R6^3x6p7t6t6{6w6*7p6N6A042R0U0p0w0b7w5F7s6f1A4w4s4d7Q0V4g1A0U4i7V2%2Z21232#0s1.7S4g1G4y6_0}2R0f0F0!0s0K4U0#0Y121s1u1w1y0O7l5D1N3k1H0i2N0(0u1h1:2d0w0O2`0z0w0(2A0b0U0A8e0_0O0y3A0A7H0O2O057P7M8y0O0s2m2N8c1=8n8B0p0O0c0O0B0l1x8u0e0O161T2e0U0W0O0D0I0O0S004R0I4T8v0(2d0{1:8p671/8v8J1}0A0s8J1j8#0p8!0G1j2.8#0s8q8s8u8x4m3x1^1$1(1*7-3x6u047z4u0V8y0W1J8504870O8i0+0r8m0@0.8f0b8h8j2o0U8v2e0?0p92210p0^1:0B0p0v1w000Q9s2o4l8l2R8e9I1:8r1/8u0(0j8s0O9T982O3Z9b1`1)2s740K0z124%4)6a9l4m049n847,9r2I7H0w0:9E8`0{8!1h0;0I0v8H8$2H0(a88m977P9a1(9=9e6=120g4c9 4x8X0X1k0A0!0!0.0m8#8%0b4S1:0-0y0I9D0O2$2H0O0ja8aK8#3#9Q0p8%0S0O1y9E9)3A9,53ap9:ar9d9@7C7r8;7h9~8A9y9.1:a:1_a=9f3Za^7f6E6;6Gav7K5Qa_axa|0va*9*a%9-a/409;b26n9h9j838A6e1Q4o2?bma;1{a?7.2l2n2z2B2D0D8h109E0k0J281j4c4r7-344u8y6 4DaD7i1?6I536!a@4P5RaK8)4U4W4Y4!4$4(a`356U125Bb@7q5G5I0b4{b{7C4-515~6z7r6Zc1bC59823G7BbCb55kb?b8747vc57q5v045xb%cab_bZ6O6Q4_b cu015M6x5Oc6765#au047bcGb^4.czc7bb605XcP6`5+czcB737C5Wawcma@7ech6}784A5?6C2ncS0}6H126Kc/756P5H6Rcycr58126Wc}b4cFb35L126(c)ce65c8cjcY5qc@5AcNd3c*cQ0Rc@9h5,c9c~040Zc@cZc@cg7gc)bW7E0.7H7Jc#cfd314ay7SbR4f4pdH0-670v04.
Fonction gagnant

La fonction gagnant prend en paramètre le nombre de joueurs au début de la partie (n > 0) et renvoie la position du joueur gagnant.

Attention, les positions des joueurs sont comptabilisées à partir de \(1\).

Exemples
>>> gagnant(1)
1
>>> gagnant(5)
3
>>> gagnant(13)
11

###(Dés-)Active le code après la ligne # Tests (insensible à la casse)
(Ctrl+I)
Entrer ou sortir du mode "deux colonnes"
(Alt+: ; Ctrl pour inverser les colonnes)
Entrer ou sortir du mode "plein écran"
(Esc)
Tronquer ou non le feedback dans les terminaux (sortie standard & stacktrace / relancer le code pour appliquer)
Si activé, le texte copié dans le terminal est joint sur une seule ligne avant d'être copié dans le presse-papier
Évaluations restantes : 10/10

.128013nFTmwOgPo,6]uRa8bsr[vcej-1S9_d(xiyk02; 5à+l4t/.3)Afh:=é7qDp050E0x0T0p0H0R0s0N0w0R0p0s0s0$010T0H0+010406050s0n0e0e0p0t0I040B0j0R0n0 0j0b0N020p0e0+0M0N0o0x190t0)0n0x0s050U16181a1c140+041A1H051K0U1K1M1H140E0H0v0@0_0{0}0!0H0h0!0R1!0!0T12050/0r0R0x1V0`0|011Z1#1%1#0T1-1/1+0T0r0j0E1c1,0t1I0T0!0@1f0s0+0p0b0}0L011;1X010Z0;0x0b1n0x1+2c2e2j1?2m1/2p0e2r040a0N0i0t0j0+0j0s0H1i1k0-2a0t0t0x0w2M1A2t0b1I0U282Y0T2625270E2v0}1%0b2o2J1+1S1U0^1=2,0H2.0b221T1+0+2R1I2W2Y33152d1k2@2k2|0t190R120N0A2V3713362u391?3b3d3f0L3i2e3k2W2+013p0p3e040N0W3t2X143w3n0}3z3B0N0S3F3v373x3L3f0O3P3H3R3J3y0j3c3A3f0l3W3l381W3o3#3q3C0(3*3I3-3K3/3%3C0q3?3Y3^3!3$3M0C3~3m403T040A0K3P1J311A2=2#0E2)3x0w222B0,1T1I300x323j4c4l0-4t462^010J120-0Z4c3@4A0f3f4G3 4A0b0Z120h0p0h2p0b0T4L4z2k11040F4X3,4N120b0r0D0y0j1x0n0t1z1B4u4H4Z120X0#3W0N4 0N3+3S124.4:4=3P514_1?0j120$58523Z4!0u4%3x0J0w120d0t1x5f5a0}4C040Z3#5s4M3a120H5z4Y5b4J042`5E4(3a0r120t2e0h0x5k5h124$4@3u5g474*4,550x4;4?355t014!0X0m4~505Z4)5I5K3x5c045e5X2X595A1?0e0H124b5~1350605F5u120f1Z1/5_3Z0b5#4-4/5(57676a5L5b12020h0T0M6h4063123h675?4`044}670669696E3o5C6y4A5{5}336q535I0b1S0w0x0D300j0w0!0:0b0D5p5r6D5,4!5W5+613K546m5)5T404!0k6P5B5^6/6@5-4{5;6K6U6i6_565*4^745i6|5@5D736b75045:6p6M0}6R701?5m120c3A0s5S6I784 7q3y6O7p5,7s7H746j6W6Y6!6$6(6*6,5q7A6?7l6;7h715%6{7k6r0}6~7t6^727W7(7m0X776K7E7M4+6l7c7+015{0z6S3j796z64493W6J5=5,5v2R0T4;0b7|7M7j6T7E5{0Q7|6A856I1A4w4s4d8s0U4g1A0T4i8x2%2Z21232#0p1.8u4g1G4y7/2R0e0D0Z0p0J6!0!0W121s1u1w1y0N6H351N3k1H0*2e0?0_0N5x0b2T0H1j518r044R4T2e4W0U8_0k0N8@4l182o6Z0N2d0t0@0t0%0x9a8.1%0s0T1:2O211f9d0b0s910T4/0?0%4R0n0G0N0P8^4m3x1^1$1(1*8L5l5n046-7V4u8 4m3C0F9s0n8-8!7#4=0N0s1j0T0N963#1:2o0N0y5(0X0V1J8)040g2N0%2K4T1:1/9,6`9a0E9#0@001y9$9}9T9a0p0v2S9B4x7j8_0N0F9A058r9D1(1`1)2s748n668%ag0p0n0N0E0%0r1h984/9f1:9X824A1a2L0!199j0G12090F0A097;679/9;8K9@0N0_8;9*9p0n2L9|0p981a0 1:1w0H2a4V2`1x9,9U1w009A978Za#1:2|0e0r2RayaG9 0?9!2L0N9v3A9zad1:3Z9Eao9H7E8n6Cau9Q9:8(8K0Y0@6)b10%0/0+1:6H1Q050n0R3k1%04930!9e6(9|002`7Oayax7Q6)2`9~569%8;9)b#9,5(0N6x0UbK14bK8@a#000%1%632.b+1Ab.05b:1k2d0{1:awbZ6n9Za*0v8}b(0x0Z0Z2S8cca0nb`2|0nab0R9}2RbP0tbPbtb}0UbH9=bw8.2m2Na,8/1j8=1j918@2R0b0v0j0H1:ak9Cbkan9Gaq7l8g7|8k8m84bq9OavcAb80N9j0b0H9a940+9jbUay0%0w3A4Sa(2$9|8!bS0H6Z0?0E8,a#a-9hc;0.b20?0b170%2Gd29WbabtbF8v0.0:0=04.

###(Dés-)Active le code après la ligne # Tests (insensible à la casse)
(Ctrl+I)
Entrer ou sortir du mode "deux colonnes"
(Alt+: ; Ctrl pour inverser les colonnes)
Entrer ou sortir du mode "plein écran"
(Esc)
Tronquer ou non le feedback dans les terminaux (sortie standard & stacktrace / relancer le code pour appliquer)
Si activé, le texte copié dans le terminal est joint sur une seule ligne avant d'être copié dans le presse-papier
Évaluations restantes : 10/10

.128013nFTmwOgPo,6]uRa8bsr[vcej-1S9_d(xiyk02; 5à+l4t/.3)Afh:=é7qDp050E0x0T0p0H0R0s0N0w0R0p0s0s0$010T0H0+010406050s0n0e0e0p0t0I040B0j0R0n0 0j0b0N020p0e0+0M0N0o0x190t0)0n0x0s050U16181a1c140+041A1H051K0U1K1M1H140E0H0v0@0_0{0}0!0H0h0!0R1!0!0T12050/0r0R0x1V0`0|011Z1#1%1#0T1-1/1+0T0r0j0E1c1,0t1I0T0!0@1f0s0+0p0b0}0L011;1X010Z0;0x0b1n0x1+2c2e2j1?2m1/2p0e2r040a0N0i0t0j0+0j0s0H1i1k0-2a0t0t0x0w2M1A2t0b1I0U282Y0T2625270E2v0}1%0b2o2J1+1S1U0^1=2,0H2.0b221T1+0+2R1I2W2Y33152d1k2@2k2|0t190R120N0A2V3713362u391?3b3d3f0L3i2e3k2W2+013p0p3e040N0W3t2X143w3n0}3z3B0N0S3F3v373x3L3f0O3P3H3R3J3y0j3c3A3f0l3W3l381W3o3#3q3C0(3*3I3-3K3/3%3C0q3?3Y3^3!3$3M0C3~3m403T040A0K3P1J311A2=2#0E2)3x0w222B0,1T1I300x323j4c4l0-4t462^010J120-0Z4c3@4A0f3f4G3 4A0b0Z120h0p0h2p0b0T4L4z2k11040F4X3,4N120b0r0D0y0j1x0n0t1z1B4u4H4Z120X0#3W0N4 0N3+3S124.4:4=3P514_1?0j120$58523Z4!0u4%3x0J0w120d0t1x5f5a0}4C040Z3#5s4M3a120H5z4Y5b4J042`5E4(3a0r120t2e0h0x5k5h124$4@3u5g474*4,550x4;4?355t014!0X0m4~505Z4)5I5K3x5c045e5X2X595A1?0e0H124b5~1350605F5u120f1Z1/5_3Z0b5#4-4/5(57676a5L5b12020h0T0M6h4063123h675?4`044}670669696E3o5C6y4A5{5}336q535I0b1S0w0x0D300j0w0!0:0b0D5p5r6D5,4!5W5+613K546m5)5T404!0k6P5B5^6/6@5-4{5;6K6U6i6_565*4^745i6|5@5D736b75045:6p6M0}6R701?5m120c3A0s5S6I784 7q3y6O7p5,7s7H746j6W6Y6!6$6(6*6,5q7A6?7l6;7h715%6{7k6r0}6~7t6^727W7(7m0X776K7E7M4+6l7c7+015{0z6S3j796z64493W6J5=5,5v2R0T4;0b7|7M7j6T7E5{0Q7|6A856I1A4w4s4d8s0U4g1A0T4i8x2%2Z21232#0p1.8u4g1G4y7/2R0e0D0Z0p0J6!0!0W121s1u1w1y0N6H351N3k1H0*2e0?0_0N5x0b2T0H1j518r044R4T2e4W0U8_0k0N8@4l182o6Z0N2d0t0@0t0%0x9a8.1%0s0T1:2O211f9d0b0s910T4/0?0%4R0n0G0N0P8^4m3x1^1$1(1*8L5l5n046-7V4u8 4m3C0F9s0n8-8!7#4=0N0s1j0T0N963#1:2o0N0y5(0X0V1J8)040g2N0%2K4T1:1/9,6`9a0E9#0@001y9$9}9T9a0p0v2S9B4x7j8_0N0F9A058r9D1(1`1)2s748n668%ag0p0n0N0E0%0r1h984/9f1:9X824A1a2L0!199j0G12090F0A097;679/9;8K9@0N0_8;9*9p0n2L9|0p981a0 1:1w0H2a4V2`1x9,9U1w009A978Za#1:2|0e0r2RayaG9 0?9!2L0N9v3A9zad1:3Z9Eao9H7E8n6Cau9Q9:8(8K0Y0@6)b10%0/0+1:6H1Q050n0R3k1%04930!9e6(9|002`7Oayax7Q6)2`9~569%8;9)b#9,5(0N6x0UbK14bK8@a#000%1%632.b+1Ab.05b:1k2d0{1:awbZ6n9Za*0v8}b(0x0Z0Z2S8cca0nb`2|0nab0R9}2RbP0tbPbtb}0UbH9=bw8.2m2Na,8/1j8=1j918@2R0b0v0j0H1:ak9Cbkan9Gaq7l8g7|8k8m84bq9OavcAb80N9j0b0H9a940+9jbUay0%0w3A4Sa(2$9|8!bS0H6Z0?0E8,a#a-9hc;0.b20?0b170%2Gd29WbabtbF8v0.0:0=04.