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

.128013à«[3è4.»n/R8p)0Ehv7c256g%9f=buST,_l(wOaPké;:ors1qmyd]ji te+050!0*0)0N0%0J0V0(0u0J0N0V0V0C010)0%0n010406050V0E0Y0Y0N0U0Z040F0T0J0E0 0T0j0(020N0Y0n0R0(0l0*190U0X0E0*0V050k16181a1c140n041A1H051K0k1K1M1H140!0%0s0@0_0{0}0r0%0y0r0J1!0r0)12050/0D0J0*1V0`0|011Z1#1%1#0)1-1/1+0)0D0T0!1c1,0U1I0)0r0@1f0V0n0N0j0}0v011;1X010B0;0*0j1n0*1+2c2e2j1?2m1/2p0Y2r040a0(0O0U0T0n0T0V0%1i1k0-2a0U0U0*0u2M1A2t0j1I0k282Y0)2625270!2v0}1%0j2o2J1+1S1U0^1=2,0%2.0j221T1+0n2R1I2W2Y33152d1k2@2k2|0U190J120(0W2V3713362u391?3b3d3f0v3i2e3k2W2+013p0N3e040(0e3t2X143w3n0}3z3B0(0g3F3v373x3L3f0w3P3H3R3J3y0T3c3A3f0x3W3l381W3o3#3q3C0t3*3I3-3K3/3%3C0m3?3Y3^3!3$3M0A3~3m403T040W0p3P1J311A2=2#0!2)3x0u222B0,1T1I300*323j4c4l0-4t462^010P120-0B4c3@4A0L3f4G3 4A0j0B122`1S0u0*0I300T0u0r0:0j0I0G0U1x4L4z2k11040K4*3,4N12211f0*2o1z1B4u4H4,120H3P0(3+3S4Q4:3x4-0o0S3W0(5d534~3o120/0;1/52543Z0T120C5m5g3K0D122y573Z4-4/4|3u5n474?0T4^4`5y40595c5e5E4=040%5s4M2k5p040+5r5C2X5f5U1?0Y0%123h5!135e5$4+1?4C5R4F5-5:4;3a565_5P5V5q5Z335`55045j0J5l5-5 1?4-5b5-065/5/6b3K5}636j015W623j643Z5)124b6f6i5t4B120L1Z696m6z0T4J042|0)5T5;6k044@1/5J6a6z4-0d5K5Q5S6T5%0}4-0#6e336g6h5d6n0j6l6r6n5W5Y6M5{5(5*495N6,6n5?0%5^6F6#3y6:3u6s406p6q776.5i0:680*6X4 046)3j6+6,6y746/5R6^3x6p7t6t6{6w6*7p6N6A042R0)0E0U0j7w5F7s6f1A4w4s4d7Q0k4g1A0)4i7V2%2Z21232#0N1.7S4g1G4y6_0}2R0Y0I0B0N0P4U0r0e121s1u1w1y0(7l5D1N3k1H0M2N0Q0D1h1:2d0U0(2`0u0U0Q2A0j0)0*8e0_0(0s3A0*7H0(2O057P7M8y0(0N2m2N8c1=8n8B0E0(0c0(0$0T1x8u0i0(161T2e0)0h0(0F0%0(0J004R0%4T8v0Q2d0{1:8p671/8v8J1}0*0N8J1j8#0E8!0!1j2.8#0N8q8s8u8x4m3x1^1$1(1*7-3x6u047z4u0k8y0h1J8504870(8i0n0f8m0@0.8f0j8h8j2o0)8v2e0?0E92210E0^1:0$0E0V1w000b9s2o4l8l2R8e9I1:8r1/8u0Q0y8s0(9T982O3Z9b1`1)2s740P0u124%4)6a9l4m049n847,9r2I7H0U0:9E8`0{8!1h0;0%0V8H8$2H0Qa88m977P9a1(9=9e6=120z4c9 4x8X0q1k0*0B0B0.0H8#8%0j4S1:0-0s0%9D0(2$2H0(0ya8aK8#3#9Q0E8%0J0(1y9E9)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.2l2n2z2B2D0F8h109E0O0Z281j4c4r7-344u8y6 4DaD7i1?6I536!a@4P5RaK8)4U4W4Y4!4$4(a`356U125Bb@7q5G5I0j4{b{7C4-515~6z7r6Zc1bC59823G7BbCb55kb?b8747vc57q5v045xb%cab_bZ6O6Q4_b cu015M6x5Oc6765#au047bcGb^4.czc7bb605XcP6`5+czcB737C5Wawcma@7ech6}784A5?6C2ncS0}6H126Kc/756P5H6Rcycr58126Wc}b4cFb35L126(c)ce65c8cjcY5qc@5AcNd3c*cQ0+c@9h5,c9c~040oc@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

