Démineur

On souhaite générer des grilles du jeu de démineur à partir de la position des bombes à placer.
On se limite à la génération de grilles carrées de taille \(n \times n\) où \(n\) est le nombre de bombes du jeu.

Dans le jeu du démineur, chaque case de la grille contient soit une bombe, soit une valeur qui correspond aux nombres de bombes situées dans le voisinage direct de la case (au- dessus, en dessous, à droite, à gauche ou en diagonale : chaque case a donc 8 voisins si elle n'est pas située au bord de la grille).

Exemple

Voici un exemple de grille \(5 \times 5\) de démineur dans laquelle la bombe est représentée par une étoile :

image

On utilise une liste de listes pour représenter la grille et on choisit de coder une bombe par la valeur -1.

L'exemple ci-dessus sera donc codé par la liste :

Python
[[1, 1, 1, 0, 0],
[1, -1, 1, 1, 1],
[2, 2, 3, 2, -1],
[1, -1, 2, -1, 3],
[1, 1, 2, 2, -1]]
Compléter le code ci-dessous

La fonction genere_grille permet de générer des grilles de démineur. On pourra vérifier que l’instruction genere_grille([(1, 1), (2, 4), (3, 1), (3, 3), (4, 4)]) produit bien la liste donnée en 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 : 5/5

.1280137xh1ç5-js3:/S n!é0eI.]R2cfaoàw4)(+,_u[b=èv8imtP69pdrgylkù050Z0t0U0B0S0%0j0o0z0%0B0j0j0O010U0S0Y010406050j0L0T0T0B0!0$040n0C0%0L0}0C0p050m1416181a120Y04051q1j1t0m1q120Z0S0Q0=0@0_0{0@0p0#0L0B0#0t0h0Y0$0U0d1h0o0d0S0#0d0%1V0d0U10050-0N0%0t1C0^0`011U1W1Y1W0U1(1*1$0U0!1r1Q0=1d0j0Y0B0p0{0y011,1E010A0/0t0p0B0T0t1$2123281.2b1*2e2g100a0o0V0!0C0Y0C0j0S1g0p0o0+1 0!0!0t0z2B1j2j0p1r0m1Q2O1{1}1|1%0Z2l1F0S0p2d2y1$1z1B0?1-2Y2!0p0C2(1$0Y2H1r2M2O2^13222C2*292.0!170%1$0B1T2H0A0{030K0K0z2/0t1Y2-0C0h0e3j100o0e1j0B2_2|112{2k2~1.303234360t38013a3c3e3g2#3j0h26040o0y3p3r233t2M2X013y0B331r350d37393b3d0+3I2.3K0k3m0k3Q2L3s123U3w0{3X3Z053#3%3E3)3H2Z3J3k0F3m0F3=1k3@3u2}1D3x0C313Y3A3$3C3(3G3+443-3k0g3m0g4a2^3^2|3V3|4k403F3*3f4q3i3k0W3m0W4w4c3_4f3{4h3z3!3B3D4E433h3K0b3m0b4N3S4y3v4Q3W4S4j4U4l4W424p4Z3k0R3m0R4(2N4*4e2+4-4i3}3 4m414o4G4^0h0X3m0X4}3T4z3`524T3~4V4n4F3,4I3j0s100e0s5f4 4A4.545m575o4H3K0e0e5t3o0m3q3?4)4d5y534C564X4@453j3M0e3P5K3R4~5O5i4B4:4D4?595V0e3/045/5w5%4,5)5l4;5n4Y5.475;495!5M5$4P515_554=585p5F4t5;4v624b5N652 5z5R695D5a0e4K5;4M6g4x5@666l5*5S5,6b3k0e4#5;4%6u4O5h5^6y5`5+6a5E6D4`5;4|6I6i6K6x5Q6z6n5}4r3j5c5;5e6V646X6k6Z6N6A6P5a0y5s046^5?6j4g6:685|5U6%0y5H6`5J5L6h6-4+6Y5k705C6$5q0y3M7i6|6.6~7d5B5T5-735:0y3;6,5g7b6/7o5{7f727h5 0y61786v6}4R6 7p6B6Q3L6d0y6f7I6J7y7n4/6;6#7D3K0y6r7%7l7W7L7A6O6o5V0y6F7;7*507z7Y7e7q6C3L6S0y6U7U6W7+5j7`7N6?7:6)0y6+827a7^7X5A7B7|7P0k6_8l7@5P7-6=7/6%0k758u8o5(6M7{7O5a0k3M8D5f1u2?1j2(2R0Z1}2W5i4F2%1A1r2=0t2@3s631r4F8W2k0S0Z0{3b2M5F3A8%8)886%5H0o2p0t8/8s5q753=7K010(100+0A8Y6w290E3m948~0p0A100Q0C0S2z2e1L997m0{0 040H9k840p101i798#8f9m100J8Y0o953x101=2!9q9x019n9A9v9C9a103d0%1h9H9v9D9y040G0l8Y129V3U8.018*2|7$8-8(9*8:7h278@8_7g9-2O5L8~973N0oa09I3V0j0Z1001a70o0x2d9e0S1+0@0o1Y0j0U1+0+0;3d4h0Z9T0r0t0;al0oac9hatae350z0^0t9#a29)9+233.9.9^7#3k3/8?2f8^9:8`aJ9{9wa3a59 a0a!0o0H9G0t0J1 9S0p2!0G0o2d0o0#0P0!230Uagas0=aC0;140!a{0;0Nao0j0v0oa701aE9%4zaG0K8+46aKaS9_bhaP2gaL7r5q5 3Qa#9W3W9d9fax9Bbu0C100Obz8~9n0M0wbb2`9(9/aH0p3K6d5lbeaT4s9?aQbo7}bQ5!bt8~90040A4hbE9lbv040%b+840C9~2Zb:9J0p0N10a^1HaDbc849n9pc0b_b{04170ca25ic2ca4,0T0S105vc43V9Lb^4A9F1V9U2^9Ob,bB040hcm5icf5tcd519n0G9Mcrbub`10cf9ubKb,cccj5(9tcB29cl9NcHco0#cq3scsb;100Icxcecg6`cS1.cD9ZbJ8XbL8/bg0h6rbRbM9;3K4KbmaR8B5Vc`b!a#a!bub%b)0!c)669Qdc29b=10b@cV9ac6b}9jcP4,cOcM9rc6c8c-9Xc3ds9Jcz04cidzck9zdf9E049R9Tb cG8~cucwdkb,dB5JdEcb10cEdH3{dudjdVdq10dyc=b,9s04cLd+c1dGdR9r9Q1ddLdZ01cuc(d?dAc+5Zd%cCdXc:9v9$dEbec^6Fc{bX7P4#d0ee5aecd5d6d6d8di93d dF9odwb-b/dpe404cFc!cWdJeucDd{cu0qbDerdWetex2 cXcZ3SbucUdNd,d^a,eQ2NeSdX9!e7aFc|c^6SedbjaM0h4`ehe-bp3Ke+eleme`eCaw2Z0jeucu0veud-0B0Y0Y2d0ZeEd)d*eR9Pb.faezd{d-0zfg0G0Gc;fdbde)9,3k6)e,d26%5ce;fw5qfue_eo042H0U0L0!d/3Sc#b_bw9ge~foeZc?9:c^5ubifA5F5sfzc}6D6_3Qe8d:2Ceafs3j8|35bSbkf/bVbne=7}5G1$62b$913Ceu9~9CeN3x9c042Z0z2H2g0paj0Ke}0pe g5dxf3100#0!0/1*fgeAfLeCa(grfieWd`gj9Ke#fRaWf-aI6D3Mfvf$5Wf^d1gK5Yf}9|b,g3d7gAa4a6a80u0pga0rgcaj2D1+0e0o0U0C1fa|1*ama~avbx44at000L2!0ob40T0N0tb7b9gD5OgFbO6D5:gJbT3jaO9@f`7P5/gQaZfMcn04gggieUc$04eJhqfNhng^9idMf+esfcfSd,c62ofghCaWcQ04gngphzfpd;9Ygs2NhlhKgvgAeTeBfedKa-hOhDhQfne%cjh75Fbrf;c|hc0e47f#h=brfDf b(b*eK5^9Fgwh ddeDi3dgb?fKhTe|hxhphAeLe$6vh,frgG3jbQh:ei5.4th^f?0ebZ3qe`hU4,b%0SeqhuhmhM0%gqhX100MglffiH040wiJgAfjfgbIi61.eHhthZct10dQe329dTfgigiY840z75030o2z0=1+0p00asa`220;g|1+g h1h5fTbN5Fc`inhg6pc hffY6Dd4iviwd7feiEiGi$c.iIiKewjk9XiOiKfkiMiTiC5id}iXgt8~i(9Nembui-10i/1S0B0ig.g(g+0Di:350Q3Y0tfIj1fqc@f.6EfXgOegjaj$hjf*hPf,ijh83je+j6jbj:gMio8;e^gR84b%92g298iQg71L2!2H0Kjih%hJd(eMjpb-i asfli*5NiijYik0efuj=gOfyj(h=fCj|9JgTa1gVaYb9a9ab9f1+i}a=goiFakakg$44fIg)g,0.kJ8?0c2C0C0)8?a:aijW8$j.7$f(kphc6^j^j77:f(f~b,gWhka#1*8?0Ch02HkPkf0ja*a;0Y0@0fa_b2g~k{h10;jP0%000.2E0+k#j-klj/74j#k+8=ksf?lmaVbuk?iwafahg(k kPan0!apa-ar0;0HfHl3asa/i{0jara:i93tkkfUf.7ilnlr26ire.lWlt8~lve`22a^0T0P1{h2b8a7li0oh-3k7ulXl#hebWk.7shjb#eVd.eGbCfihF2dhHiKk fll?l^3Lh/l@h;lrh@lql#h`jea18~jG04i/gZ2A0S3Y9g0B2B2Dg{g}k80ogbl3adkPdD4clTj3l_immij_7hiqmme?mPm1jgm3k8m5hsd{bGiPkddBmLjAb,d9h~jwi0dJd_h$eGi8m7b|23dokddriem?lRe!9Yjvi+9Jm:dbiU3{ePk9ix51dhg8lRng2 dmm~k9n5hIeCn4bFdXn7kje9k%l_j5mRl 7hj9l~j?7%j*e(lk7$eck*lrj%nGgK7;mYmqb,msi/0V0@0zaea|lA0,a}0%0z0Lk_g;avjTfIay0;0B1f2Hg=0jkgh+nynLl_j;nCnHe:mV7}80nUnl1.nagxb.cpnpnufhncb-h#eY3NbAm{ojd-mciMki5$mNbflVkoo3nSkrnRk+kuk@mZd@hLkIjjn2eym*oMeOoecYogcN10jriQgym_jum$jziadOi!eujCcroa0{nX0ol30Bn#ag35kfmenz0h8ll{mWo|f!o68kk:mpenfeg9gb2dgehomaoXoJhNi2m=i4hWn0d=pioQoloTh)9Bo-01o/p8g$pa1+n|0;pcn~hAmf8uo~7}pGl!o pGaVj+h(ljlUik8DpH8klZp28CgIh{m/b|0,fInkeCm#pDeR0m8!8H8V8J8S1j0U8Mp@2U2P0B1)p;0m8K9$0+0-0/0j04.