Pixel Art

Une image de Pixel Art est représentée par une liste de listes image. Chaque élément image[i][j] est le numéro de la couleur situé en ligne i et colonne j.

Prenons par exemple les couleurs suivantes :

code couleur couleur
0 blanc
1 vert clair
2 vert foncé
3 marron
6 rose

L'image suivante :

Dessin original

Un dessin va s'afficher...

est alors représentée par :

tortue = [
    [0, 0, 0, 2, 2, 0, 0, 0, 0, 0],
    [0, 0, 2, 2, 2, 2, 0, 1, 1, 0],
    [0, 2, 2, 2, 2, 2, 2, 1, 3, 1],
    [0, 2, 2, 2, 2, 2, 2, 1, 1, 1],
    [1, 2, 2, 2, 2, 2, 2, 1, 1, 0],
    [0, 1, 1, 1, 1, 1, 1, 0, 0, 0],
    [0, 1, 1, 0, 0, 1, 1, 0, 0, 0]
]

On appelle zone d'une image un ensemble de pixels contigus par un côté qui ont tous la même couleur. Il y a donc 10 zones différentes dans l'image de la tortue donnée en exemple.

Pour personnaliser l'image, on souhaite, à partir d'un pixel choisi dans celle-ci, changer la couleur de toute la zone à laquelle il appartient.

Compléter la fonction récursive changer_couleur.

  • Cette fonction récursive prend en paramètres une liste de liste d'entiers image qui représente l'image de Pixel Art, i et j des entiers tels que image[i][j] soit le pixel choisi, couleur un entier qui est le code de la nouvelle couleur.
  • Cette fonction ne renvoie rien, et modifie en place la liste de liste image de sorte qu'elle représente l'image pour laquelle toute la zone à laquelle appartient le pixel choisi soit de la nouvelle couleur couleur.

Par exemple, après l'exécution de l'instruction changer_couleur(tortue, 3, 1, 6) on aura :

tortue = [
    [0, 0, 0, 6, 6, 0, 0, 0, 0, 0],
    [0, 0, 6, 6, 6, 6, 0, 1, 1, 0],
    [0, 6, 6, 6, 6, 6, 6, 1, 3, 1],
    [0, 6, 6, 6, 6, 6, 6, 1, 1, 1],
    [1, 6, 6, 6, 6, 6, 6, 1, 1, 0],
    [0, 1, 1, 1, 1, 1, 1, 0, 0, 0],
    [0, 1, 1, 0, 0, 1, 1, 0, 0, 0]
]

Le code 6 représente la couleur rose. La nouvelle image sera donc la suivante :

Dessin final

Un dessin va s'afficher...

Compléter ci-dessous :

###(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 : 10/10

