Programmer un robot (0)

Série d'exercices

Cet exercice fait partie d'une série :

On considère un robot capable d'effectuer trois actions :

  • avancer d'un pas,

  • tourner à droite,

  • tourner à gauche.

Ces actions sont fournies au robot sous forme d'une chaîne de caractères :

  • "A" pour avancer d'un pas,

  • "D" pour tourner à droite,

  • "G" pour tourner à gauche.

Il est possible de répéter une action en faisant suivre celle-ci d'un nombre entier positif ou nul. Ainsi ["A", 12] permet de faire avancer le robot de 12 pas.

On demande d'écrire la fonction decoupe qui prend en paramètre la chaîne de caractères contenant les instructions à effectuer ainsi que des caractères invalides et renvoie la liste de ces instructions élémentaires : les lettres "A", "D" ou "G" ou des nombre entiers positifs ou nuls.

Attention :

  • les nombres entiers de plus de un chiffre doivent être « regroupés » : ["A", 12] et pas ["A", 1, 2] ;

  • les caractères invalides doivent être ignorés : decoupe("A toto 1e2") doit renvoyer ["A", 12].

On garantit que chaque nombre entier est précédé d'une instruction valide. Il est toutefois possible que ces deux instructions soient séparées par des caractères à ignorer et que les différents chiffres composant un nombre soient aussi séparés par des caractères invalides.

Exemples
>>> decoupe("A5G")
["A", 5, "G"]
>>> decoupe("A5GA4")
["A", 5, "G", "A", 4]
>>> decoupe("A toto 1e2")
["A", 12]

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

