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

.128013wl7.a/: +A]Dr0!npmGx36kshf45(vtb=ocgeS19)2[iPd8uy050U0L0F0f0S0c0y0i0J0c0f0y0y0H010F0S0r010406050y0W0s0s0f0n0X040M0I0c0W0=0I0q050g0|0~10120`0r041b1i051l0g1l1n1i0`0U0S0E0*0,0.0:0z0S0K0z0c1B0z0F0^050#0G0c0L1w0-0/011A1C1E1C0F1K1M1I0F0G0I0U121J0n1j0F0z0*150y0r0f0q0:0Q011O1y010A0%0L0q0f0s0L1I1:1=1`1Q1}1M20220^0a0i0T0n0I0r0I0y0S180q0i0Z1.0n0n0L0J2n1b250q1j0g1,2A0F1*1)1+0U270:1E0q1 2k1I1t1v0+1P2K0S2M0q1$1u1I0r2t1j2y2A2(0{1;2o2S1{2X0n0 0c0^0i0N2x2,0_2+262.1Q2:2=2@0Q2`1=2|2y2J01310f2?040i0v352z0`382 0:3b3d0i0B3h372,393n2@0C3r3j3t3l3a0I2;3c2@0w3y2}2-1x303D323e0d3I3k3L3m3N3F3e0V3R3A3T3C3E3o0O3Z2~3#3v040N0o3*3K2T3$3O0N2_1c2{3z3+3?3-0N343{363}3=2/3V3d0N3g433i3J3u480^0N3q4c2A2#0L2A2Q2D0U2H390J1$231j4p1m2$3J2)2{054u0Z2%3!3?0x0^0Z0A3r4e3B0b2@4O3S3 0A4L2u0I0W0r0L4T4I1{0@040D4%3~2/0^0L0u4m0.0S194-461Q4*0P0h3y0i510i4P3,0^2V0y2E0W2v4^0q0y3r534U1{0I0^0H5f543?4*0R0l50525n4/042X0s0G2t5m5h1Q5j045l4k5g4(1Q0y1^0401015s515u1Q4K040A3D5B5J3m0^0J5Y4.5D4R042V5%4{5!044;4?2l4_4k5S0:4*4 4k06525 5I5(0:5U0S4N5H5_3a5#5-390I5*5,675C0:5L0^010o410v0B0C0w0d0V0O5P5^6h015{5Q605 680q0^5x5z4$6g5Z015E5G2(615.695w0I5y5A6J626L0^0j6b3B6E045$5}6B5R6x5U0L1E666O6D6a6W6Q6d561a6^396j5N0k0t0m6v2*6x6z6*6+6C6-566;2{6P3u6F6T6H6#3#5E0p6N7e686 5O4`39772(5~796+6?5+5d595b195e6w6K5E0e7t6$0^0f0r4#0q0U7L3#4*4,7H6X0q0G6{0F7T5o0^7W756K6%6G6V7+6X4}0P6A7y5t6x7-7i7/7p6x6M7k3?7r743|7^6,7,6{580n5a2n7G7:6_0^7K7X6Q6%7O7Q7S8j7u7)7%5v6)8f8q047?78876X647d367f7M6S6U6I6=7 0^7n811{838s4|0^5|7w797A577D8d8R0:7J8#6R8m1 8o8v3B7V8(7Z7#8(8/8p8G7.8J4D760^0P8y8V7_6K5U2t0F0W0n6|8K887B8a8c5c8e3|1b4F4n1k4A0g4y2B4r1b2E2D1#1%2D0f1L9k9n1u2|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

.128013wl7.a/: +A]Dr0!npmGx36kshf45(vtb=ocgeS19)2[iPd8uy050U0L0F0f0S0c0y0i0J0c0f0y0y0H010F0S0r010406050y0W0s0s0f0n0X040M0I0c0W0=0I0q050g0|0~10120`0r041b1i051l0g1l1n1i0`0U0S0E0*0,0.0:0z0S0K0z0c1B0z0F0^050#0G0c0L1w0-0/011A1C1E1C0F1K1M1I0F0G0I0U121J0n1j0F0z0*150y0r0f0q0:0Q011O1y010A0%0L0q0f0s0L1I1:1=1`1Q1}1M20220^0a0i0T0n0I0r0I0y0S180q0i0Z1.0n0n0L0J2n1b250q1j0g1,2A0F1*1)1+0U270:1E0q1 2k1I1t1v0+1P2K0S2M0q1$1u1I0r2t1j2y2A2(0{1;2o2S1{2X0n0 0c0^0i0N2x2,0_2+262.1Q2:2=2@0Q2`1=2|2y2J01310f2?040i0v352z0`382 0:3b3d0i0B3h372,393n2@0C3r3j3t3l3a0I2;3c2@0w3y2}2-1x303D323e0d3I3k3L3m3N3F3e0V3R3A3T3C3E3o0O3Z2~3#3v040N0o3*3K2T3$3O0N2_1c2{3z3+3?3-0N343{363}3=2/3V3d0N3g433i3J3u480^0N3q4c2A2#0L2A2Q2D0U2H390J1$231j4p1m2$3J2)2{054u0Z2%3!3?0x0^0Z0A3r4e3B0b2@4O3S3 0A4L2u0I0W0r0L4T4I1{0@040D4%3~2/0^0L0u4m0.0S194-461Q4*0P0h3y0i510i4P3,0^2V0y2E0W2v4^0q0y3r534U1{0I0^0H5f543?4*0R0l50525n4/042X0s0G2t5m5h1Q5j045l4k5g4(1Q0y1^0401015s515u1Q4K040A3D5B5J3m0^0J5Y4.5D4R042V5%4{5!044;4?2l4_4k5S0:4*4 4k06525 5I5(0:5U0S4N5H5_3a5#5-390I5*5,675C0:5L0^010o410v0B0C0w0d0V0O5P5^6h015{5Q605 680q0^5x5z4$6g5Z015E5G2(615.695w0I5y5A6J626L0^0j6b3B6E045$5}6B5R6x5U0L1E666O6D6a6W6Q6d561a6^396j5N0k0t0m6v2*6x6z6*6+6C6-566;2{6P3u6F6T6H6#3#5E0p6N7e686 5O4`39772(5~796+6?5+5d595b195e6w6K5E0e7t6$0^0f0r4#0q0U7L3#4*4,7H6X0q0G6{0F7T5o0^7W756K6%6G6V7+6X4}0P6A7y5t6x7-7i7/7p6x6M7k3?7r743|7^6,7,6{580n5a2n7G7:6_0^7K7X6Q6%7O7Q7S8j7u7)7%5v6)8f8q047?78876X647d367f7M6S6U6I6=7 0^7n811{838s4|0^5|7w797A577D8d8R0:7J8#6R8m1 8o8v3B7V8(7Z7#8(8/8p8G7.8J4D760^0P8y8V7_6K5U2t0F0W0n6|8K887B8a8c5c8e3|1b4F4n1k4A0g4y2B4r1b2E2D1#1%2D0f1L9k9n1u2|9n0!0$0(04.