.128013à«[3è4.»n/R8p)0Ehv7c256g%9f=buST,_l(wOaPké;:ors1qmyd]ji te+050!0*0)0N0%0J0V0(0u0J0N0V0V0C010)0%0n010406050V0E0Y0Y0N0U0Z040F0T0J0E0 0T0j0(020N0Y0n0R0(0l0*190U0X0E0*0V050k16181a1c140n041A1H051K0k1K1M1H140!0%0s0@0_0{0}0r0%0y0r0J1!0r0)12050/0D0J0*1V0`0|011Z1#1%1#0)1-1/1+0)0D0T0!1c1,0U1I0)0r0@1f0V0n0N0j0}0v011;1X010B0;0*0j1n0*1+2c2e2j1?2m1/2p0Y2r040a0(0O0U0T0n0T0V0%1i1k0-2a0U0U0*0u2M1A2t0j1I0k282Y0)2625270!2v0}1%0j2o2J1+1S1U0^1=2,0%2.0j221T1+0n2R1I2W2Y33152d1k2@2k2|0U190J120(0W2V3713362u391?3b3d3f0v3i2e3k2W2+013p0N3e040(0e3t2X143w3n0}3z3B0(0g3F3v373x3L3f0w3P3H3R3J3y0T3c3A3f0x3W3l381W3o3#3q3C0t3*3I3-3K3/3%3C0m3?3Y3^3!3$3M0A3~3m403T040W0p3P1J311A2=2#0!2)3x0u222B0,1T1I300*323j4c4l0-4t462^010P120-0B4c3@4A0L3f4G3 4A0j0B122`1S0u0*0I300T0u0r0:0j0I0G0U1x4L4z2k11040K4*3,4N12211f0*2o1z1B4u4H4,120H3P0(3+3S4Q4:3x4-0o0S3W0(5d534~3o120/0;1/52543Z0T120C5m5g3K0D122y573Z4-4/4|3u5n474?0T4^4`5y40595c5e5E4=040%5s4M2k5p040+5r5C2X5f5U1?0Y0%123h5!135e5$4+1?4C5R4F5-5:4;3a565_5P5V5q5Z335`55045j0J5l5-5 1?4-5b5-065/5/6b3K5}636j015W623j643Z5)124b6f6i5t4B120L1Z696m6z0T4J042|0)5T5;6k044@1/5J6a6z4-0d5K5Q5S6T5%0}4-0#6e336g6h5d6n0j6l6r6n5W5Y6M5{5(5*495N6,6n5?0%5^6F6#3y6:3u6s406p6q776.5i0:680*6X4 046)3j6+6,6y746/5R6^3x6p7t6t6{6w6*7p6N6A042R0)0E0U0j7w5F7s6f1A4w4s4d7Q0k4g1A0)4i7V2%2Z21232#0N1.7S4g1G4y6_0}2R0Y0I0B0N0P4U0r0e121s1u1w1y0(7l5D1N3k1H0M2N0Q0D1h1:2d0U0(2`0u0U0Q2A0j0)0*8e0_0(0s3A0*7H0(2O057P7M8y0(0N2m2N8c1=8n8B0E0(0c0(0$0T1x8u0i0(161T2e0)0h0(0F0%0(0J004R0%4T8v0Q2d0{1:8p671/8v8J1}0*0N8J1j8#0E8!0!1j2.8#0N8q8s8u8x4m3x1^1$1(1*7-3x6u047z4u0k8y0h1J8504870(8i0n0f8m0@0.8f0j8h8j2o0)8v2e0?0E92210E0^1:0$0E0V1w000b9s2o4l8l2R8e9I1:8r1/8u0Q0y8s0(9T982O3Z9b1`1)2s740P0u124%4)6a9l4m049n847,9r2I7H0U0:9E8`0{8!1h0;0%0V8H8$2H0Qa88m977P9a1(9=9e6=120z4c9 4x8X0q1k0*0B0B0.0H8#8%0j4S1:0-0s0%9D0(2$2H0(0ya8aK8#3#9Q0E8%0J0(1y9E9)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.2l2n2z2B2D0F8h109E0O0Z281j4c4r7-344u8y6 4DaD7i1?6I536!a@4P5RaK8)4U4W4Y4!4$4(a`356U125Bb@7q5G5I0j4{b{7C4-515~6z7r6Zc1bC59823G7BbCb55kb?b8747vc57q5v045xb%cab_bZ6O6Q4_b cu015M6x5Oc6765#au047bcGb^4.czc7bb605XcP6`5+czcB737C5Wawcma@7ech6}784A5?6C2ncS0}6H126Kc/756P5H6Rcycr58126Wc}b4cFb35L126(c)ce65c8cjcY5qc@5AcNd3c*cQ0+c@9h5,c9c~040oc@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

