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

.128013nximwgyk02Po 56]u+al84t/sbr[vce.G!3)Afh:1S=97dDp(050U0F0x0t0d0u0z0n0E0u0t0z0z0R010x0d0W010406050z0r0e0e0t0B0h040Q0m0u0r0=0m0b050y0|0~10120`0W041b1i051l0y1l1n1i0`0U0d0D0*0,0.0:0N0d0g0N0u1B0N0x0^050#0A0u0F1w0-0/011A1C1E1C0x1K1M1I0x0A0m0U121J0B1j0x0N0*150z0W0t0b0:0k011O1y010M0%0F0b0t0e0F1I1:1=1`1Q1}1M20220^0a0n0l0B0m0W0m0z0d180b0n0Z1.0B0B0F0E2n1b250b1j0y1,2A0x1*1)1+0U270:1E0b1 2k1I1t1v0+1P2K0d2M0b1$1u1I0W2t1j2y2A2(0{1;2o2S1{2X0B0 0u0^0n0P2x2,0_2+262.1Q2:2=2@0k2`1=2|2y2J01310t2?040n0J352z0`382 0:3b3d0n0w3h372,393n2@0o3r3j3t3l3a0m2;3c2@0p3y2}2-1x303D323e0T3I3k3L3m3N3F3e0v3R3A3T3C3E3o0S3Z2~3#3v040P0j3*3K2T3$3O0P2_1c2{3z3+3?3-0P343{363}3=2/3V3d0P3g433i3J3u480^0P3q4c2A2#0F2A2Q2D0U2H390E1$231j4p1m2$3J2)2{054u0Z2%3!3?0i0^0Z0M3r4e3B0f2@4O3S3 0M4L2u0m0r0W0F4T4I1{0@040X4%3~2/0^0F0c4m0.0d194-461Q4*0K0O3y0n510n4P3,0^2V0z2E0r2v4^0b0z3r534U1{0m0^0R5f543?4*0C0q50525n4/042X0e0A2t5m5h1Q5j045l4k5g4(1Q0z1^0401015s515u1Q4K040M3D5B5J3m0^0E5Y4.5D4R042V5%4{5!044;4?2l4_4k5S0:4*4 4k06525 5I5(0:5U0d4N5H5_3a5#5-390m5*5,675C0:5L0^010j410J0w0o0p0T0v0S5P5^6h015{5Q605 680b0^5x5z4$6g5Z015E5G2(615.695w0m5y5A6J626L0^0s6b3B6E045$5}6B5R6x5U0F1E666O6D6a6W6Q6d561a6^396j5N0L0H0V6v2*6x6z6*6+6C6-566;2{6P3u6F6T6H6#3#5E0I6N7e686 5O4`39772(5~796+6?5+5d595b195e6w6K5E0G7t6$0^0t0W4#0b0U7L3#4*4,7H6X0b0A6{0x7T5o0^7W756K6%6G6V7+6X4}0K6A7y5t6x7-7i7/7p6x6M7k3?7r743|7^6,7,6{580B5a2n7G7:6_0^7K7X6Q6%7O7Q7S8j7u7)7%5v6)8f8q047?78876X647d367f7M6S6U6I6=7 0^7n811{838s4|0^5|7w797A577D8d8R0:7J8#6R8m1 8o8v3B7V8(7Z7#8(8/8p8G7.8J4D760^0K8y8V7_6K5U2t0x0r0B6|8K887B8a8c5c8e3|1b4F4n1k4A0y4y2B4r1b2E2D1#1%2D0t1L9k9n1u2|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

.128013nximwgyk02Po 56]u+al84t/sbr[vce.G!3)Afh:1S=97dDp(050U0F0x0t0d0u0z0n0E0u0t0z0z0R010x0d0W010406050z0r0e0e0t0B0h040Q0m0u0r0=0m0b050y0|0~10120`0W041b1i051l0y1l1n1i0`0U0d0D0*0,0.0:0N0d0g0N0u1B0N0x0^050#0A0u0F1w0-0/011A1C1E1C0x1K1M1I0x0A0m0U121J0B1j0x0N0*150z0W0t0b0:0k011O1y010M0%0F0b0t0e0F1I1:1=1`1Q1}1M20220^0a0n0l0B0m0W0m0z0d180b0n0Z1.0B0B0F0E2n1b250b1j0y1,2A0x1*1)1+0U270:1E0b1 2k1I1t1v0+1P2K0d2M0b1$1u1I0W2t1j2y2A2(0{1;2o2S1{2X0B0 0u0^0n0P2x2,0_2+262.1Q2:2=2@0k2`1=2|2y2J01310t2?040n0J352z0`382 0:3b3d0n0w3h372,393n2@0o3r3j3t3l3a0m2;3c2@0p3y2}2-1x303D323e0T3I3k3L3m3N3F3e0v3R3A3T3C3E3o0S3Z2~3#3v040P0j3*3K2T3$3O0P2_1c2{3z3+3?3-0P343{363}3=2/3V3d0P3g433i3J3u480^0P3q4c2A2#0F2A2Q2D0U2H390E1$231j4p1m2$3J2)2{054u0Z2%3!3?0i0^0Z0M3r4e3B0f2@4O3S3 0M4L2u0m0r0W0F4T4I1{0@040X4%3~2/0^0F0c4m0.0d194-461Q4*0K0O3y0n510n4P3,0^2V0z2E0r2v4^0b0z3r534U1{0m0^0R5f543?4*0C0q50525n4/042X0e0A2t5m5h1Q5j045l4k5g4(1Q0z1^0401015s515u1Q4K040M3D5B5J3m0^0E5Y4.5D4R042V5%4{5!044;4?2l4_4k5S0:4*4 4k06525 5I5(0:5U0d4N5H5_3a5#5-390m5*5,675C0:5L0^010j410J0w0o0p0T0v0S5P5^6h015{5Q605 680b0^5x5z4$6g5Z015E5G2(615.695w0m5y5A6J626L0^0s6b3B6E045$5}6B5R6x5U0F1E666O6D6a6W6Q6d561a6^396j5N0L0H0V6v2*6x6z6*6+6C6-566;2{6P3u6F6T6H6#3#5E0I6N7e686 5O4`39772(5~796+6?5+5d595b195e6w6K5E0G7t6$0^0t0W4#0b0U7L3#4*4,7H6X0b0A6{0x7T5o0^7W756K6%6G6V7+6X4}0K6A7y5t6x7-7i7/7p6x6M7k3?7r743|7^6,7,6{580B5a2n7G7:6_0^7K7X6Q6%7O7Q7S8j7u7)7%5v6)8f8q047?78876X647d367f7M6S6U6I6=7 0^7n811{838s4|0^5|7w797A577D8d8R0:7J8#6R8m1 8o8v3B7V8(7Z7#8(8/8p8G7.8J4D760^0K8y8V7_6K5U2t0x0r0B6|8K887B8a8c5c8e3|1b4F4n1k4A0y4y2B4r1b2E2D1#1%2D0t1L9k9n1u2|9n0!0$0(04.