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 :

🐍 Script 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"
(Ctrl+Clic pour inverser les colonnes)
Entrer ou sortir du mode "plein Ă©cran"
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

.128013y1-]/wi_qP+r 79fIg;2Rçàh)(pn0ld,4kjĂ©e!bmc:35a=o[.8t6sSĂčĂšuxv050F0L0Z0T0h0E0#0n0P0E0T0#0#0U010Z0h0B010406050#0)0O0O0T0m0b040$0V0E0)0 0V0C050f16181a1c140B04051s1l1v0f1s140F0h0+0@0_0{0}0y0h0s0y0E1J0y0Z12050/0N0E0L1E0`0|011I1K1M1K0Z1S1U1Q0Z0m1t0Z0y0@1f0#0B0T0C0}0u011W1G010q0;0L0C0T0O0L1Q1?1^1}1Y201U2325120a0n0k0m0V0B0V0#0h1i0C0n0-1;0m0m0L0P2q1l280C1t0f1/2D1,1.1-1R0F2a0}1M0C222n1Q1B1D0^1X2N0h2P0C0V2T1Q0B2w1t2B2D2+151@2r2V1~2!0m190E120n0c2A2/132.292;1Y2?2^2`0u2}1^2 2B2M01340T2_040n0R382C143b320}3e3g0n0H3k3a2/3c3q2`0S3u3m3w3o3d0V2@3f2`0!3B302:1F333G353h0o3L3n3O3p3Q3I3h0Y3U3D3W3F3H3r0p3$313(3y040c0D3-3N2W3)3R0c2|1m2~3C3.3_3:0c373~39403^2=3Y3g0c3j463l3M3x4b120c3t4f3v414a3*4k3A4n484i4r3;3K4u4h3E433T4A3V424j3;3#4F3%4H4x0c3,4L4p3P4x0u3?4R494T3R0u3}2+4v4C4I0u454%4B3/4*4e4-4G4q4!4m4=4M4@3Z0u4t4`4S3X4U4z504Y524!4E554w4!4K5a4)4U4Q5e4/4x0R4W5i4N3R0R4$3 4.5o3Z0R4,2~1w2)1l2T2G0F1.2L3E0P2#261t5C1u5A2-4n055I0-2*4{1Y0I120-0q3u0n5t2=0q120+0V0h2o230s0L3u5%1Y11040A5=4?33121k5Q5|0}5^0G5#5?3p121$2P5{5V6212644n5$613d125I0E1j6a606c015^0z0Q3@3c0g2`0n6z6b51010#0F12020j0)0V0Z0t6H6J6L6N6K0t0n0v225+0h1V0_0n1M0#0Z1V0-0?5I3G0F6n0K0L0?6)0n6W5.6;6Y0T0@0`5;4X3c6E6y6z730n0A690L0G1;6m0C2P0z0n220n0s0(0m1^0Z6!6:6|0#7o160m7n0?0N6,0#0X0n6Q6P6I6R7B0t3B74666j046@2Y0#656i0V120U7P6q5^0W0e7H737J5X040q3G7U6C0C687*56010V6x042Y7.3x0N127k0C5:6B7/5^5`6p7+7`04190*7 3c81893E0O0h125m5y6i637^4C681J6o2+6h6q7R040d8l3(8e4k8c3(6s6f8q7J0C858e5 2-8j12828K6q7,048J8i7V6e8w428n0s8p2~8r6C8t0l8W1~8y045x397J6s6t7Z746A6i7$7(0m8*5}040P8}0}7;127@6g8F857|7~83808M8A428H0T889b8a9d9j8d8f048h8/8L048D8#8F6k1f6n6~8E7Q128v966i8,5r9r8U040z9u398$7/8G128I9e1~8b9m3/5~9U5@8V9F8P9x7b8!9O7J8(91018,8.2C8:120z8=4u8@9|9P3c7$0h5!9%6C9W8O7+7-9X3_8ka39Q6k9!6d9L9/8t0M7Tac9k5_af7K77apab9B9(8 9y7c9A8Ta49^6u9{9}aF9w7L5,6^ap8t0Xap8Q0T0B0B220Fas8M8NaAad040EaV9t9/8Q90a99V9^0z8?9~3E7$2w0Z0)0m8S9,6i8Q7M0C7O4u4(3(7$5Za(5)7?0C0P2w250C6%0ia~b0a69caoa+8~0s0m0;1Ua$9N2Ca:9Ya!8oaz9JaBa%am8maw9*by9?9s9`5n1~7=7Ibl0}71047FbS7D6L0n0rb90m0Kbc6%2s1V0c0n0Z0V1h7o1U6*6}0?a~7o0F02030R0p0t0)2P0n7w0O0N0L7zbT6O6MbU7GaE8^avbgai7Sa(5*aJ2Y0T9abianaXbz9Q852da$cpbHavbnbpbG5UbA9Mchbw8ZcA9@bBaua7bE9za$a.cbbu3_8`7)bCbva#bO6r9$cKaZa*c#3c93b8cEcecY5^aD4%aG8_94a2c(bDcy0Ebqc.120WaOa8cn3E5^0ed0cYa)a$7YcV3_ajalc_3(8t9Ed38x9o9IcwbAc:9v6i0P0c12030n2o0@1V0Cb_b{0t6:7m1@0?b~1Vc1c3a/c=cxboc|cH9sd7dk8Xa!dadUaY3xaec~04dbdgdd120ldfdr6q9H5#9|7Jdtdv0n1j0n0T0Jb,b$b)0xdx6{0+3f0La^3Bb2cS5Y0Lc^d/7+b75:2P2w0ic{c}dVa,bkeo8~dL6:cOdq477JbM7!cYbQc67Ec96T6V5,1VdJ7hdQ1Ub%2sb!2Ye77t2t0/cz0n0C0*2r0V0%eX7f6$6v3EbQaFeN2!c22weOet0#797g0B0_0w7l7uc00Vc27oe20EdCb|0:2t0-e*3(e,9}6Z6#b$e?eO6+0m6-7c6/0?0Aa@e`6:7edH0#6/7fa`4g6ifc9|1@7k0O0(1,c47Ac9eD6La/aHfy3h9-cgdc2=cs22cud104e?cOfNdsdu04dwbX2p0h3f5-0T2q2sf5b}b em1Vbbe`6XeO9q3l7Ia|12f_cf04d.a{9K0WdZcq3c8,f fQc?7%cUd*2=9)cNfT1Yc*95gk33981^cmd!d49ler678RcOd)ef7/cT8|gogBargJ7:7=grgF7_7{gvdS9KcvcBaZfPcI0zgE4706g16qd^f)2i0_0P6Y7ofh0.6|0E0P0)eNb/6?e6a^6_0?0T1h2wb:7qbh3 g)6CgHcEgLgAcZcJgQbD6lgngs92gOfPcRglfZf0c3h7gcgy04ewg09}aHg4d%gbdoaZhdgx8B12d6fYhjaydag5g7btfR8uapd;6ghp1Yg+dwe`0Tg/6!6{etdN7!g2b8ba0Lb#0Lbfcja fXd8g3eMgUbAbsggavhHhvhJhgg8cLhN9+hFancP8qhY0}h!0n2Ybab!22b$h66?h^hu3lg(h-6qa=0.a^hohBh}3L0f5S0L2D2(iF5B1C5D2G2J2E0T1TiI0f5C14iS0.0:0=04.