Aller au contenu

Paver un rectangle avec des dominos

Exercice difficile

On recommande fortement de faire l'exercice précédent avant pour se familiariser avec les notations.

On souhaite paver un rectangle \(n×m\) quand \(n\) et \(m\) sont impaires avec des dominos et un monomino.

Le monomino est en (0, 2)

Cela arrive parfois que le pavage soit impossible...

Exercice

Coder une fonction pavage

  • qui prend en paramètres :

    • n et m deux entiers strictement positifs,
    • i et j deux entiers (0 <= i < n et 0 <= j < m)
  • et qui renvoie une liste de dominos qui finissent de paver une grille rectangulaire de n lignes et m colonnes avec un monomino déjà placé en (i, j).

Pour cet exercice, peu importe l'ordre des dominos. Toute solution sera acceptée.

⚠ Si le pavage est impossible, la fonction doit renvoyer None.

Une fonction dessine est disponible pour afficher votre pavage. Elle prend en paramètres n, m, i, j puis la liste des dominos. Vous pourrez donc tester dessine(13, 15, 1, 1, pavage(13, 15, 1, 1)), par exemple !

###(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 : /
.128013/.rnbOylae%u)*d63×m(P+02-U],59fq!78 N_o=pcwgv41kRéhtsSàCj[i:E050p0k0!0j0+0i0#0K0Q0i0j0#0#0O010!0+0P010406050#0m0t0t0j0d0h040$0N0i0m110N0e050b181a1c1e160P04051u1n1x0b1u160p0+0T0_0{0}0 0Z0+0S0Z0i1L0Z0!14050;0f0i0k1G0|0~011K1M1O1M0!1U1W1S0!0d1v0!0Z1Y1I010F0?0k0e0j0t0k010_1h0#0P0j0e0 0y1S23251?1!1_1W1|1~140a0K0v0d0N0P0N0#0+1k0e0K0/210d0d0k0Q2s1n2a0e1v0b1;2F1.1:1/1T0p2c0 1O0e1{2p1S1D1F0`1Z2P0+2R0e0N2V1S0P2y1v2D2F2-17242t2X1@2$0d1b0i140K0V2C2;152:2b2?1!2^2`2|0y2 25312D2O01360j2{040K0r3a2E163d340 3g3i0K0U3m3c2;3e3s2|0D3w3o3y3q3f0N2_3h2|0q3D322=1H353I373j0I3N3p3Q3r3S3K3j0J3W3F3Y3H3J3t0E3(333*3A040V0x3/3P2Y3+3T0V2~1o303E3:3{3=0V39403b423`2@3!3i0V3l483n3O3z4d140V3v4h3x434c3,4m3C4p4a4k4t3?3M4w4j3G453V4C3X444l3?3%4H3)4J4z0V3.4N4r3R4z0y3^4T4b4V3T0y3 2-4x4E4K0y474)4D3;4,4g4/4I4s4$4o4@4O4_3#0y4v4|4U3Z4W4B524!544$4G574y4$4M5c4+4W4S5g4;4z0r4Y5k4P3T0r4(414:5q3#0r4.5u4^4#5x4?5A4}5C3i0r4{5F533|5x515L585N5I565Q5d5x5b5V5h5r5f301y2+1n2V2I0p1:2N3G0Q2%1 1v5+1w5)2/4p055;0/2,5G0 0W140/0F3w5v1@0R2|675B3r0F14240T0j0S0k6c610113040u6m5M0e141m5|6d6o140C3w0K6835140t6s5R6p6B4p6D6y6u040+0M5o5%6y6K6C6E3r140)6S6I3e6p0n0,3_3e6a3j0K6:6%3G0#0p14016`0X1{0T0N0+1X0m2R0K1O0#0!1X2v0p0N0t2!2p0K0G0m0+0K6h1{0!0K720K2y2A250S1W0K0e0s6H4Z3e6@2|6:0K0A2t0t1l7b7d0K0k762u0Y0)0%7j0{0Q0Y7L2t0u6R0x0C0K6#0x0n3D4*3*7B6/6:6|0e6~700K0L1l1X2q0_007M7m0+0t2o0}0+1V6l4w7+3{7-7D0K0(0:777j2m822r0+1l7L7N721X242_7i0p000j1j2y0^0H6,6?6^7.0K6`013D8b6Y01636Q666M8J6P6w2-6N6n0N140o6X6O6G8Y8U140l8#5M7c145z3b8T5M8V040H0O8)5R8+3?6=3*6p6+4w8b8I6y8L2y0!0m0d8R308/5R0W0Q147^2R8H7D8J8L0+8N8S8P147Z8^3e8;8(8O6y8`8-2E9b9t148?9s4E6!6$9w8$049v9o9x0+8,8|3{8~9i919B3G940:97998.9k9e049g864)06926n6P7a7c2$0#9F3*8;8@9J5M6p0*0B9U9W3*8L0F3I9^449qa71@0N6.2!aa350f140d7s9+6U6n6p6r6x6n8`5t3b8J6W9|5R6P9rax9C040zaf6Z6Q9I2/6y9u9R1@9yaM1!aw9Nar9P049z609}146*a19.5Ma4a6aB9G040)aF01ac9q9#9A8Pah04aj0e6kaP0 aoa}3f8!aqaY04a!909V919p049;7d9@b35R8;0cb06P0j0P0P1{0pb0aoapaJ9/a9bf6(6Aa.6Pa-bw3GaR9a8J0#0V14000L00bqaZ7)b76;9314a50dbzbvaS8:ada=3ja@aiakbN6qbj9qaIbFaK140wa.asa.8;b=a*3;b-6Taub:9Lb0aObC8}byb{a804b#avc6bY8_aUaWcbb58 4)b8a23{a(bVc72@6!b^b!bza^a`a|c49S14bsam6tb2btb4b6ckcl9j8Zbb7J9?b0bhb,04blbn0ebpcz1@brcS0+b*6Lcd3zcscYaQccb/6nbHbJ0$bMc,a~bO7*a$9c9q9nc/cEaHb~a?c09Md0ce9Qcq1!9`9{c)3G8`d3aX6J14cj41cl9kbTa)deb|a,cta;cvb(a{alb ancBc2aUat2Echc(d7c*a,b.dAb4dI9$9Od9cGdjcia#b8babccPc^a/14bid#bkbmbob*0ucCdNayb}c%bWdtd#bEdQc:bI04000gc@dTbxb5bPcJ9Vdo04bUd@bBdr3{a:6Qb#cm2@cwb)d_dCd)cFdJ3G8;aEda0 c3e2bDc.d{d17%d?eud$aDdDdScDdUcIdmcKbRbucN9=2pcQd%cScUd,em6qd/dGcMaAexc504dPd4ePeceJe3e+b$6yc;d~0-e1e/eye4a1e89md@e%eq9_8%b?cfb^140Oddf33{b@eYdl49dnbSe9dqfccrbbduega.9~eTeGd#fee(cAe*f614dhdHf804b`fxaNdEb*0Bfg3neNeOa%dpcpedfne.eAbgcueE0eekdyd-eH8{eYe;ei6FdLfC6Veze,8*f7eYeLfhfOc|dKdZeSd#cReocTd+cWd-e!didKf2fWaCfGfmf-cXfHc-fzfZc+ghc_gjfT1!e@d e`d:e30ne5eMeNe8eagkd^gp0 efaefZf#cygm6zb+g27ygEeFetgQewe{e)f+baeCeEb_fAf)gLd`f=bg14gSgVfdf@g(aZfM15f{f|a+f~begLg1gLd*cVggg.cZcBg7bagag*gcd@h2gue|gXcMfVe#dBgoge0 gre_b*gwdWfPd;eQbdftd(g 14eWg5eYd.c#dM9AcLhjhfe-hFe=9KgdgbdffJf*a.grbLhpgxf`e7cMg{hweVg4hchib4hDg2h88DfDgCgZgQesg$dFg8hehTd}00c?hWhrf,aGh#g0eUg2hAh)h`e)h,hyd2fEhOh9hQ4meDgQbAhLg_gWh|bJhof^hXfNdXh!cOf g}i6idi8g6hEdhi2gRh^ikhlb1f.6ChHdOiqd~e0i087iocnai9Z98hbiyg|5u0b5~0k2F2*i+5*1E5,2I2L2G0j852F5+160b0/0;0?0#04.