Zoom matrice image

Exercice conseillé en version À compléter
  • Les exercices conseillés en version "Vide" sont conçus pour ressembler à un "exercice 1" des épreuves pratiques au baccalauréat de Terminale NSI.
  • Les exercices conseillés en version "À compléter" sont conçus pour ressembler à un "exercice 2" des épreuves pratiques au baccalauréat de Terminale NSI.

La difficulté de l'exercice a été choisie en partant du principe qu'il est fait dans la version indiquée.

Dessin de coeur

Un dessin va s'afficher...

On travaille sur des dessins en noir et blanc obtenu à partir de pixels noirs et blancs : La figure « cœur » ci-dessus va servir d'exemple. On la représente par une grille de nombres, c'est-à-dire par une liste composée de sous-listes de même longueur. Chaque sous-liste représentera donc une ligne du dessin.

La fonction zoom_liste prend en arguments une liste liste_depart et un entier k. Elle renvoie une liste où chaque élément de liste_depart est dupliqué k fois.

Exemple
>>> ligne =  [0, 1, 0]
>>> zoom_liste(ligne, 2)
[0, 0, 1, 1, 0, 0]

La fonction zoom_dessin prend en argument la grille dessin et renvoie une grille où toutes les lignes de dessin sont zoomées k fois et répétées k fois.

Exemple
>>> croix =  [[0, 1, 0],
...           [1, 1, 1],
...           [0, 1, 0]
...           ]
>>> zoom_dessin(croix, 2)
[[0, 0, 1, 1, 0, 0], [0, 0, 1, 1, 0, 0], [1, 1, 1, 1, 1, 1], [1, 1, 1, 1, 1, 1], [0, 0, 1, 1, 0, 0], [0, 0, 1, 1, 0, 0]]
fonction affiche

La fonction affiche permet d'afficher le dessin. Les pixels noirs (1 dans la grille) seront représentés par le caractère "*" et les blancs (0 dans la grille) par deux espaces.