.128013à[34.nx/R8p)0FhDv7c256Ag9f=buS-T,_l(wOaPké;:ors1qmyd]ji te+050!0*0)0N0%0J0V0(0t0J0N0V0V0B010)0%0l010406050V0D0Y0Y0N0U0Z040E0T0J0D0 0T0g0(020N0Y0l0R0(0j0*190U0X0D0*0V050i16181a1c140l041A1H051K0i1K1M1H140!0%0r0@0_0{0}0p0%0y0p0J1!0p0)12050/0C0J0*1V0`0|011Z1#1%1#0)1-1/1+0)0C0T0!1c1,0U1I0)0p0@1f0V0l0N0g0}0u011;1X010A0;0*0g1n0*1+2c2e2j1?2m1/2p0Y2r040a0(0O0U0T0l0T0V0%1i1k0-2a0U0U0*0t2M1A2t0g1I0i282Y0)2625270!2v0}1%0g2o2J1+1S1U0^1=2,0%2.0g221T1+0l2R1I2W2Y33152d1k2@2k2|0U190J120(0W2V3713362u391?3b3d3f0u3i2e3k2W2+013p0N3e040(0d3t2X143w3n0}3z3B0(0e3F3v373x3L3f0v3P3H3R3J3y0T3c3A3f0w3W3l381W3o3#3q3C0s3*3I3-3K3/3%3C0k3?3Y3^3!3$3M0z3~3m403T040W0n3P1J311A2=2#0!2)3x0t222B0,1T1I300*323j4c4l0-4t462^010P120-0A4c3@4A0L3f4G3 4A0g0A120y0N0y2p0g0)4L4z2k11040K4X3,4N120g0C0I0$0T1x0D0U1z1B4u4H4Z120m0S3W0(4 0(3+3S124.4:4=3P514_1?0T120B58523Z4!0c4%3x0P0t120G0U1x5f5a0}4C040A3#5s4M3a120%5z4Y5b4J042`5E4(3a0C120U2e0y0*5k5h124$4@3u5g474*4,550*4;4?355t014!0m0#4~505Z4)5I5K3x5c045e5X2X595A1?0Y0%124b5~1350605F5u120L1Z1/5_3Z0g5#4-4/5(57676a5L5b12020y0)0R6h4063123h675?4`044}670669696E3o5C6y4A5{5}336q535I0g1S0t0*0I300T0t0p0:0g0I5p5r6D5,4!5W5+613K546m5)5T404!0H6P5B5^6/6@5-4{5;6K6U6i6_565*4^745i6|5@5D736b75045:6p6M0}6R701?5m120o3A0V5S6I784 7q3y6O7p5,7s7H746j6W6Y6!6$6(6*6,5q7A6?7l6;7h715%6{7k6r0}6~7t6^727W7(7m0m776K7E7M4+6l7c7+015{0F6S3j796z64493W6J5=5,5v2R0)4;0g7|7M7j6T7E5{0+7|6A856I1A4w4s4d8s0i4g1A0)4i8x2%2Z21232#0N1.8u4g1G4y7/2R0Y0I0A0N0P6!0p0d121s1u1w1y0(6H351N3k1H0q2e0?0_0(5x0g2T0%1j518r044R4T2e4W0i8_0H0(8@4l182o6Z0(2d0U0@0U0Q0*9a8.1%0V0)1:2O211f9d0g0V910)4/0?0Q4R0D0h0(0b8^4m3x1^1$1(1*8L5l5n046-7V4u8 4m3C0K9s0D8-8!7#4=0(0V1j0)0(963#1:2o0(0$5(0m0f1J8)040M2N0Q2K4T1:1/9,6`9a0!9#0@001y9$9}9T9a0N0r2S9B4x7j8_0(0K9A058r9D1(1`1)2s748n668%ag0N0D0(0!0Q0C1h984/9f1:9X824A1a2L0p199j0h12090K0W097;679/9;8K9@0(0_8;9*9p0D2L9|0N981a0 1:1w0%2a4V2`1x9,9U1w009A978Za#1:2|0Y0C2RayaG9 0?9!2L0(9v3A9zad1:3Z9Eao9H7E8n6Cau9Q9:8(8K0x0@6)b10Q0/0l1:6H1Q050D0J3k1%04930p9e6(9|002`7Oayax7Q6)2`9~569%8;9)b#9,5(0(6x0ibK14bK8@a#000Q1%632.b+1Ab.05b:1k2d0{1:awbZ6n9Za*0r8}b(0*0A0A2S8cca0Db`2|0Dab0J9}2RbP0UbPbtb}0ibH9=bw8.2m2Na,8/1j8=1j918@2R0g0r0T0%1:ak9Cbkan9Gaq7l8g7|8k8m84bq9OavcAb80(9j0g0%9a940l9jbUay0Q0t3A4Sa(2$9|8!bS0%6Z0?0!8,a#a-9hc;0.b20?0g170Q2Gd29WbabtbF8v0.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

.128013à[34.nx/R8p)0FhDv7c256Ag9f=buS-T,_l(wOaPké;:ors1qmyd]ji te+050!0*0)0N0%0J0V0(0t0J0N0V0V0B010)0%0l010406050V0D0Y0Y0N0U0Z040E0T0J0D0 0T0g0(020N0Y0l0R0(0j0*190U0X0D0*0V050i16181a1c140l041A1H051K0i1K1M1H140!0%0r0@0_0{0}0p0%0y0p0J1!0p0)12050/0C0J0*1V0`0|011Z1#1%1#0)1-1/1+0)0C0T0!1c1,0U1I0)0p0@1f0V0l0N0g0}0u011;1X010A0;0*0g1n0*1+2c2e2j1?2m1/2p0Y2r040a0(0O0U0T0l0T0V0%1i1k0-2a0U0U0*0t2M1A2t0g1I0i282Y0)2625270!2v0}1%0g2o2J1+1S1U0^1=2,0%2.0g221T1+0l2R1I2W2Y33152d1k2@2k2|0U190J120(0W2V3713362u391?3b3d3f0u3i2e3k2W2+013p0N3e040(0d3t2X143w3n0}3z3B0(0e3F3v373x3L3f0v3P3H3R3J3y0T3c3A3f0w3W3l381W3o3#3q3C0s3*3I3-3K3/3%3C0k3?3Y3^3!3$3M0z3~3m403T040W0n3P1J311A2=2#0!2)3x0t222B0,1T1I300*323j4c4l0-4t462^010P120-0A4c3@4A0L3f4G3 4A0g0A120y0N0y2p0g0)4L4z2k11040K4X3,4N120g0C0I0$0T1x0D0U1z1B4u4H4Z120m0S3W0(4 0(3+3S124.4:4=3P514_1?0T120B58523Z4!0c4%3x0P0t120G0U1x5f5a0}4C040A3#5s4M3a120%5z4Y5b4J042`5E4(3a0C120U2e0y0*5k5h124$4@3u5g474*4,550*4;4?355t014!0m0#4~505Z4)5I5K3x5c045e5X2X595A1?0Y0%124b5~1350605F5u120L1Z1/5_3Z0g5#4-4/5(57676a5L5b12020y0)0R6h4063123h675?4`044}670669696E3o5C6y4A5{5}336q535I0g1S0t0*0I300T0t0p0:0g0I5p5r6D5,4!5W5+613K546m5)5T404!0H6P5B5^6/6@5-4{5;6K6U6i6_565*4^745i6|5@5D736b75045:6p6M0}6R701?5m120o3A0V5S6I784 7q3y6O7p5,7s7H746j6W6Y6!6$6(6*6,5q7A6?7l6;7h715%6{7k6r0}6~7t6^727W7(7m0m776K7E7M4+6l7c7+015{0F6S3j796z64493W6J5=5,5v2R0)4;0g7|7M7j6T7E5{0+7|6A856I1A4w4s4d8s0i4g1A0)4i8x2%2Z21232#0N1.8u4g1G4y7/2R0Y0I0A0N0P6!0p0d121s1u1w1y0(6H351N3k1H0q2e0?0_0(5x0g2T0%1j518r044R4T2e4W0i8_0H0(8@4l182o6Z0(2d0U0@0U0Q0*9a8.1%0V0)1:2O211f9d0g0V910)4/0?0Q4R0D0h0(0b8^4m3x1^1$1(1*8L5l5n046-7V4u8 4m3C0K9s0D8-8!7#4=0(0V1j0)0(963#1:2o0(0$5(0m0f1J8)040M2N0Q2K4T1:1/9,6`9a0!9#0@001y9$9}9T9a0N0r2S9B4x7j8_0(0K9A058r9D1(1`1)2s748n668%ag0N0D0(0!0Q0C1h984/9f1:9X824A1a2L0p199j0h12090K0W097;679/9;8K9@0(0_8;9*9p0D2L9|0N981a0 1:1w0%2a4V2`1x9,9U1w009A978Za#1:2|0Y0C2RayaG9 0?9!2L0(9v3A9zad1:3Z9Eao9H7E8n6Cau9Q9:8(8K0x0@6)b10Q0/0l1:6H1Q050D0J3k1%04930p9e6(9|002`7Oayax7Q6)2`9~569%8;9)b#9,5(0(6x0ibK14bK8@a#000Q1%632.b+1Ab.05b:1k2d0{1:awbZ6n9Za*0r8}b(0*0A0A2S8cca0Db`2|0Dab0J9}2RbP0UbPbtb}0ibH9=bw8.2m2Na,8/1j8=1j918@2R0g0r0T0%1:ak9Cbkan9Gaq7l8g7|8k8m84bq9OavcAb80(9j0g0%9a940l9jbUay0Q0t3A4Sa(2$9|8!bS0%6Z0?0!8,a#a-9hc;0.b20?0g170Q2Gd29WbabtbF8v0.0:0=04.