Aller au contenu

Pavage de rectangle avec trominos

Cet exercice peut être considéré comme un mini-projet collaboratif où les tâches sont réparties en équipe.

Dans cet exercice, on considère un rectangle de côtés \(n×m\) dans une grille et des trominos pour le paver. On utilisera le même codage des trominos que dans les exercices précédents.

Exercice

Coder une fonction pavage_trominos qui prend en paramètres :

  • n : un côté d'un rectangle ; on garantit que n ≥ 0
  • m : l'autre côté du rectangle ; on garantit que m ≥ 0

La fonction doit renvoyer une liste de trominos qui pave le rectangle. Chaque tromino est codé avec un tuple (i, j, sens) tel que défini dans les exercices précédents ; i et j désignent la ligne et la colonne du carré central du tromino, et sens indique son orientation.

⚠ S'il est impossible d'obtenir un pavage, la fonction renverra None.

Il sera possible d'utiliser

  • la fonction est_pavage (réécrite pour l'occasion) pour vérifier votre pavage ; il n'est souvent pas unique. Tout pavage valide sera accepté.
  • la fonction dessine qui vous permettra de voir vos pavages 👍 (help(dessine))
###(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 : /
.8805.128013x/.Tr;nbOylae%u)*d63m?(P+02è-],59fq!78 N_o=pcwgv4F1kéhtsSà[ji:E050t0o0(0n0.0m0)0O0U0m0n0)0)0S010(0.0T010406050)0q0w0w0n0g0l040*0R0m0q140R0i050d1b1d1f1h190T04051x1q1A0d1x190t0.0X0|0~10120%0.0W0%0m1O0%0(17050@0j0m0o1J0 11011N1P1R1P0(1X1Z1V0(0g1y0(0%1#1L010J0_0o0i0n0w0o010|1k0)0T0n0i120C1V26281_1%1|1Z1 21170b0O0z0g0R0T0R0)0.1n0i0O0=240g0g0o0U2v1q2d0i1y0d1@2I1;1?1=1W0t2f121R0i1~2s1V1G1I0}1$2S0.2U0i0R2Y1V0T2B1y2G2I2:1a272w2!1`2)0g1e0m170O0O0!2F2@182?2e2_1%2{2}2 0O0C3328352G2R013a0n2~04300v3f2H193i38123l3n300Y3r3h2@3j3x3c0H3B3t3D3v3k0R2|3m3c0u3I362^1K393N3b3o0O0M3S3u3V3w3X3P3Z0N3$3K3(3M3O3y0O0I3.373:3F3o0!0B3_3U2#3;3Y31321r343J3`423|313e473g49412`3*3y0!3q4f3s3T3E4k2 0!3A4o3C4a4j3=4t3H4w4h4r4A3}3R4D4q3L4c0!3#4J3%4b4s3}3-4P3/4R4G313^4V4y3W4Y0C3 4#4i4%440C462:4E4L4S3d4e4;4K3{4@0C4n4`4Q4z4.4v504W523+3d4C554$3)4(4I5b4,5d4.4O5g4F4.4U5l4?4(4!5p4|4Y0v4*5t4X440v4:484{5z580v4_5D514-5G4 5J565L3y0v545O5c435G5a5U5h5W5R5f5Z5m5G5k5(5q5A5o5,5u5A5s5:5F3y0Y5x5@575_5C4g5E5}2 0Y5I605K5i580Y5N665P685_5T6c5V4c0Y5Y6h5!6j5%6m5)5_5+6q5-695/6u5;695?6y5^2 0H5{6C623o0H5 4p675#6E656M6d6O6J6b6R6i4@0H6g6W6n6Y6l6#6r6E6p6)6v3y0H6t6-6z6/6x6=6D6J6B6_6I0O0u6G6}5Q2 0u6L4x6$4Y0u6Q776*3o0u6V7c6.746!7h6?746(7l6`6 6,7p6~0u6;7t737e6^7x6e746|7B6T3!717F4c0M764=7m3o0M7b7N7q0M7g7S6~0M7k7W7y3!7o7!7C7P7s7(7G0M7w7,7K7A7:4@0M7E7?4Y0N7I7`440N7M617#0N7R827)0O0N7V867G0N7Z8b4c0N7%8f4@0N7+8j7{7/8n7 7=8q580N7_8t3y0I7}8x2 0I816N4c0I858F4@0I8a8J4Y0I8e8N440I8i8R580I8m8V8y8p8Z8C8s8$3o0I8w8)3~8A8-0B8E6S3|3~8I8?4S3~8M8`4G3~8Q8~3Y3~8U923+3~8Y963n3~8#9a173~8(9e043~8,9i0!3~407d9n8=6X8 0!8_9t934m9p7i9j4u9A7O9n959x970!999I9b4N9E6`9n9h9M9f0!9l9T9j4)9P6I9v9s78930C9w9(974~9!7y9v919X9v9H9,9b0C9L9_9f0C9d9?0C9S9}9Y9Wa44m8/9m5B9/7)4m9+9q0v8}9?5Sac6T4m9^ag9|aga0a70va3aga69q5`al8@0Y9%ayaf9B4uaia70Y9=aJaoaG0YaqaO7w1B2.1q2Y2L0t1?2Q3L0U2*221yaW1zaU2=4w05a$0=2/6S0#170=0J3B8b0V2 a{8F0J170o0)0(0Q270X0n0W0oa 6S16040ybc6i171pa.6Nbe0G3B0O8f170wbh5!bnbpbr041;0R0w2%2sbu3jbe0r0/3I30308b0U0!17030O0(b30(2x000^2B0O0i0$0Ub30)bY1!0?0O1b0J1|b)0ibTbKbL8ba@040.a`4wbq6NbC177gb 6S0R170sbx8F0j172ibF3Lbebgbl8?17bAbC2)0)ce3:bHc9c5170L0Scsbi04bk2:c45Vc604c8b~bybtci5VbebJ4DbLcPcC5!b`2B0(0q0gcA34cR3j0#0U170Z3m0)bbcOb^6NbObQ0O0k2w0ob/2CcV1!a$0i0U0g0DbT21b=0O1Z0Ob7b9c,4;cPbyd8bacx5!cEcwcHbm170,0,cp42c$c(c*dacZb_170J3Ndg3E170-dA3L0Ra}b{cY3gc!4Lcb040g28dfcKbv17ch2=8Fbsdp1`bH0FdE3:b`dy0gd%4b170.d,1`dGd.dJ2HdL3{dNdP0idRdWbddUdZ39bje212d#b@bM6Nd)dzdke0bfe53kd.egbwedcydDdSbG17boel6n17c+0icoeocf170rd:1%d=dIeC3wck2pcmbEeycq17cNdbcQe96Sc:04bR0U1f0g0$0|1~1;3me8cQdwb{b}cB8beE2)0(eG01cgdV348bc1047Id_42cE020m0(0hdje.dXb{e?f1f30he?0ie4eM42cres3jeE280te?cgege|e~e/17f2f4f6dvf8enf7ct04fwfdfk4LdYfhd!eAbIe)eReS5VcT0?cWd@3ob_c%04c)0`dudKe 1`eUbR1~2x0o0%3N0{0LfOc.a?d.e-fzcj04def$2H8bbedofKe3f9g4e6170Fg3d emejg9eP48fPe*ea17cUfUe?drfZdtbpf(1%f*2x0$0-0+d70n0Xe!f=c-eRe+0of#ge04gg4ggidcf8f~gKgbe`f8d/g7e@g9gT3gbyfBgUeed$fH3:digofY0f0g0qf 3ZbNbPeV0O1ogA0X0o0eh03I06gig^c;f,0%0n1m0Gg{0q0Of,0j0 2xhdeX2Ae!b%b=dP0m0O0xf?fQcSf_feeu1~exgcdT04g!g0c00.177Ig1g9fa170SfydK8b0)2b04010*01gKgMd^gt12gvhf0 htgjf^e,hxg6fCcD170Ae?e|76h#01f10Wfxh.fVhKgLh*h4gkdOfTcXg.dsgJb~h`h%2w0=f/0gf;i3f@fRhwg+d-f}gBd9gSegffh/f{h;04h?io1`h^gKgaiudCiEhZ18gOfPe+gmi8iB1%gpf!c+gsh5g`0tgxgzb7gDikhudBiqb8d~g(cLdmiGiwhQ6NcEiAh:5!iDgXbeiFgXivg%g#dl04g*i_flhNi904g:g=iVc/g_bRg|b7g h1gFh+im04gIiUi|eOjdeTjfhe2wh81mi%h`b`b|h.gWj6dF170Eh@hH9jhMfEfcjKhIhYjAgPh,iOfVjBfYiTg?i(a#jvf,igf:0OgEeQiLe+jDiQeHi*isjrhDi:jFixdhjIjQjMj_i~hBi)j1hFg)iJh3iLjmhvi6cViPjGd(jZgriciWbRiYgyg}i$jli4f|gRj_hEa=cyj|i=fDjJj=01i{k4ezj4kxg$iEjNhPd^fX17jbj#idjvjhgBjj0eh2kt5Vgvgz0Wh90U0%0ohb0Rhdgz0t2p2u1!0thjeYhme$hphrh*j:f`kBcyevhAi-hCkKhG9fkMkEdikOfW6NhS17010:hXj_iJj$3:k%2xk?b?ksiMi5j;khipk6lgfDi^j}3jkGlFjHfEh}f5h.cJkHeNi2lvj/i5jWj9j!jtk$j(iff.j+j-ghkbl1h.kvlPfii/i eik2l9f|lBh`i@k076i10Fk9kbkcc#gli7jXkQgqibcBkUc;koi!gBkrj.gOddiri,j2eel@kziEmoet04l_fuizl|lclzd;j8kEgpkSlY5!gvkWg~h0kZlSjBb2m9l7eplRmakm0Ok(k*k,jAl+kEj0jNkDmz1%lHl3j~jOf4k0hJj3m0m1ilkdlVmCkjmPf%mUj)l$iij,mZlxl2kPgQmkg?i1mri)kAk7i.kJi:mui?j kEm+nfhCl jTm^m3kegnm{iajqmTjemciZkqn3mMjUcyl-mQkIncfIi;nomRk3nJ3{iHldnlm)12nnkynpkNj9mEklnAg`mIkYk!nsj%c;gC0gb|0.eX2v0O0Kg=bSk/bVbU0O2B0w0T1Re)mU0O0d0L09300y0J0n0U0qf30n140J0OkX0Ud51!2-0obC0o0gbSo00tbX0.2BeBjle+d*jEfadH2%fed{dQnaj3e_mmcyi0j3fNmMoEecnWehmtoHd?oKgloMgKoPnOnMlOnRl/04oUmhk#kdlylIg,dHe;l,n9itl;nNnZnPnLnSo!k2m?m@mNnukgo`dqm|nycZmbg`0_0O1e0in{1!h9pm0R2%0{0q2U0|0 g?06kalp42gv0fn~heb40O0jg|0LpNo6lUm5n$g;pA7,b`a_egdHbqi b1bzd|0)0~2Ej_o+p3nMoSeeeroYivo.oQhCp=pe2`eIbBbDl6p_mRo=l)pD1`fSkfm6j30,p-bynelCiylEm,i)p:ngp{qjnMnjlDlNgKqnn7f|l5gKoCoYebd+kEfqp1qfi1quqgmslBqHh.qxj_qzp|eDoIqaf|clq0my48pVa^c^pYa~p#17f~0Q0C0Q7gi10yq4gNn.d(m4q9fpdmqdlae}qtm:r0kElihU0*llqyqIh`qEl.iCjLl}j3r9e{jL7bqMr3hT010P0klmrc1%e74Dq!04pXgXpZiup$q+0vq,o*q=3snGm_pRqDq|frjLm;p;r1j_rhlhrnr6rro/fLo;rUeeq}6Se|rkrgmxrTe?r4rorqqyj5qZe+ryrs12rAq)j@ba0Q0u0Q7oq:rHiKq@ip28q1qviylfh`ivq+q-q/oOqQq?q6g5saegcEmLr{oZ0o0cbT0ifop,i:e%ewp*0.1oo*rO17r+rRnmrPr2p?q*n9q,q.rG0rslrIs8p}04spgXsri:svsxszstrbrZg5sCp)ojsFqlhCr(5Ve|7krloYfssOqRj?shsTp,sVsWs7snj?s#sts%p1s)1~s+s.g8efp1s:sEsGsAgXs r.sMc2t0qop6rDrFt5sVpPf|tbtih{17sstFivtfsysHtlp(tns@mRs_i`jLsjsLs~tVtvscmstysKngq;tBoDpQq`m#17tE4grwr`tFr}st0irCsR0Is3rGp9sft:ewn#t/r 0osStWt)t7pCu2s!u4s$tHs(swtgtNt`eIsatQumtFr*t!qJlGsNtssPu7u9sUucrJi)t;o,g,uiteuktMtpunp%ups=tos,e1tquxuT04r$s`tZuyt1oZt%uCtCcyuGp.uI04tIq2nMtLthu=lQtTi)tmuRtRkIu{3Le|aSr,tt04t(p`o~i+u8siu*t,h,oFu60#o#eFm#oLd}oNr%sI04s|oTu1uEnMu-mvu;uHs90T0Tulp,v13:e|c3mvqit#i)vju$tw42s{m%h.vPuXuZ5!r:0*r=qPuDsYsougtcuJuO0nvDvFuX0yvHvSjL7As}u%trvXr/rn0Pr7v%u+msvynku:i:v/vEuMv=v@rd17vttXv|uWtFekoYv!w2uXt+mhbyw6fDvAu.vCwbu^vBr!v?vr7sv{vRwfvsuuh`r:rprYu_o:wrq5pbm`uzu-pBr_q$rzq(t`t|vb0QqWcnurwPsZu lQvYi)p^wBrteAu1wYn6wx1`t_tJp$0J1R0Tw,w@j?qOwqvvv)12r:c?o11~0Xpt1!d6l5xf0(k/cXe!k_bSeJbDwOsXgGn5qNhzkNsehRw0wpwljsnFxboZx8u%g-rmljv#xvt8m23Lb`gIo_wHg5xLxY12lev xPv$uXxaxxqwxAnU04xCrVljw1xRudvwq^pcqUl4x/4;udm!uzx~m-cGuzw?uvlJ0pk0vKw7cvrSx+l0t-nvqAfY0P1opUx{dqmOxXvNp/jNy7u%p@xByhxGmSwSyrq7q_ylu%g2r@t=yGgujv2wk/pmpIbV0woh14o4k^1!7VyO12xV1Rw|uey5j704ycv6yefDygv6rQngx,ueu-l`mBuzq+w*eLv=i:y9wGyvp6w/wQyjh,yuyap6y}e/oIsbzfpf17yo2UjSxIt901q8yJx#ztynypzcjnjpvpy`n-lTjVrLoYg2weg5qLv5uzqGzOyzdxx3x5w}xZy0yDwRzwqBq{tkuOzQwizwm$vQz8ipx!x6gYo;vkoJu6wungyM3sy2n)bRc@pJyWf315d62yy$xJy)zeuey9y~y/k07bAfhOyCw-w^yEsmxTzgv+xMy yKdmz}xSy%ztdxoXzSp2l`qTo%dOo)uNuswkAmtjw;ywz.zlwIuahCs6x`lwvgACz,nToYeEz_p?vnmlz=s-ANkFAMA-eqqsARh`utqPy{o@uFAsA/tdv.v:wcyDwDqFwKkLA^xDxPxFA/bHv(pawtA z=B1tJt:B3wAzWtjB6z)jNvMASm*rjB8fABur-v~xOhUwNqyBgAqysx}h.wWz juc;A2yVyXA6y!0O0vb!g|0iohheyV0O0.o3bYw4ntxWy+q:z5yBv6rfeet7AF17A!z/wCi:y-lJAky;qyy{iNzIu%gpzoyqxJgv2w0a6 B$pmBTyZf-BWhbb,300w0OCfBXb,B)27oAB,xUytB/f8C0u/y:tYsJB=CGq lnzAw5BjBwx$AuzwyLCMntvhzPz^CD4bA+zDs^vry_v9u6zar!APvIu#x9n4AZqCuzqqcDAGvmo(vozVrituBaf8z6zRzwA`C;zrBJsZz{m-wwwtBoo*zLj?z*qmh.zNz+B}1%woxRi1z!xwm@Bizkvzw9DgvGj{BBv6v8mRC.lADECJB@DlBEr;DsoTBIAzz$u6qfB`vlA*C}A,Bqz?DiA:jRD2f|C,AnDIwIDGkIAWm1Dxsqv-Bms!DBwdDDD+u!D*BDwnrWBdA=o;DSAYu,CODzp1wav;B5D(ivDWvLBCyDD/BxCHE0vZw0x*zZE9zszupdA#ufzkpBAzCd0O0S6 0#0O0A3@CnB%CsB(B*CxvfzBy*A@A%hNx=r)C:yDC5ykEzDpy(zyzprvEEyQEGEIEKEMChCqCf0HEQCwC@wSgHm}E7E%tDCOAjvad90Qt~s4skCUCz04CWADEki?C{DZAIC~AKA/v}Enh BzE!D1D8o?EakdFgEAC_dhFkyzC#C q~AUDHEWFrDFC4nrExinzJuUBtx:02lLEZE1047EDtvkB|CPD%nijNFWh~v6FbB^A|l*f8Dcy.DeF@D}EhD E3ADDnDNE4BcDQB^EwDwF@Ecw7F`tDF|BedUEil=EXmwFNErk5DKwjlbGm3LwMEuGfE8Fdx|FAE*oZFic5FEz,FGFoz=e|F#D5GAivD-AOAhFOD9D^uhw8EeGeE7BsD{DkC*CJC)FKDOrXBHC=EbDyGbDAwzDhF~AtGkDLFtFZD;w:x(BFGuE7DuAyAayIE)F)ivwW1qa:0o2Ior2Ia*2JaY1q2MHk0n1YHdaV1H350d0=0@0_0)04.