Formes géométriques ASCII
🎨 Un rectangle 3×5 plein, motif: #
#####
#####
#####
🎨 Un triangle creux 5×5, motif: Y
Y
YY
Y Y
Y Y
YYYYY
Dans cet exercice, on travaille avec des listes de chaines de caractères pour représenter des dessins.
- Chaque ligne d'un dessin sera une chaine de caractères non vide.
- Un dessin sera une liste non vide de lignes.
Lignes et dessins, dans cet exercice
ligne_pleineetligne_creusesont des fonctions qui renvoient une ligne que l'on peut afficher avecprintrectangleettriangleen versioncreuxoupleinsont des fonctions qui renvoient un dessin (une liste de lignes) que l'on peut afficher avecdessine.
Compléter le code suivant afin de disposer des fonctions indiquées. On utilisera les fonctions simples dans les fonctions élaborées. Vous n'avez qu'à compléter les fonctions ligne, rectangle et triangle dans chacune des deux versions. Le paramètre motif sera une chaine de caractères de longueur 1.
Exemples
>>> print(ligne_pleine('M', 1))
M
>>> print(ligne_pleine('#', 5))
#####
>>> print(ligne_creuse('X', 5))
X X
>>> print(ligne_creuse('M', 1))
M
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
.128013s3o_8bcdufvg/ly n7apSr1-me,(P2=4:+twki95h*)6050i0A0J0t0M0o0b0q0h0o0t0b0b0F010J0M0u010406050b0j0z0z0t0w0p040v0d0o0j0-0d0r050n0@0_0{0}0=0u04161d051g0n1g1i1d0=0i0M0l0#0%0)0+0P0M0m0P0o1w0P0J0:050W0g0o0A1r0(0*011v1x1z1x0J1F1H1D0J0g0d0i0}1E0w1e0J0P0#100b0u0t0r0+0E011J1t010k0Y0A0r0t0z0A1D1+1-1=1L1^1H1{1}0:0a0q0D0w0d0u0d0b0M130r0q0U1)0w0w0A0h2i16200r1e0n1%2v0J1#1!1$0i220+1z0r1`2f1D1o1q0$1K2F0M2H0r1X1p1D0u2o1e2t2v2Z0?1,2j2N1?2S0w0`0o0:0x2s2%0;2$212)1L2+2-0:0E2;1-2?2t2E012{0t2.040c2 2u0=322_0+35370G3a312%333g0:0O3j3c3l3e340d2,360:0S3q2@2(1s2`3v2|040s3A3d3D3f3F3x040f3J3s3L3u3w370N3j1f2X162L2y0i2C330h1X1~1e3$1h3!2#172=053+0U2Y3S2O010L0:0U0k3Y3K3}0K0:0q433|2*0k0:1P2H0e0u1H2Q0A492^3T0/040C4l3C3}0r0:0z0d0-423?303B334o0B3j48442*0:0r0g0e3+0o142H0b4r4D0:0R0H3q0q4Z4H4a1L3 042o0J0j0w154A2u4#4m4t4v4x0M4z2Z4;4s1?0d0:0Q4G4C3t4u044L4N104Q0A4S4/0;063r4=1?4(414T3t4604485d533T0r4c044e0A4N2o0j0b4k5q4I1L4o4q5D4$3f4@4y5l4n0:4F5d4|3m4K4M4O5a5c2#5E0+4o4W4Y4!5r3}4(4_525!345U584P0r4R5.5J014 040F0F5_5h1L0z0M2/5N3}4o4X5d064!6c5S3t4(4*4,4.4{5*4J044w5M6a6c6l4%0:0A0Z5C5Z5`685(6d6e3T6g0V6i604}2`5L5-5R6s0+5|0I6I330b1:041;016S3t5|516N5/5G666m575W5@5b6Z3T5|0y6:3}632}6*5F4V6@4~0:6R6%5`556o6M2Z0=0n3_0A2v2W7b3#1p3%2y2A2w1W1Y2y0t1G7e0n3$780U0W0Y0b04.
Fonctions en mémoire
Les fonctions ligne_pleine et ligne_creuse sont chargées en mémoire pour les questions suivantes.
Exemples
>>> dessine(rectangle_plein('A', 3, 5))
AAAAA
AAAAA
AAAAA
>>> dessine(rectangle_creux('O', 3, 5))
OOOOO
O O
OOOOO
>>> dessine(rectangle_creux('O', 1, 5))
OOOOO
###(Dés-)Active le code après la ligne
(Ctrl+I)
# Tests (insensible à la casse)(Ctrl+I)
Entrer ou sortir du mode "deux colonnes"
(Alt+: ; Ctrl pour inverser les colonnes)
(Alt+: ; Ctrl pour inverser les colonnes)
Entrer ou sortir du mode "plein écran"
(Esc)
(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
.128013s3o_8bcdufvg/0ly n7apS.r1-me,(P2=4:twki9][5hx)6050i0C0K0u0N0p0b0r0h0p0u0b0b0H010K0N0v010406050b0j0B0B0u0y0q040w0d0p0j0:0d0s050n0`0|0~100^0v04191g051j0n1j1l1g0^0i0N0l0(0*0,0.0S0N0m0S0p1z0S0K0?050Z0g0p0C1u0+0-011y1A1C1A0K1I1K1G0K0g0d0i101H0y1h0K0S0(130b0v0u0s0.0G011M1w010k0#0C0s0u0B0C1G1.1:1^1O1{1K1~200?0a0r0F0y0d0v0d0b0N160s0r0X1,0y0y0C0h2l19230s1h0n1*2y0K1(1%1)0i250.1C0s1}2i1G1r1t0)1N2I0N2K0s1!1s1G0v2r1h2w2y2$0_1/2m2Q1_2V0y0}0p0?0r0z2v2*0@2)242,1O2.2:2=0G2^1:2`2w2H012 0u2;040r0c332x0^362}0.393b0r0I3f352*373l2=0R3p3h3r3j380d2/3a2=0V3w2{2+1v2~3B303c0t3G3i3J3k3L3D3c0f3P3y3R3A3C3m0O3X2|3Z3t040z0o3(3I2R3!3M0z2@1a2_3x3)3;3+0z323_343{3:2-3T3b0z3e413g3H3s460?0z3o4a3q3|453#4f3v4i434d4m3,3F4i1i2!192O2B0i2F370h1!211h4z1k4x2(4v4E0X2#3Y3;0M0?0X0k3p4c3z0L2=4W3Q3}0k0?2r2t1:0m1K0e0v1K2T4#4Q1_0=040E4?4k2~0?0B0d0:4V4v4$4^0?0D3p0r4X3*0?0s0g0e1S2K0b4|441O4_584i5a554~045e0e4E0p175i5k374_0U0J3w0r5G5q4@5s2r0`0p0Z0K595b3;0d0?0H5Q5r0.4_0Q0P5F5H5R1_4S040k3B5W5J3k0?0N5.4}0.0d4Z044=5p5(2~0g4)4,0C5A3z4_4{545/385d5f5h0C5j685@015C5E4p5H6m5I6h0s4)6e0j5N0u5P6g5l5^0?0x645c040u0v0v1}0i6C3;666K2-0?6d4/4;2K6N5m0?672(5X6a0450526U5Y575?6y6!5u5w5y6e6(6i0?0U0U5$5G5~0.5*2r0K0j0y185}6Z6q045L6t5O3w064q3z5*4U6=5`5a6x3s4(772s0Z0s4-0C5v2r0j0T6=6M7k3z766$0N536Y695n6+3s6b5g1z5z7z3Z7H7469766.136:6f7F6h6j6`6o6,5*7D7I7A7K6d7X2_7$375T040H5V7R6h0B0N4f7x0?6k2$066n5%6Z6~0Y71732$7:650?0Q6=766Q4:0C2T637O6L6W8f4 517)8m56045o8a6|6-5f6/0s7N7Y6,5C5#6l84695*0C0$8l8E5B7 7#6m8y76786u6w8x6Z7=7^8Z7G8d8p048h6S8O2_8y7y8P7+6#8r7E8/6Z7Q8%6p7K8B8D8`8(040U8H81836{850?5,0y7*6D5=7_6,5_5;897/8U6077627~4`8*5u7-9e5S0?0A9w1_7{0?408=7P6@803`986n8U6r5M7a8t1O7=6B9Q5:6E6G6I9r6X928~8+7M7s0h7u0b8.348:8o9U6!7C8_9.8{6*9h7J5t8A7V8C6;9;5C6_8I839M7n9O6v6=9S8*6F6H0s6Ja29:9F3}6P9(6R8j6Tai9s9;7B8^9r8w9m758 9 919^936^8S8J6h8670729A5K6s8X3G0n4N0C2y2ZaT4y1s4A2B2D2z1Z1#2B0u1JaW0n4z0^a-0Y0!0$04.
Exemples
>>> dessine(triangle_plein('T', 5))
T
TT
TTT
TTTT
TTTTT
>>> dessine(triangle_creux('F', 5))
F
FF
F F
F F
FFFFF
>>> dessine(triangle_creux('K', 1))
K
###(Dés-)Active le code après la ligne
(Ctrl+I)
# Tests (insensible à la casse)(Ctrl+I)
Entrer ou sortir du mode "deux colonnes"
(Alt+: ; Ctrl pour inverser les colonnes)
(Alt+: ; Ctrl pour inverser les colonnes)
Entrer ou sortir du mode "plein écran"
(Esc)
(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
.128013s3o_8bcdufvg/0ly n7apS.r1-me,(P2=4:+twki9][5hx)6050i0C0L0u0O0p0b0r0h0p0u0b0b0H010L0O0v010406050b0j0B0B0u0y0q040w0d0p0j0;0d0s050n0{0}0 110_0v041a1h051k0n1k1m1h0_0i0O0l0)0+0-0/0T0O0m0T0p1A0T0L0@050!0g0p0C1v0,0.011z1B1D1B0L1J1L1H0L0g0d0i111I0y1i0L0T0)140b0v0u0s0/0G011N1x010k0$0C0s0u0B0C1H1/1;1_1P1|1L1 210@0a0r0F0y0d0v0d0b0O170s0r0Y1-0y0y0C0h2m1a240s1i0n1+2z0L1)1(1*0i260/1D0s1~2j1H1s1u0*1O2J0O2L0s1#1t1H0v2s1i2x2z2%0`1:2n2R1`2W0y0~0p0@0r0z2w2+0^2*252-1P2/2;2?0G2_1;2{2x2I01300u2=040r0c342y0_372~0/3a3c0r0I3g362+383m2?0S3q3i3s3k390d2:3b2?0W3x2|2,1w2 3C313d0t3H3j3K3l3M3E3d0f3Q3z3S3B3D3n0P3Y2}3!3u040z0o3)3J2S3#3N0z2^1b2`3y3*3=3,0z333`353|3;2.3U3c0z3f423h3I3t470@0z3p4b3r3}463$4g3w4j444e4n3-3G4j1j2#1a2P2C0i2G380h1#221i4A1l4y2)4w4F0Y2$3Z3=0N0@0Y0k3q4d3A0M2?4X3R3~0k0@2D0O1;0m1L0e0v1L2U4$4R1`0?040E4@4l2 0@0B0d0;4W4w4%4_0@0D3q0r4Y3+0@0s0g0e1T2L0b4}451P4`0V0J3x0r5s5b564 042s0{0p0!0L5a5c3=0d0@0H5D5v0/4`0R0Q5r5t5E1`4T040k3C5J4^5w0O5X4~0/0d4!044?4j5u5Y3l0g0@0y4-0C5l384`4|555.395e5g5i0C5k5|5$015o5q4q5t6a5-650s5;620j5A0u5C645m5%0@0x5^3A6e040u0v0v1~0i6q3!5`6z3~0@614:4=2L6C574{6J5w51536M5L585#6m5~5*6T385G040K6X3A0B0O4g6Q660@0V0V5P5s5R1P5T2s0L0j0y195,6=3l6f5z5B3x064r3A5T4V6+5)5b6l3t4)044+4-4/0h2s0j0U6+6B7c6r50520O542)5K6,04596}7w6s5f5h1A5j7n6-682%066a6~015T7t6$5d047D61632%6c6U6Z0H5I7A5}6(6*7p6A0@7J3{6b5Q7w6@0Z6`6|7X7N5M6+6s6O7Q7+3=4`5O697;5}5T0C0%5@816K7.437:6;7B706h727%657!7R820@0R7}7r6P8c5n0@847K8g7Y385T5V0y8p2.0@5!8m7Z5)5+7`7B5:5x5?7H6L8w6 7T607F628H1P6Z0A8$0/7)04417v5}676:8B8C7q5x6g6i6k8/8n6o8t6t6v6x8U5{8}6U6s6F7j0C0j0b8b965_0@952`7N7~7s7u9j7w4`7z8P5}6s8K9s8~6!8*018,8.9o8:6-6/857:9k8j8{6+6Z6p8W6V6u6w0s6y9P7o9f8^6F4;0C2U9e9D659W9(978u809X7,7y9z7C8Z0m7G9V9F8=7M7=6f6_6{9=9K8l7K1a4O0C2z2!a84z1t4B2C2E2A1!1$2C0u1Kab0n4A0_ao0Z0#0%04.
# Tests(insensible à la casse)(Ctrl+I)
(Alt+: ; Ctrl pour inverser les colonnes)
(Esc)