.128013!n w5e9(]38m=0p)rhk[uDoiscb/6.S1vtAdg:xay24P+Gfl7050K0g0I0O0y0W0z0d0A0W0O0z0z0n010I0y0p010406050z0v0m0m0O0r0P040F0x0W0v0=0x0c050C0|0~10120`0p041b1i051l0C1l1n1i0`0K0y0H0*0,0.0:0s0y0L0s0W1B0s0I0^050#0B0W0g1w0-0/011A1C1E1C0I1K1M1I0I0B0x0K121J0r1j0I0s0*150z0p0O0c0:0Q011O1y010V0%0g0c0O0m0g1I1:1=1`1Q1}1M20220^0a0d0S0r0x0p0x0z0y180c0d0Z1.0r0r0g0A2n1b250c1j0C1,2A0I1*1)1+0K270:1E0c1 2k1I1t1v0+1P2K0y2M0c1$1u1I0p2t1j2y2A2(0{1;2o2S1{2X0r0 0W0^0d0G2x2,0_2+262.1Q2:2=2@0Q2`1=2|2y2J01310O2?040d0k352z0`382 0:3b3d0d0R3h372,393n2@0f3r3j3t3l3a0x2;3c2@0D3y2}2-1x303D323e0X3I3k3L3m3N3F3e0l3R3A3T3C3E3o0h3Z2~3#3v040G0o3*3K2T3$3O0G2_1c2{3z3+3?3-0G343{363}3=2/3V3d0G3g433i3J3u480^0G3q4c2A2#0g2A2Q2D0K2H390A1$231j4p1m2$3J2)2{054u0Z2%3!3?0t0^0Z0V3r4e3B0e2@4O3S3 0V4L2u0x0v0p0g4T4I1{0@040i4%3~2/0^0g0N4m0.0y194-461Q4*0q0M3y0d510d4P3,0^2V0z2E0v2v4^0c0z3r534U1{0x0^0n5f543?4*0u0j50525n4/042X0m0B2t5m5h1Q5j045l4k5g4(1Q0z1^0401015s515u1Q4K040V3D5B5J3m0^0A5Y4.5D4R042V5%4{5!044;4?2l4_4k5S0:4*4 4k06525 5I5(0:5U0y4N5H5_3a5#5-390x5*5,675C0:5L0^010o410k0R0f0D0X0l0h5P5^6h015{5Q605 680c0^5x5z4$6g5Z015E5G2(615.695w0x5y5A6J626L0^0T6b3B6E045$5}6B5R6x5U0g1E666O6D6a6W6Q6d561a6^396j5N0J0U0w6v2*6x6z6*6+6C6-566;2{6P3u6F6T6H6#3#5E0b6N7e686 5O4`39772(5~796+6?5+5d595b195e6w6K5E0E7t6$0^0O0p4#0c0K7L3#4*4,7H6X0c0B6{0I7T5o0^7W756K6%6G6V7+6X4}0q6A7y5t6x7-7i7/7p6x6M7k3?7r743|7^6,7,6{580r5a2n7G7:6_0^7K7X6Q6%7O7Q7S8j7u7)7%5v6)8f8q047?78876X647d367f7M6S6U6I6=7 0^7n811{838s4|0^5|7w797A577D8d8R0:7J8#6R8m1 8o8v3B7V8(7Z7#8(8/8p8G7.8J4D760^0q8y8V7_6K5U2t0I0v0r6|8K887B8a8c5c8e3|1b4F4n1k4A0C4y2B4r1b2E2D1#1%2D0O1L9k9n1u2|9n0!0$0(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

.128013!n w5e9(]38m=0p)rhk[uDoiscb/6.S1vtAdg:xay24P+Gfl7050K0g0I0O0y0W0z0d0A0W0O0z0z0n010I0y0p010406050z0v0m0m0O0r0P040F0x0W0v0=0x0c050C0|0~10120`0p041b1i051l0C1l1n1i0`0K0y0H0*0,0.0:0s0y0L0s0W1B0s0I0^050#0B0W0g1w0-0/011A1C1E1C0I1K1M1I0I0B0x0K121J0r1j0I0s0*150z0p0O0c0:0Q011O1y010V0%0g0c0O0m0g1I1:1=1`1Q1}1M20220^0a0d0S0r0x0p0x0z0y180c0d0Z1.0r0r0g0A2n1b250c1j0C1,2A0I1*1)1+0K270:1E0c1 2k1I1t1v0+1P2K0y2M0c1$1u1I0p2t1j2y2A2(0{1;2o2S1{2X0r0 0W0^0d0G2x2,0_2+262.1Q2:2=2@0Q2`1=2|2y2J01310O2?040d0k352z0`382 0:3b3d0d0R3h372,393n2@0f3r3j3t3l3a0x2;3c2@0D3y2}2-1x303D323e0X3I3k3L3m3N3F3e0l3R3A3T3C3E3o0h3Z2~3#3v040G0o3*3K2T3$3O0G2_1c2{3z3+3?3-0G343{363}3=2/3V3d0G3g433i3J3u480^0G3q4c2A2#0g2A2Q2D0K2H390A1$231j4p1m2$3J2)2{054u0Z2%3!3?0t0^0Z0V3r4e3B0e2@4O3S3 0V4L2u0x0v0p0g4T4I1{0@040i4%3~2/0^0g0N4m0.0y194-461Q4*0q0M3y0d510d4P3,0^2V0z2E0v2v4^0c0z3r534U1{0x0^0n5f543?4*0u0j50525n4/042X0m0B2t5m5h1Q5j045l4k5g4(1Q0z1^0401015s515u1Q4K040V3D5B5J3m0^0A5Y4.5D4R042V5%4{5!044;4?2l4_4k5S0:4*4 4k06525 5I5(0:5U0y4N5H5_3a5#5-390x5*5,675C0:5L0^010o410k0R0f0D0X0l0h5P5^6h015{5Q605 680c0^5x5z4$6g5Z015E5G2(615.695w0x5y5A6J626L0^0T6b3B6E045$5}6B5R6x5U0g1E666O6D6a6W6Q6d561a6^396j5N0J0U0w6v2*6x6z6*6+6C6-566;2{6P3u6F6T6H6#3#5E0b6N7e686 5O4`39772(5~796+6?5+5d595b195e6w6K5E0E7t6$0^0O0p4#0c0K7L3#4*4,7H6X0c0B6{0I7T5o0^7W756K6%6G6V7+6X4}0q6A7y5t6x7-7i7/7p6x6M7k3?7r743|7^6,7,6{580r5a2n7G7:6_0^7K7X6Q6%7O7Q7S8j7u7)7%5v6)8f8q047?78876X647d367f7M6S6U6I6=7 0^7n811{838s4|0^5|7w797A577D8d8R0:7J8#6R8m1 8o8v3B7V8(7Z7#8(8/8p8G7.8J4D760^0q8y8V7_6K5U2t0I0v0r6|8K887B8a8c5c8e3|1b4F4n1k4A0C4y2B4r1b2E2D1#1%2D0O1L9k9n1u2|9n0!0$0(04.