>>> coeur = [
...       [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
...       [0, 0, 0, 1, 1, 0, 0, 0, 1, 1, 0, 0, 0],
...       [0, 0, 1, 0, 0, 1, 0, 1, 0, 0, 1, 0, 0],
...       [0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0],
...       [0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0],
...       [0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0],
...       [0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0],
...       [0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0],
...       [0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0],
...       [0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0],
...       [0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0],
...       [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
...    ]
>>> affiche(coeur)

    * *       * *
  *     *   *     *
*         *         *
*                   *
*                   *
  *               *
    *           *
      *       *
        *   *
          *

>>> affiche(zoom_dessin(coeur,3))

                * * * * * *                   * * * * * *
                * * * * * *                   * * * * * *
                * * * * * *                   * * * * * *
          * * *             * * *       * * *             * * *
          * * *             * * *       * * *             * * *
          * * *             * * *       * * *             * * *
    * * *                         * * *                         * * *
    * * *                         * * *                         * * *
    * * *                         * * *                         * * *
    * * *                                                       * * *
    * * *                                                       * * *
    * * *                                                       * * *
    * * *                                                       * * *
    * * *                                                       * * *
    * * *                                                       * * *
          * * *                                           * * *
          * * *                                           * * *
          * * *                                           * * *
                * * *                               * * *
                * * *                               * * *
                * * *                               * * *
                      * * *                   * * *
                      * * *                   * * *
                      * * *                   * * *
                            * * *       * * *
                            * * *       * * *
                            * * *       * * *
                                  * * *
                                  * * *
                                  * * *
fonction affiche_pixel

La fonction affiche_pixel permet d'afficher le dessin avec la représentation des pixels noirs et blancs.

Compléter le code dans l'IDE pour obtenir les résultats ci-dessus :

###(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

.128013fe)61i_p3mz:Svk(5rtg.=swcd,Po/]ha2n bl0[948uy7050A0c0t0H0g0M0x0K0z0M0H0x0x0w010t0g0i010406050x0S0k0k0H0s0T040n0D0M0S0/0D0J050E0_0{0}0 0@0i04051f181i0E1f0@0A0g0o0%0)0+0-0G0g0u0G0M1w0G0t0=050Y0L0M0c1r0*0,011v1x1z1x0t1F1H1D0t0s1g0t0G0%120x0i0H0J0-0I011J1t010b0!0c0J0H0k0c1D1$1(1-1L1:1H1?1^0=0a0K0C0s0D0i0D0x0g150J0K0W1!0s0s0c0z2d181{0J1g0E1Y2q1V1X1W1E0A1}0-1z0J1=2a1D1o1q0(1K2A0g2C0J0D2G1D0i2j1g2o2q2U0^1%2e2I1.2N0s0|0M0=0K0f2n2Y0?2X1|2!1L2$2(2*0I2-1(2/2o2z012@0H2)040K0j2{2p0@2~2=0-31330K0Q372}2Y2 3d2*0r3h393j3b300D2%322*0e3o2:2Z1s2?3t2^340U3y3a3B3c3D3v340R3H3q3J3s3u3e0P3P2;3R3l040f0N3W3A2J3S3E0f2,192.3p3X3)3Z0f2`3.2|3:3(2#3L330f363_383z3k3~0=0f3g422q2R0c2q2G2t0A1X2y3r0z2O1_1g4f1h2S3z2V2.054l0W2T3Q3)0p0=0W0b3h443r0y2*4F3I3=0b0=0l0D0D0k0h1z0x0t0c4K4z1.0;040q4Y3;2#0=4U4W0h0W1%0s0t4(3|1L4#0B3h0K4G3Y0=0p4?2 4#0d0m3o0K574|4L4*044,0c0h4P4R4{4}3)0D0=0w5i5a4^0=0O0F56585j1.4B040b3t5o4Z2?0=0c0M4=4a595D0-0D4I042L5C4)5E5c0g4V5e4/0}5I2W5p0-4#554a06585,5K5S0-5y5A0s5R4@3c0=0g5@2 5N5`175J5w2?0L0=0s1(0u4X4a625%0=4%6a5$304 513r535)2U5+5-6p6b6h5U5W5f4Q0k6j3R5l040v6y3=0=0H0i0i1=0A6D4!6d6L5T5G5!4u6g535u576r5y2j0t0S0s602U5.5^6s5d6v5h5*3{2 5y4D6O0-5O4|6f5L304N045g4S0W0+5Q6{5/014#6e5#6|0J0=0u0s0!1H6@770=4`616g7c0450756*6l6V6)3k7d7f0M1H6-6x7m6|6A5n7D764#5s7u6X0=5=5|3r7o1P2C7P6z5O746(6r7o7e7g697a7I0=6m3/6p6W7n4+5V4-707U5k5m7@5b704T7;7%6S6|787i7R1w7T7r527k7`5T7q7(7s0=0d7u5,7M5z5B7H6*7o5{8m5}7W6%2.7v7Q6404660J687i82877Q6i8E3R7t5*7-5-7Z7x7$7B7i6A6C8H6E046G6I0J6K8U6M4$837:6u7?8#5q048g8K5v6g6Y0X6#8t2|8v4~047#7z5e8+6n184w4d1j4r0E4p2r4h182u9c0H1G95981p2/980X0Z0#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

.128013fe)61i_p3mz:Svk(5rtg.=swcd;,Po/]ha2n bl0[948uy7050A0c0t0I0g0N0x0L0z0N0I0x0x0w010t0g0i010406050x0T0k0k0I0s0U040n0E0N0T0:0E0K050F0`0|0~100^0i04051g191j0F1g0^0A0g0o0(0*0,0.0H0g0u0H0N1x0H0t0?050Z0M0N0c1s0+0-011w1y1A1y0t1G1I1E0t0s1h0t0H0(130x0i0I0K0.0J011K1u010b0#0c0K0I0k0c1E1%1)1.1M1;1I1@1_0?0a0L0D0s0E0i0E0x0g160K0L0X1#0s0s0c0z2e191|0K1h0F1Z2r1W1Y1X1F0A1~0.1A0K1?2b1E1p1r0)1L2B0g2D0K0E2H1E0i2k1h2p2r2V0_1(2f2J1/2O0s0}0N0?0L0f2o2Z0@2Y1}2#1M2%2)2+0J2.1)2:2p2A012^0I2*040L0j2|2q0^2 2?0.32340L0R382~2Z303e2+0r3i3a3k3c310E2(332+0e3p2;2!1t2@3u2_350V3z3b3C3d3E3w350S3I3r3K3t3v3f0Q3Q2=3S3m040f0O3X3B2K3T3F0f2-1a2/3q3Y3*3!0f2{3/2}3;3)2$3M340f373`393A3l3 0?0f3h432r2S0c2r2H2u0A1Y2z3s0z2P1`1h4g1i2T3A2W2/054m0X2U3R3*0p0?0X0b3i453s0y2+4G3J3?0b0?0l0E0E0k0h1A0x0t0c4L4A1/0=040q4Z3=2$0?4V4X0h0X1(0s0t4)3}1M4$0C3i0L4H3Z0?0p4@304$0d0m523s0x0f0?02030j0Q0B3p0L5i4}4M4+044-0c0h4Q4S4|4~3*0E0?0w5t5l4_0?0P0G5h5j5u1/4C040b3u5z4!2@0?0c0N4?4b5k5O0.0E4J042M5N4*5P5n0g4W5p4:0~5T2X5A0.4$564b065j5`5V5%0.5J5L0s5$4^3d0?0g62305Y65185U5H2@0M0?0s1)0u4Y4b6d5=0?4(6l5;3150573S545@2V5_5{6A6m6s5)5+5q4R0k6u5v0?0v6J5m0I0i0i1?0A6N5B4%6U64045R5/4v6r545F5i6C5J2k0t0T0s6b2V5|636D5o6G5s5^3|305J4E6X015Z4}6q5W314O045r4T0X0,5#755}014$6p5:760K0?0u0s0#1I714`673s7m04517f6@6w6)6?3l7n7p0N1I6`6I6c6r5w045y7L764$5D7C6+0?607u4 5)0u2D7Y5v5Z7e6=6C7w7o7q6k7k7g5?7C5`7,4,5*4.7a7%1/7N7P7+6r7w7a4U7{7:6$7R6o717w1Q7$7z530?4{7Q7g7w7y7;7A0?0d7@5G6r5 5M8k6@7w668x687)6;2/7D7v6f046h0K6j7s8b8g7v6t8P6v8q6x3:6A6B837F7/7J717N6M8S3?0?6P6R0K6T8*4#8O8o7E6E7|6H8N048r5^7^8u6g0Y6/8E2}8G7Z7.7H5p7}5^194x4e1k4s0F4q2s4i192v9n0I1H9g9j1q2:9j0Y0!0$04.

Dessin en pixel

Le dessin sera tracé ici