Exercices de dichotomie
Exercice 1
Compléter la fonction dichotomie
:
-
prenant en paramètre un tableau de nombres triés dans l'ordre croissant nombres
et une valeur cible
-
renvoyant True
si cible
est une valeur de nombres
, False
dans le cas contraire.
Exemples
🐍 Console Python>>> dichotomie([1, 2, 3, 4], 2)
True
>>> dichotomie([1, 2, 3, 4], 1)
True
>>> dichotomie([1, 2, 3, 4], 4)
True
>>> dichotomie([1, 2, 3, 4], 5)
False
>>> dichotomie([1, 2, 3, 4], 0)
False
>>> dichotomie([1], 1)
True
>>> dichotomie([1], 0)
False
>>> dichotomie([], 1)
False
Remarque
Vous utiliserez obligatoirement un algorithme de recherche dichotomique.
Compléter ci-dessous
.128013we+)vgx}:roÀèsfê38mTL/à;q=k_[9S2a.A4t{pPnéulci,DFI 0zù^-6dyhRNO7(b51]050*0c0L0H0U0S0o0Z0T0S0H0o0o0A010L0U0N010406050o0R0t0t0H0k0+040F0l0S0R190l0P0Z020H0t0N0y0Z0-0c1j0k0z0R0c0o050w1g1i1k1m1e0N04051R1K1U0w1R1e0*0U0f11131517130P0g0R0H0g0c0(0N0+0L0,1t0Z0,0U0g0,0S1}0,0L1c050|0=0S0c1%1416011|1~201~0L2628240L0k1S1^111p0o0N0H0P170G012a1)010p0~0c0P1x0c242s2u2z2c2C282F0t2H040a0Z0O0k0l0N0l0o0U1s1u0`2q0k0k0c0T2$1K2J0P1S0w1^2=2m2o2n250*2L1*0U0P2E2Z241!1$122b2 310P0l35240N2+1S2:2=3i1f2t1u372A3b0k1j0S240H1{2+0p17030C0C0T3c0c203a0l0(0@3J1c0Z0@1K0H3j3m1d3l2K3o2c3q3s3u3w0c3y013A3C3E3G323J0(2x040Z0G3P3R2u3T2:2~013Y0H3t1S3v0,3x3z3B3D0`3,3b3.0r3M0r3@2/3S1e3{3W173~400542443(463+303-3K0K3M0K4f1L4h3U3n1(3X0l3r3 3!433$453*484u4a3K0?3M0?4A3i4i3m3|4m4K4q3)473F4Q3I3K0)3M0)4W4C4j4F4l4H3Z413#3%4(4t3H3.0:3M0:4;3_4Y3V4@3}4_4J4{4L4}4s4P503K0s3M0s552;574E385a4I4n4p4M4r4O4*5i0(0E3M0E5n3`4Z4k5s4`4o4|4N4)494,3J0!1c0@0!5F5p4!5b5u5M5x5O4+3.0@0@5T3O0w3Q4g564D5Y5t4$5w4~5h4v3J3:0@3?5.3^2;1V3g1K352^0*2o2}5I4)341#1S3f0c3h3S5:634)6j2K0U0*173B2:5)3!6q6s5y5P6v0Z2P0c6y5%5A5+2=5/4?5r0B1c0`0p6l6o5q2A0b3M6R5=5I0P0p6O0U0T1_0L0l0t0U0c6X6L2A1b040;6/5H590P1c3b0t0=2+1J4B3_6Y596=0V6R0Z745r6{040T0U276.72636:2c6=0e0j6R1e7i6S0Z6x016t3m3.3:5L7u5g5z5|2x6C2G6F4 7E24610Z7N797k4l6O0c0=1r787a2A0l1c0A7W7Q016,1c5V7r7q3k3{7B0C6u3K4c4{7:6G5|4c7G2Q7I5{4R0(7@3@7O7P6_7b1c2C0P7$877Y7!8c587b0=1c2O6^8h6;1c6@7r7X3X6|6+6 1I8m6T7l1c0e8g8z177Z040(8D3|7)045-4X8y7t6r7v7;7x4w6w8R7C6A8V7}6E8S7`814x6J3;7O8s176N040b1|288J6Z7S7U0L8^598G020S0L0y7#7r868n8t048a8P5I6=7o7,8P7:7=0(4T7^8X6z5(4S2y6D7 7D819k84858-7%7c6,200c0R8}5r8G943i968E016=8q7.8d989a958.018G0d9F3p8`7V8r7%7m9b8~1c0w0w9)5r8L608O9$4Z9h8U0(4.9l9s8Z9`9q7H8%7J819{9w9x9K3|8:0U6Q9T9z1c7e7g9Y2c9H9I3Sa88_046}8w719P97176=0D9.9Z049B6-9E9?au9M1c0^9e9=at1u9^2u518W9}9o0(528#aR5A528+a7a79U8:2+0L0R0k8bad9Q8/0T1c0u0k1H7p9g9m9i5k9|a2805Q5kaVa~9tb07L3Qa!an598:4*ac9J9U7cag8@a-aF8 0g92ai7Rap8v70ay8A04axaE9L9A0~aCbtavaHaJ4Cbx8Q6y9i5Ca}8YaS5Cb2bN5AbLa6b8b988040`8{bo9V8fbjby1caB9Db#9Wb#8L8NbGaLbI8S9i5UaQb39~b`bQ9n6H5SaZa!a$1c3F0o7hb?9c1cbF5;bHaN0P5)6I7A9m8(5Q5*a07~b|aScoc3bVbWaz9Sbe7%9Hb#bz9CaDcza.b$8Hb/0U5Ta^cfa`9_5 b{bR5|cRb cm5)7z7M9ycHa%0{a*a,cGaF0Ba:040X3 c8cN3k0w6n646i666f1K0L69c~2{2?0H7g2=671Q7s5I2+0t0C0p0H0B0c0C0,7@1C1E1G1I0Zcd631X3T353|0H0*0t1t2#0U1`300p8G1Qdvdxdz2$0(190L2k041C6(0c0kdR0Z2t0k0Z1!6(0l6*6,7h1Y1T040Y0S0Z0o001/2#dY000R1u3 0g4H2#0,2Q2L0Udn0I0Z0v292j0c0H0RdV0k0U102EdV1k1x0n2m290*0ld=1f2m1t0g040l271}0H6*0Udb2E0L0Z0qek0Z2m0U0Q2/eq1,040I1V3T1R0m110,0Hdn7t0L0Q0kexdB0P0V0Z1`c8dY1D2u2(2!0Z130Z0f3 9DdX0TeBe!280Z1IeC0Q0ge^0Z0xe;3v056nbh7h6ndpeP1e0R0S3T2004e:0l0R0Ue(1`2+0P0fen290U1i0Q1!ex1DeB796na=a@c^3E2=fk1efke:3be%110{0L29fbe 0oeC0oeneC7ofhfj0Ufl0R0NeZaC2+f5f7e?e^a*fR0P2mf40j7td-de1reTdSdRdX0*2u10e=dW19el2W2#eleae7e90Z6@6nbZg00A0Zb+ea0d3N1K6n8C0wfL05fkdDf-e_29f6e=e@28f@e{f_e}29f|0~0Zf eCg3g3dYg6f;g96-0Zf30RdU0*gfd428ghgjfJ8a0Zgngp0Z0(gsfI0`04gvgx0wf%7qg|g~d*0v3v0#1tel292+gS0,290;0S000Q0T1keCe|29f9g-30gtfJe eChmg_gl8|g^6i0ed.h8fzfoeCf66(eV1HeXeZe#1`f|fm1u8ad=dW0Z0HfuezfEhn1u9092e,b!hx04e(0T00f00ZeWe=ht6ifbhpg_6Ch,fXeg10g50Pg7e6g)e80Re30/1ufZ0keC2(e=0=fn12290{0ZfshVhl6nc:0 fcfJeOds7qd70_1#dHdy0PdAdC6!dF1TixdJe$dL2#dO0.br291j0hfx3 e,eGfn0kh}29idg#2871d)1R2V32h 0Zd^0Zhghid?30dZfwiz19iRh;9930g=h$9#fdf2iRf69U1kd}1jfT0h1c090;5U0%0E09gv3ie(0;e{h.fofWeC2m0n100ge!0P0*0eiri$040WgVe~0Nezh710hh0ofq0$f;fV0Ph`eC2t103f0Qc8f_0cfq1u0k0Q3 ede6fni0106*a*iW0ZiYifjS2Z2!7g0ojy3Th1fk0Jea6hd%dXj,0kjYhTi+1ui.i9e ftez1`2(j4ec1^j70cj904jb090pe!0T0Mjd0E0i0M0G0ijg6Rh*jPf:1!f/kf7%j5kifBkljb0?0Z09192Q10jd0skz8rgwf)fMf)j~e,0RiP0nd k3k53vi,k9hjkc2W2%hlkHkhd~kKja0;kokq0MkNkPfxdokTkvkxkV9Jh+h-f6kEk@cHkIk`j8k|0Gl1kQl40!0%0:l86kkXf(040J30e:e/hD290IlC1Kgxj}gffs19k)j(a*k,k7i-hhka0*h,k;1`kgj6k{kmk}kp0Hkrktl60%0M0r0!0ikyjhamlah{lcjFd?2E0fkd1u0@irh0fid8lwh fpgUi*d^2920fXh7eG0}0Se~lWkJlilZktlr3_e(efgh0N1qeelU1ul,iTj-e)i70}fY0Ue;hf0S0Q2Qf_hXg_h?h(joebjUeBj`it6fit0{me0o04.
Exercice 2
On considère dans cet exercice des tableaux non vides contenant des nombres entiers, tous distincts, triés dans l'ordre croissant.
On cherche à déterminer l'indice d'une valeur cible
dans ce tableau à l'aide d'une recherche dichotomique dans sa version itérative.
Écrire la fonction indice
qui prend en paramètres le tableau de nombres tableau
et la valeur cherchée cible
.
Si la cible
est dans le tableau, la fonction renverra son indice. Dans le cas contraire, la fonction renverra None
.
Attention
Les tableaux des tests secrets peuvent être très grands. Une recherche linéaire naïve prendrait trop de temps lors de l'exécution.
Les tests secrets limitent le nombre de lectures dans le tableau à 100. Si votre code accède à plus de 100 valeurs dans le tableau, une erreur sera levée.
Exemples
🐍 Console Python>>> tableau = [23, 28, 29, 35, 37]
>>> indice(tableau, 23)
0
>>> indice(tableau, 29)
2
>>> indice(tableau, 37)
4
>>> indice(tableau, 10)
None
>>> indice(tableau, 100)
None
Question
Compléter le script ci-dessous :
.128013we+)vgx:roèsfî38mLT/à;q=k_[9S2a.4tpPnéulci,CD*EI 0-6dyhRNO7(b51]050#0c0I0F0Q0O0m0X0P0O0F0m0m0y010I0Q0J010406050m0N0r0r0F0j0$040D0k0O0N140k0L0X020F0r0J0w0X0(0c1e0j0x0N0c0m050u1b1d1f1h190J04051M1F1P0u1M190#0Q0f0|0~10120~0L0g0N0F0g0c0Z0J0$0I0%1o0X0%0Q0g0%0O1^0%0I17050@0-0O0c1Y0 11011@1_1{1_0I21231 0I0j1N1:0|1k0m0J0F0L120E01251!010n0_0c0L1s0c1 2n2p2u272x232A0r2C040a0X0K0j0k0J0k0m0Q1n1p0=2l0j0j0c0P2X1F2E0L1N0u1:2-2h2j2i200#2G1#0Q0L2z2U1 1V1X0}262`2|0L0k301 0J2$1N2+2-3d1a2o1p322v360j1e0O1 0F1?2$0n12030A0A0P370c1{350k0Z0p0Z0/170X0/1F0F3e3h183g2F3j273l3n3p3r0c3t013v3x3z3B2}3E0Z2s040X0E3L3N2p3P2+2_013U0F3o1N3q0%3s3u3w3y0=3(363*0p3I0p3:2*3O193@3S123`3|053~403!423%2{3)3F0H3I0H4b1G4d3Q3i1Z3T0k3m3{3W3 3Y413$444q463F0.3I0.4w3d4e3h3^4i4G4m3#433A4M3D3F0!3I0!4S4y4f4B4h4D3V3}3X3Z4!4p3C3*0+3I0+4-3=4U3R4:3_4=4F4@4H4_4o4L4|3F0q3I0q512,534A33564E4j4l4I4n4K4$5e0Z0C3I0C5j3?4V4g5o4?4k4^4J4#454(3G0Y170/0Y5B5l4W575q5I5t5K4%3*0/3H045$5S4z5U5p4Y5s4`5d4r3G3,0/3/0u3M4c3=1Q3b1F302:0#2j2^5E4#2 1W1N3a0c3c3O5|2,054#6d2F0Q0#123w2+5#3W6l6n5u5L6q0X2K0c6t5Z5w5%4b4/5n0z170=0n6f6j5m2v0b3I6L5+5E0L0n172{1V0P0c6R6F2v16040,6#5D550L172e0c0F0N6+545n6(0R6L0X6S6-170P0Q226!4x5}6$276(0e0i6L19756g3@6s016o3h3*3,5H7h5c5v5=2s6x2B6A4{7r1 5`3-0X7B6~5n6.040=0-1m6|7D2v0k170y7K77120r0Q175R7e3P7X5+7o0A6p3F484@7#6B5=487t2L7v5;4N3E7y3M7B7C7R3_172x0L7Q6,5n7N047P7X6}7|0L0-172J6@6N78176*7Z896/0F736=8e3^79816^7M170Z8s8f7S7U5(7c8p7#7%0Z4t7*6m7i6u5!4s2t6y7;7q7?8H3:7`88822v6H040b1@238x4W6I0c7I0I8(5E84020O0I0w863d8W8t3T7~2{8p5E6(7b7X7d3f7g8J7j2p3*4P8I8Q6v4O8O7u8K7,7?9b8U8V7`7L8|047T1{0c6?879p12848^3O8`8y016(8i958X9q7H7J9w7|840d8.6 047 8 558r9M9I9y170u0u9Q5n7T175_4T8D977$7k4)6r9.9j5M4*7/6z9i7w7?4*2-7_9n7{9Y018Z0Q6K9X8{4h70728%a99D8:8=0w9%3k8l8n9v9Haa9E170B9U7E179s0Q9uau6%170:929,8j4V8E9:0Z4~9c9|7=5M4~9`9d8MaK7^7Aa28V9x7}9S8~af3^9zak9qaxaza%8/8va*8z5P8CaG6k9.8F5gaM7p9e0Z5gaRaN8R5Ma|9ma2aZ8Z4$a88_aZ7F7173a;019z9A3=9C8)046:8oa^9D6(atbsboa,ao6e7|6(aDa@ap1paI993F5ya}8L5w5yb2a~aTbKb7aXa3aq8Z2$0I0N0j80a.9RbybEbAaHa`aJ5Q9=aS6C5ObPbM5=b/a0aW9nb9173A0m74bF8q17aE4ybwbH0L5#6D3q7+9}5M5$9g7:b3a chb{bUaY8k7G8+9Lbd9N7Obi7Fb)b%83179PcA2v9)8B939-6t8F5^b:ckaTcMb@9@5#7m7zcpa4bX0?b!b$cucX0P170)1oc2c73f0u6i5~6c60691F0I63c^2?2.8m232-611L6M3^2$0r0A0n0F0z0c0A0%7)1x1z1B1D0Xc65}1S3P303^0F0#0r1o2W0Q1=2{0n841Ldpdrdt2X0Z140I2f041x0P0%0c0jdL246Y1;0I0k7Tdh0X2W0M0j0F140f240i0X0v2l0L2A0o2h741T1O040W0O0X0m001*2W0X2Z0Od|0O0g4D2W0%2Ld 242$dPdOdMd 0QdL0kdTdV1C2G0Qdh0G1Q7Yd10;1WdBds0Ldudw6Udz1OevdDdvcadGdI0s3qebdMeddQ24e16XegdQ0N0Xczd=1M0s240P3{0P0Nd_e000eR6Zd eUbyeVdZ2W24dT1m3Y0k0Q0{dh0Odh0{3y1d2z0@0Q2$0m0G0X0W710X1=3a2S2U246h3z3^1$1(1*1,1.1?1|2b1}2Da4cy0_aybzbmaZa)cE8g6)aA9Jcs8-fE9Z04cDc$aq7F9Tbw90170ebi849#bicG9+6ec/3z04epdmd20*0j0Rd 2pf1dNf50L0{fmfo0{2Zff0gd!1I2X2lf30X230X0Sf:0~0Xf50Og70=0{f4ay0jgh0m0Ig60Q7T0I0M0cf90Se!e$e(6}4#fl2pfn1+1-0$fr2a1|1~d36Tawfya-fPagcwfLarfGfT9R9KfKgQa(cCcx8}c#b+aq9Wg!a/04fZgTf#6Rf(0=3-0J9ugn2o0jdye|0X0c0h0P0M0=0j0|0?0Ie@0^geePgpe?f90V1p3Y0n0?f:2Vg6di0=0N0hdX0L6Ydifj2Z5Efm1)gEfq291`gJfvfQ8*8,g?6ih1gnhye!55hBfogFgHhG2chI9DfRa$c.hN0m1ogng02p0#0mga9uh7h)g5hQgB1%hCfpgGhFftgKbehKct9BfCg$gTh#g)dlhNg`1md 0M2o10dNg63q0f3{h;gogqgteqd20Tf=h80|0 fd3igxg7eQhveSe.eVgOeU2z0X1mfy0m2pgngb0~0j1+b!e9g6e+0Lha0jilhddjgzfkhAgCh{hVh~hHgLb(iHfXgSg-gXfJi?fNbi9FfHaba#i92,bng.8wi7i2gZg*btfVi{g:i^9(8Af$iaf)f+eX04itf_hpiw0{3a0Mc1iYh:0Xff220le82|d`242Tc1jyixe#f/h11p0K1/1;0Lh:ghiYgj0{0L00h*jIf}hb0_iBhfhaf90t0ke_g h/0X0D0QiW1=0Fild~1eex0Je(0Me9jWdU0-f70X0n0Oei0@iYf`jF2RjAe8c1d!d~0F0Jg}eU92d=do5Edqeweyhj0h1s0JdIdAkrdCexdEeH2M0V0h1ykyd;dneui*h`hU1.3y1pi.hYi:5n2I2z2B172O0S1oh)g7jO1:1o6R6b6M3;6gc:96cK7k0H3GcNbQ4|k`3HcRcf8Gk{5X5:b4l36D7zaZ0g6(020g8?lelglf1vi a!gYi{blj3aZ0r6V040E0G7Wjf8u040U0Uf!8A5Q0E4acIc8b-99k`7mcd9?l2lMci9{k}3)lRl5lU46lRb{lbldljlh0wl)6}gWavj16|bVgR85f!ltlvlxi4cvlAlCg;lE0YlGi{fOl{a4cG3KlIc3c9l37)7nlPaOmclSb;lV7@lXb^lZ7@l#7|lc17l)muljl,c3gMcrhLgT9Og%l/87j4550P5%03ieigc12LiYiVe#2o71grb*76b,k^lL8Gk|mn3Dk`4tl1mgm)2t5a5JlQm#mqa4e46W6UmW7fmY8K6pk`9llOmjmo4Pm+l7n0m.4ZlYm(0Z9llamrl%linilkl-aBgVmyi_mBly27mDj7mFno6_jcmC9!lD9*l:aZmJ17mL0#if261yf4mRkk0FmUk0k8gkiVgbh?2Lm{d3mbk`9 men3nc9_8PcOk~0Z9_m/5Ym;n$nfm@84dxnY7!lKcak`aLn%n,mkaQn+nbl3aQn:l66vn aVl$mtl(og8?mxjabolnnzi|gTi~nl9qfSnrfMj6oulmi`or12g,m5aqfYnBlun{k@m~k_b0m$cSk`b1o5m%l3b1o9o6oPodmr840q0G0C0q0q0H0!0.0!0+0H0p5$0.0q0c0d0p0Y50m9f%c:1S5 0uesp1697dp20=gd0m04.
Exercice 3
Une sonde interroge à intervalles réguliers l'état de fonctionnement d'un système électronique. Celui-ci peut être en marche ou en panne.
La sonde est programmée pour enregistrer les résultats de ses requêtes dans un log. Il s'agit d'un tableau de booléens (une list
Python) dans lequel les valeurs True
précèdent les False
. La valeur True
indique que le système est en marche, False
qu'il est en panne.
Une panne nécessite une intervention humaine et ne peut donc pas disparaître seule : elle persiste jusqu'à la fin de l'enregistrement.
🐍 Script Python# 0 1 2 3 4
log = [True, True, False, False, False]
Lors d'une vérification on constate que le système est en panne : le log contient au moins une valeur False
en dernière position. On se demande à quel moment a débuté cette panne.
Dans l'exemple précédent, le premier False
est à l'indice 2
: la panne a débuté à l'instant 2
.
Écrire la fonction indice_panne
qui prend en paramètre le tableau de booléens log
et renvoie l'instant du démarrage de la panne.
On garantit que le log n'est pas vide et que, au moment de la vérification, le système est en panne (la dernière valeur du tableau est False
).
Attention
La panne du système a aussi corrompu le fichier de log. Vous ne pouvez pas lire plus de 500 valeurs dans celui-ci. Passé ce nombre de lectures, tout nouvel accès lèvera une erreur.
Il est donc important de bien concevoir votre algorithme car les logs utilisés dans les tests secrets peuvent être très longs : un milliard de valeurs !
Exemples
🐍 Console Python>>> indice_panne([True, False])
1
>>> indice_panne([False, False, False])
0
>>> indice_panne([True] * 10 + [False] * 100)
10
>>> indice_panne([True, True, False, False, False])
2
Question
Compléter le script ci-dessous :
.128013we+)vgx:roèsf38mL/à;q=k_[9S2a.4tpPnéulci,Dj 0-6dyhMR7(b51]050W0c0G0D0O0M0m0S0N0M0D0m0m0w010G0O0H010406050m0L0q0q0D0j0X040B0k0M0L0~0k0J0S020D0q0H0u0S0!0c180j0v0L0c0m050s1517191b130H04051G1z1J0s1G130W0O0f0?0^0`0|0^0J0g0L0D0g0c0U0H0X0G0Y1i0S0Y0O0g0Y0M1/0Y0G11050.0%0M0c1S0_0{011.1:1=1:0G1{1}1_0G0j1H1*0?1e0m0H0D0J0|0C011 1U010n0:0c0J1m0c1_2h2j2o212r1}2u0q2w040a0S0I0j0k0H0k0m0O1h1j0,2f0j0j0c0N2R1z2y0J1H0s1*2%2b2d2c1`0W2A1V0O0J2t2O1_1P1R0@202;2?0J0k2`1_0H2W1H2#2%37142i1j2|2p300j180M1_0D1-2W0n0|030y0y0N310c1=2 0k0U0#0U0)110S0)1z0D383b123a2z3d213f3h3j3l0c3n013p3r3t3v2@3y0U2m040S0C3F3H2j3J2#2:013O0D3i1H3k0Y3m3o3q3s0,3Y303!0o3C0o3*2!3I133.3M0|3;3?053^3`3U3|3X2=3Z3z0F3C0F451A473K3c1T3N0k3g3=3Q3_3S3{3W3~4k403z0(3C0(4q37483b3/4c4A4g3V3}3u4G3x3z0V3C0V4M4s494v4b4x3P3@3R3T4U4j3w3!0#3C0#4%3,4O3L4*3:4,4z4.4B4:4i4F4?3z0p3C0p4{2$4}4u2}504y4d4f4C4h4E4W580U0A3C0A5d3-4P4a5i4-4e4/4D4V3 4Y3A0T110)0T5v5f4Q515k5C5n5E4X3!0)3B045W5M4t5O5j4S5m4;574l3A3$0)3)0s3G464|5#5y4R534T565p5,0)425Y445;3+5e5^4 5`5B545D4=5 4n5Y4p645?664)5h695l555o5F5V4J5Y4L6i4r3,1K351z2`2*0W2d2/5y4V2_1Q1H340c363I6j1H4V6O2z0O0W0|3q2#5V3Q6V6X6q5U3z3B0S2E0c6%5T5q5X456l2p0x110,0n6Q675h0b3C6}6@3N0n112=1P0N0c0y3b2?725x4 10040$7e4~6m110M0k0g7k5g2p7h0e0i6Q136x2$5#6$016Y3b3!3$5B7C5}6r3z2m6,2v6/6d4H3#1_640S7W0S6~6^766|7z3%7Z210k7004300G6Q7Y734b7n7p7r3/7h0z7_5y0q0O115L7%7)0|7h0*7w7%7y393.7J0y6Z3z617I6W7D6(5q427O2F7Q5+7S8h7V7X8v84016_042W0G0L0j0J7:8x7 817x7_8d8f0U6f8i8q5~7S4n8o6.8k6:5,8P648a6P8c8j7E2j3!6t8Q8X7R5G4J8V8R7L0U8-8u7W8x0J6`0c0%1g8G7=010k110w937f5h8I04824N8L8)8e7F4Z6#9h8Y7S4!8?8/8r5G4!2%3G8w948~042r8F7%7;9a2p9604989D8}0%7n2t7}7g117j839y7@7q9T9F217u997l9G110U9#7s219c3E899g6%8N4^4.8d9n5G4^9q7K6)3y7U3G8$6y8(9;9j0U5a9@9m8:3!5a9|8l5,a83*9x9Y0|8z0b1.1}9*4Q8 917/9K949H020M0G0u9J379E9$3N119B9P5h7h889f9X6U9h8N5sa98@9~5sae9_3!aSai8v7X8}117 1=0c0Laq5y9HaC3IaE9+859RaJ3eas92avak95110da.68aH2=a`9Z110eb35h9H0s0sbb2p9c5:aN8b4P8Ma65K9laU6;5IaXab6*5I9v3%a$8|948z0O7$aDa(047o9WblaFa^047|aOa@3:a)0:0Oa,bg7*9(bX0|9-b7bN0*b!957,2j0Wb*7+117.b*9zbJb%017{b_9za*bVa-bQ7`11878Kc1bn8+6*6=3k9^bv3A6+6-br5 6=8{bAa%bC118B8D9CbG9U04b~bW9/c6aQbo7Hcbaa9s5V7Ncg9r8S5G5/a0bzbA8x8z4WbFa=8xb:7-0kaucsa b@7^c15yb{c%b4cubUcwbLbR86aM4scya5c83A8hcCch7S602ncH9}6;8t9wclajbMbS9Ab6a~d8a:b?bTa+c0cZddbZdcbRb$cxc/0Sc70J5V8Pc|cI8^0)8Ud1afc~8!d5cOcn043u0m0cb_aLc5dqds6sbqdx9~0)8=dBaY6*8`dFd6a?ar040,atb/97dfc,dhd,04b2dm3/dobk6P0s6S6z6N6B6K1z0G6Ee22-2(0D1|d 0s6C1F6TbR2W0q0y0n0D0x7a0Y611r1t1v1x0Sc=6y1M3J2`3/0D0W0q1i2Q0O1,2=0n9H1FezeBeD2R0U0~0G29040ZeG0JeI1K3J1G0r3k1=0m0G1~2i0`0K1~2t0S2i0j1m0l2be.e(0S0L2?0Se%e)0S2b0Oe-0E0S0Q2j0=790?0_0U0M0t0P0?001x0G0S0R0L78b 0h0S2T0H2tdK0j0S0te{e}2W0N0Y0c0jfC1~781+0G0k7 er0EeY7yec6B0-0/0;04.
Astuce (1)
Il s'agit d'une recherche dans un tableau trié : les valeurs True
sont au début, les False
à la fin.
Astuce (2)
Si le log ne contient que des valeurs False
, il faut renvoyer 0
.
Dans le cas contraire, l'indice cherché est l'unique indice i
qui vérifie log[i - 1] and not log[i]
.
Crédits
Nicolas Revéret et Mireille Coilhac
# Tests
(insensible à la casse)(Ctrl+I)
(Alt+: ; Ctrl pour inverser les colonnes)
(Esc)