.1280133ytbIzq)4ê_7uj:k8s(ar5.lRv21m+9ép;=cxSi,6fdg[!he P]ow/Cn0D-?Q050R0W0d0u0N0y0s0X0K0y0u0s0s0J010d0N0H010406050s0n0D0D0u0v0c040M0!0y0n110!0(0X020u0D0H0I0X0z0W1b0v0h0n0W0s050$181a1c1e160H041C1J051M0$1M1O1J160R0N0A0_0{0}0 0V0N0S0V0y1$0V0d14050;0e0y0W1X0|0~011#1%1)1%0d1/1;1-0d0e0!0R1e1.0v1K0d0V0_1h0s0H0u0(0 0B011?1Z010Q0?0W0(1p0W1-2e2g2l1^2o1;2r0D2t040a0X0Y0v0!0H0!0s0N1k1m0/2c0v0v0W0K2O1C2v0(1K0$2a2!0d2827290R2x0 1)0(2q2L1-1U1W0`1@2.0N2:0(241V1-0H2T1K2Y2!35172f1m2_2m2~0v1b0y140X0C2X3915382w3b1^3d3f3h0B3k2g3m2Y2-013r0u3g040X0b3v2Z163y3p0 3B3D0X0j3H3x393z3N3h0w3R3J3T3L3A0!3e3C3h0P3Y3n3a1Y3q3%3s3E0m3,3K3/3M3;3)3E0r3^3!3`3$3(3O0F403o423V040C0)473.2`433=0C3j1D3l3Z484g4a0C3u4l3w4n4f3c3|3D0C3G4t2Z1L331C2@2%0R2+3z0K242D0.1V1K320W343l3R054M0/4U4o3c140*0f0z0M3R0X3-3z0!140J4,4.3#13040t0t4W3_4g0D0N144d4C4!4w1^4_0O4?4~2m50144k375b57140i59544-5h0 4_4|544@425d04535g414g585a5z2m4:040+4}5D1^5v5f4V5o014_5k5C4#5i4`5I5T0 5L5W565p145l355n5J5Y515w5!3z5Q5(3l5*5X5P145r5y5^5F5H5s5O5Z605+5_045=3w5@5#015v5x5N645Q0i3Y4v3z0q140/0Q5/3#0#3h6p490Q140K0V2g0S0W0v0l4M0n1;0n0v6t5A5`6J4$040N1b6A6M5U672Z693U140N6S5$665S6a0(140o6!656U3E5t4p6w0!6F0W6H6,5Q0p3Y0X6~6W3#6)046E6G6C3%1$2|0W6%4/4;7b716Y6Q7a635^4_0T6,726Z7j6a4_0Z7m7q6X046+7v4^140Z6}6 6:6N6y1j6^6I5m7F1^5F4=7L5O0(0e142A6`6L7z497g0u6R7Y6K046h54066 707Z040{0v6A6_7Q647O7e497T7:2q7W5V7%6N6P7#7i5|7r147u873z6c800Z7*357,7E5O6l6O6o7^5^72747J7{4g5F0U7P5)7M3M6=6@6H0l770S79806|7+7-7-8z3A7!7$8b7A048a6e8p6Y8e8U3w8N727y8R427s8t5E7d8o6(8B757D8L7.4g8l0Q3%8+3q6m7p8(7(6.8@6N0R8%5?8N0!6r6O0(8|8A044(4*8I8=8?8j647o0l1U9d017`8.7w8 975O5F0E9q729p8K9k8M7R6*9o9668988-8y9G7x9q9y9A6m9J3I9E9F648l0N8n9N648d9t3#5F020y0d0I8x9w9m6Y9o9v9K9x149,9.9S047H0d8s9)4299142g0R9q9(9$5}9{9-9/9~0o9I9Qad9}a36;7:1c7?7Kab6aa504a79~848Q8V888T7n9?9C902m7s8Z4D9Oah958eaj040J9:9_9=736?758E0v782:9i9D9W8L8#6w6y0(6A6C8r7@aG5U5{aA9u7h8092a*6O9@a{agai826T9~a:ara^8S8g4m1C4Y4T4Ebe0$4H1C0d4Jbj2)2#23252%0u1:bg4H1I553z2T0D0l0Q0u0q0W0l0V0b141u1w1y1A0X8J371P3m1J0-1z0X0s1=2f0}0W0+0d0+0?bW0N0X1lbW0n0H326P1=1;0Xa10s0d0X2Q0{0X1|2:0X0m0X0,4-bRbw0f0(a10v320Gcbb|2g0^b@4Mca0W0La1b|b?00cm6B0K0N0K0W0x1L3m0/0;0?0^3#180Kcw0}143J191w1e1g1i2W1DcM1GbS1fb+b-18b:aZ2Cb 0ub 1$c10m0Ob,1m2q2(1=0Rch0X0nc10v0G0K6H2Mb-2|2o0(0Ncx060%crb`0_1=1yb+bX0XbZbX0v0=b{2Mc.0X0AaWdj0Xbz0H0{cw0vc%2c8Cdwb}c(0g1lbY1cdx0D0kc$b6cyc74G0:0=0@3mbhdPcD04.

###(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 : 10/10

.1280133ytbIzq)4ê_7uj:k8s(ar5.lRàv21m+9ép;=cxSi,6fdg[!he P]ow/Cn0-?Q050S0X0d0u0O0y0s0Y0L0y0u0s0s0K010d0O0I010406050s0n0E0E0u0v0c040N0#0y0n110#0)0Y020u0E0I0J0Y0z0X1b0v0h0n0X0s050%181a1c1e160I041C1J051M0%1M1O1J160S0O0B0_0{0}0 0W0O0T0W0y1$0W0d14050;0e0y0X1X0|0~011#1%1)1%0d1/1;1-0d0e0#0S1e1.0v1K0d0W0_1h0s0I0u0)0 0C011?1Z010R0?0X0)1p0X1-2e2g2l1^2o1;2r0E2t040a0Y0Z0v0#0I0#0s0O1k1m0/2c0v0v0X0L2O1C2v0)1K0%2a2!0d2827290S2x0 1)0)2q2L1-1U1W0`1@2.0O2:0)241V1-0I2T1K2Y2!35172f1m2_2m2~0v1b0y140Y0D2X3915382w3b1^3d3f3h0C3k2g3m2Y2-013r0u3g040Y0b3v2Z163y3p0 3B3D0Y0j3H3x393z3N3h0w3R3J3T3L3A0#3e3C3h0Q3Y3n3a1Y3q3%3s3E0m3,3K3/3M3;3)3E0r3^3!3`3$3(3O0G403o423V040D0*473.2`433=0D3j1D3l3Z484g4a0D3u4l3w4n4f3c3|3D0D3G4t3I3-3U4y140D3Q4C2!320X2!2@2%0S2+3z0L242D0.1V1K4M343l3R054U0/4#4o2m0q140/0R4%3_4g0$3h4=414p0R140L0W2g0T0X0v0l4U0n1;0n0v4`4,1^13040t5b4w3q140O1b525h3z5e0P3R0Y4E3#0)5k5o3#5q5s5u49140o5y425A4K5t4?3c4~0#570X595G4g5e0i0p3Y0Y5Y5K4{5M045658543%1$2|0X5B5L1^0#140K5/5#5j045l0u5n4K5C5T140U5S5$0O645d140!635 5:3M5E670 5e0!5X5Z605$501j5Q5a5J6m5;5?5^5c3M0e142A6g015e5g6c5_6e5{5m5.6G6x6D140i6k5Y6t6I0{0v525R6s6d015=045@6Z6H3A6z046B6M5i6h146F376!5w6J5}6L6@6*5e6b6}6N0E0O144d6/5p696Q4K065Z5!6N4.5{4;6)6N6_5(6q6w6:6#140V6(357e7p7l5O5)0l5+0T5-6C5e5W7b7d7d6T3A5k6K7E626C6_66775z69704$6^6f7T5H697o3z6$7t3l7v3U5N5P6Y357c7I6S6!7g0O7i7u7K7R7%3#6$0+7 42734H834g6$020T0d0J7*3w7,3#8504767|6!0#4^042g0S87657N7!61047W3w7}5x8v2m816C8i4k717p6i8y2Z8A045F8C68046j7j7p7)8e2Z8g5D5%7y6q7A0v5,2:7O047G7u8Z4g0L0D14030Y1l0_500)520Y2q0Y6o0d6R7?6l7Y5%8|52547m7:7X6~6=7Q7M6{8,5r8U7-5{8s6u04829m8h744b9k9p6I8P8I78049l8l6*7x7/6r9B7U047a7;958:4-5k7{7+8N7S9F6N6$0F9y018G9#890y8c9#6_927n9t428n148q9,9i5~9K7#8x9h9o9:88149!a02m9%8Q6;8S8L4+7w7Z9{8w8T9X8V5?8X3E8N9c5*8)7C8+a76O8-5s9Q1^8=8@8_3a991=900e0|949PamaC9b8$9d8z6!6E9~5|9`9e6N5Iah9n9W9U8ma29#a6ae2maWa!9GadaU8J149Ea,7k7.5)8,9N7+7=7?7K7_9T8f8N9Aa?ai9ra%9v8Hb57(148a8cakaw0 8i8kbb808o9@a45`aS6|a/9Caa9V8,6a9~b4b2a#b7bpbib9bx9(aj9^8#9I8(8*bsaO9fau5Jbh01ay048^8`4 511=0A0Y0T0u0n4 bP3I9P7J97b!8}5355aM9Jbt9L6?b{8!br9xbE7L9 a)8Ra=bBa-8ObIbDaX9u86asa+c8a@bLa_cg6P5sa}7Ia 9SbKbA8Y7K9Zb8cfcd9;bd9*0JbK6V6Xb`ci8Vbn0)8rc27R8uc5a8bv97aZbQaV7Vbzcba3cA4ga(b~afcb0Kbgamb_bNaqb-ab9C8.7+bUbWbYaBb#0Yb%0S2I2Nc=cpaIb;aKb^9I8,b}cWac6`aTdd9Cc7cvcUc1c$5$cualbCc#bl84bGcm9DbKana`3,0%4)4N1L331C4P1C0d4RdJ2)2#23252%0u1:dE0%4P1Ic?3#2T0E0l0R0u0q0X0l0W0b141u1w1y1A0Yc^8z1P3m1J0-1z0Y0s1=2f0}0X0+0d0+0?d~0OaAd~0n0I325l1=1;0Y0d1A0d0Y2Q0{0Y1|2:0Y0m0Y0,5td_dX0f0)ej0v320HeBem2g0^eh4UeA0X0Mejemeg00eM530L0O0L0X0x1L3m0/0;0?0^3#180LeW0}143J191w1e1g1i2W1De:1Gd`1fe98`18ed8)2Cep0uep1$er0m0Pea2q2(1=0SeH0Y0ner0v0H0L592M8`2|2o0)0OeX060(eR0seleW0Y1ye9d 0Ye1d 0v0=el2Mea0B7yfJ0Yd!0I0{eW0vf42c9IePfW0g1le01cfW0E0kf3aneYexdH0:0=0@3mdVf;e%04.

###(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 : 10/10

.1280133ytbIzq)4ê_7uj:k8s(ar5.lRv21m+9ép;=cxSi,6fdg[!he P]ow/Cn0D-?Q050R0W0d0u0N0y0s0X0K0y0u0s0s0J010d0N0H010406050s0n0D0D0u0v0c040M0!0y0n110!0(0X020u0D0H0I0X0z0W1b0v0h0n0W0s050$181a1c1e160H041C1J051M0$1M1O1J160R0N0A0_0{0}0 0V0N0S0V0y1$0V0d14050;0e0y0W1X0|0~011#1%1)1%0d1/1;1-0d0e0!0R1e1.0v1K0d0V0_1h0s0H0u0(0 0B011?1Z010Q0?0W0(1p0W1-2e2g2l1^2o1;2r0D2t040a0X0Y0v0!0H0!0s0N1k1m0/2c0v0v0W0K2O1C2v0(1K0$2a2!0d2827290R2x0 1)0(2q2L1-1U1W0`1@2.0N2:0(241V1-0H2T1K2Y2!35172f1m2_2m2~0v1b0y140X0C2X3915382w3b1^3d3f3h0B3k2g3m2Y2-013r0u3g040X0b3v2Z163y3p0 3B3D0X0j3H3x393z3N3h0w3R3J3T3L3A0!3e3C3h0P3Y3n3a1Y3q3%3s3E0m3,3K3/3M3;3)3E0r3^3!3`3$3(3O0F403o423V040C0)473.2`433=0C3j1D3l3Z484g4a0C3u4l3w4n4f3c3|3D0C3G4t2Z1L331C2@2%0R2+3z0K242D0.1V1K320W343l3R054M0/4U4o3c140*0f0z0M3R0X3-3z0!140J4,4.3#13040t0t4W3_4g0D0N144d4C4!4w1^4_0O4?4~2m50144k375b57140i59544-5h0 4_4|544@425d04535g414g585a5z2m4:040+4}5D1^5v5f4V5o014_5k5C4#5i4`5I5T0 5L5W565p145l355n5J5Y515w5!3z5Q5(3l5*5X5P145r5y5^5F5H5s5O5Z605+5_045=3w5@5#015v5x5N645Q0i3Y4v3z0q140/0Q5/3#0#3h6p490Q140K0V2g0S0W0v0l4M0n1;0n0v6t5A5`6J4$040N1b6A6M5U672Z693U140N6S5$665S6a0(140o6!656U3E5t4p6w0!6F0W6H6,5Q0p3Y0X6~6W3#6)046E6G6C3%1$2|0W6%4/4;7b716Y6Q7a635^4_0T6,726Z7j6a4_0Z7m7q6X046+7v4^140Z6}6 6:6N6y1j6^6I5m7F1^5F4=7L5O0(0e142A6`6L7z497g0u6R7Y6K046h54066 707Z040{0v6A6_7Q647O7e497T7:2q7W5V7%6N6P7#7i5|7r147u873z6c800Z7*357,7E5O6l6O6o7^5^72747J7{4g5F0U7P5)7M3M6=6@6H0l770S79806|7+7-7-8z3A7!7$8b7A048a6e8p6Y8e8U3w8N727y8R427s8t5E7d8o6(8B757D8L7.4g8l0Q3%8+3q6m7p8(7(6.8@6N0R8%5?8N0!6r6O0(8|8A044(4*8I8=8?8j647o0l1U9d017`8.7w8 975O5F0E9q729p8K9k8M7R6*9o9668988-8y9G7x9q9y9A6m9J3I9E9F648l0N8n9N648d9t3#5F020y0d0I8x9w9m6Y9o9v9K9x149,9.9S047H0d8s9)4299142g0R9q9(9$5}9{9-9/9~0o9I9Qad9}a36;7:1c7?7Kab6aa504a79~848Q8V888T7n9?9C902m7s8Z4D9Oah958eaj040J9:9_9=736?758E0v782:9i9D9W8L8#6w6y0(6A6C8r7@aG5U5{aA9u7h8092a*6O9@a{agai826T9~a:ara^8S8g4m1C4Y4T4Ebe0$4H1C0d4Jbj2)2#23252%0u1:bg4H1I553z2T0D0l0Q0u0q0W0l0V0b141u1w1y1A0X8J371P3m1J0-1z0X0s1=2f0}0W0+0d0+0?bW0N0X1lbW0n0H326P1=1;0Xa10s0d0X2Q0{0X1|2:0X0m0X0,4-bRbw0f0(a10v320Gcbb|2g0^b@4Mca0W0La1b|b?00cm6B0K0N0K0W0x1L3m0/0;0?0^3#180Kcw0}143J191w1e1g1i2W1DcM1GbS1fb+b-18b:aZ2Cb 0ub 1$c10m0Ob,1m2q2(1=0Rch0X0nc10v0G0K6H2Mb-2|2o0(0Ncx060%crb`0_1=1yb+bX0XbZbX0v0=b{2Mc.0X0AaWdj0Xbz0H0{cw0vc%2c8Cdwb}c(0g1lbY1cdx0D0kc$b6cyc74G0:0=0@3mbhdPcD04.