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

.1280135[tf4)+2r3sa!o iug0x8mG1]P6pnl7h.e=cy:v9DA(wS/bdk050W0I0d0m0q0E0l0p0K0E0m0l0l0J010d0q0C010406050l0r0w0w0m0j0L040T0o0E0r0=0o0D050U0|0~10120`0C041b1i051l0U1l1n1i0`0W0q0N0*0,0.0:0G0q0s0G0E1B0G0d0^050#0V0E0I1w0-0/011A1C1E1C0d1K1M1I0d0V0o0W121J0j1j0d0G0*150l0C0m0D0:0i011O1y010e0%0I0D0m0w0I1I1:1=1`1Q1}1M20220^0a0p0A0j0o0C0o0l0q180D0p0Z1.0j0j0I0K2n1b250D1j0U1,2A0d1*1)1+0W270:1E0D1 2k1I1t1v0+1P2K0q2M0D1$1u1I0C2t1j2y2A2(0{1;2o2S1{2X0j0 0E0^0p0y2x2,0_2+262.1Q2:2=2@0i2`1=2|2y2J01310m2?040p0k352z0`382 0:3b3d0p0f3h372,393n2@0b3r3j3t3l3a0o2;3c2@0B3y2}2-1x303D323e0F3I3k3L3m3N3F3e0v3R3A3T3C3E3o0O3Z2~3#3v040y0t3*3K2T3$3O0y2_1c2{3z3+3?3-0y343{363}3=2/3V3d0y3g433i3J3u480^0y3q4c2A2#0I2A2Q2D0W2H390K1$231j4p1m2$3J2)2{054u0Z2%3!3?0X0^0Z0e3r4e3B0S2@4O3S3 0e4L2u0o0r0C0I4T4I1{0@040R4%3~2/0^0I0u4m0.0q194-461Q4*0g0M3y0p510p4P3,0^2V0l2E0r2v4^0D0l3r534U1{0o0^0J5f543?4*0c0z50525n4/042X0w0V2t5m5h1Q5j045l4k5g4(1Q0l1^0401015s515u1Q4K040e3D5B5J3m0^0K5Y4.5D4R042V5%4{5!044;4?2l4_4k5S0:4*4 4k06525 5I5(0:5U0q4N5H5_3a5#5-390o5*5,675C0:5L0^010t410k0f0b0B0F0v0O5P5^6h015{5Q605 680D0^5x5z4$6g5Z015E5G2(615.695w0o5y5A6J626L0^0h6b3B6E045$5}6B5R6x5U0I1E666O6D6a6W6Q6d561a6^396j5N0Q0x0P6v2*6x6z6*6+6C6-566;2{6P3u6F6T6H6#3#5E0n6N7e686 5O4`39772(5~796+6?5+5d595b195e6w6K5E0H7t6$0^0m0C4#0D0W7L3#4*4,7H6X0D0V6{0d7T5o0^7W756K6%6G6V7+6X4}0g6A7y5t6x7-7i7/7p6x6M7k3?7r743|7^6,7,6{580j5a2n7G7:6_0^7K7X6Q6%7O7Q7S8j7u7)7%5v6)8f8q047?78876X647d367f7M6S6U6I6=7 0^7n811{838s4|0^5|7w797A577D8d8R0:7J8#6R8m1 8o8v3B7V8(7Z7#8(8/8p8G7.8J4D760^0g8y8V7_6K5U2t0d0r0j6|8K887B8a8c5c8e3|1b4F4n1k4A0U4y2B4r1b2E2D1#1%2D0m1L9k9n1u2|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

.1280135[tf4)+2r3sa!o iug0x8mG1]P6pnl7h.e=cy:v9DA(wS/bdk050W0I0d0m0q0E0l0p0K0E0m0l0l0J010d0q0C010406050l0r0w0w0m0j0L040T0o0E0r0=0o0D050U0|0~10120`0C041b1i051l0U1l1n1i0`0W0q0N0*0,0.0:0G0q0s0G0E1B0G0d0^050#0V0E0I1w0-0/011A1C1E1C0d1K1M1I0d0V0o0W121J0j1j0d0G0*150l0C0m0D0:0i011O1y010e0%0I0D0m0w0I1I1:1=1`1Q1}1M20220^0a0p0A0j0o0C0o0l0q180D0p0Z1.0j0j0I0K2n1b250D1j0U1,2A0d1*1)1+0W270:1E0D1 2k1I1t1v0+1P2K0q2M0D1$1u1I0C2t1j2y2A2(0{1;2o2S1{2X0j0 0E0^0p0y2x2,0_2+262.1Q2:2=2@0i2`1=2|2y2J01310m2?040p0k352z0`382 0:3b3d0p0f3h372,393n2@0b3r3j3t3l3a0o2;3c2@0B3y2}2-1x303D323e0F3I3k3L3m3N3F3e0v3R3A3T3C3E3o0O3Z2~3#3v040y0t3*3K2T3$3O0y2_1c2{3z3+3?3-0y343{363}3=2/3V3d0y3g433i3J3u480^0y3q4c2A2#0I2A2Q2D0W2H390K1$231j4p1m2$3J2)2{054u0Z2%3!3?0X0^0Z0e3r4e3B0S2@4O3S3 0e4L2u0o0r0C0I4T4I1{0@040R4%3~2/0^0I0u4m0.0q194-461Q4*0g0M3y0p510p4P3,0^2V0l2E0r2v4^0D0l3r534U1{0o0^0J5f543?4*0c0z50525n4/042X0w0V2t5m5h1Q5j045l4k5g4(1Q0l1^0401015s515u1Q4K040e3D5B5J3m0^0K5Y4.5D4R042V5%4{5!044;4?2l4_4k5S0:4*4 4k06525 5I5(0:5U0q4N5H5_3a5#5-390o5*5,675C0:5L0^010t410k0f0b0B0F0v0O5P5^6h015{5Q605 680D0^5x5z4$6g5Z015E5G2(615.695w0o5y5A6J626L0^0h6b3B6E045$5}6B5R6x5U0I1E666O6D6a6W6Q6d561a6^396j5N0Q0x0P6v2*6x6z6*6+6C6-566;2{6P3u6F6T6H6#3#5E0n6N7e686 5O4`39772(5~796+6?5+5d595b195e6w6K5E0H7t6$0^0m0C4#0D0W7L3#4*4,7H6X0D0V6{0d7T5o0^7W756K6%6G6V7+6X4}0g6A7y5t6x7-7i7/7p6x6M7k3?7r743|7^6,7,6{580j5a2n7G7:6_0^7K7X6Q6%7O7Q7S8j7u7)7%5v6)8f8q047?78876X647d367f7M6S6U6I6=7 0^7n811{838s4|0^5|7w797A577D8d8R0:7J8#6R8m1 8o8v3B7V8(7Z7#8(8/8p8G7.8J4D760^0g8y8V7_6K5U2t0d0r0j6|8K887B8a8c5c8e3|1b4F4n1k4A0U4y2B4r1b2E2D1#1%2D0m1L9k9n1u2|9n0!0$0(04.