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

.128013beqn49vi[+3mo5tx;PGhklpw!f(: cg.a=ry0DS6]u/72)As18d050Z0c0p0H0i0w0W0D0E0w0H0W0W0I010p0i0x010406050W0Q0m0m0H0J0K040N0n0w0Q0@0n0e050R0~1012140|0x04051k1d1n0R1k0|0Z0i0h0,0.0:0=0u0i0F0u0w1B0u0p0`050%0b0w0c1w0/0;011A1C1E1C0p1K1M1I0p0J1l0p0u0,170W0x0H0e0=0T011O1y010A0)0c0e0H0m0c1I1+1-1=1Q1^1M1{1}0`0a0D0s0J0n0x0n0W0i1a0e0D0#1)0J0J0c0E2i1d200e1l0R1%2v1!1$1#1J0Z220=1E0e1`2f1I1t1v0-1P2F0i2H0e0n2L1I0x2o1l2t2v2Z0}1,2j2N1?2S0J110w0`0D0X2s2%0{2$212)1Q2+2-2/0T2=1-2@2t2E012|0H2.040D0l302u0|332`0=36380D0f3c322%343i2/0o3m3e3o3g350n2,372/0O3t2^2(1x2{3y2}390S3D3f3G3h3I3A390Y3M3v3O3x3z3j0g3U2_3W3q040X0L3#3F2O3X3J0X2;1e2?3u3$3.3(0X2 3?313^3-2*3Q380X3b3~3d3E3p430`0X3l472v2W0c2v2L2y0Z1$2D3w0E2T1~1l4k1m2X3E2!2?054q0#2Y3V3.0v0`0#0A3m493w0y2/4K3N3`0A4H2p0n0Q0x0c4P4E1?0_040B4Z3_2*0`0c0q4h0:0i1b4)411Q4$0U0C3t0D4}0D4L3%0`2Q0W1!0Q2q4;0e0W3m4 4Q1?0n0`0I5b503.4$0j0P4|4~5j4+042S0m0b2o5i5d1Q5f045h4f5c4!1Q0W1:04020d0Q0n0p0r5K5M5O5o4}5q1Q4G040A3y5x5F3h0`0E5#4*5z4N042Q5*4@5%044-4/2g4=4f5V0=4$4{4f064~625E5+0=5X0i4J5D5|355(5:340n5-5/6a5y0=5H0`5Q5N0r0L3|0l0f0o0O0S0Y0g6o5S5{6k015~5T63626b0e0`5t5v4Y6j5$015A5C2Z645;6c5s0n5u5w6P656R0`0k6e3w6K045)606H5U6D5X0c1E696U6J6d6$6W6g521c6~346m5J5L6p0V0t0M6A0r4?346F6:6;6I6?526`2?6V3p6L6Z6N6+3W5A0z6T7n6b757c7c7e3w7g2Z617i6;6|5.5955571b5a6C6Q5A0G7D51040H0x4X0e0Z7V5k0`4(7R6%0e0b710p7%4#7)7;2{7q6!6O2#6D4_0U6G7I5p6D6-6M6#6{6D6S7t3.7A775O7C7h817K537N2i7Q7|7S0`7U7+6W6-7Y7!7$8r7f7?8x6,6}8n6%4_6G6b677m317o8B6Y7`8a5e0`7w8P5G5I7B8d7d8A3W7F3@7i8i7M0J568l7@0=7T8-6X8u1`8w8D6W4$7*8^3p7.7L7:8Z7(4%8:847r864z7}0`0U7 8g8L3W5X2o0p0Q0J72876Q6-8j8*7O593D0R4B4i1o4w0R4u2w4m1d2z9D0H1L9w9z1u2@9z0$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

.128013beqn49vi[+3mo5tx;PGhklpw!f(: cg.a=ry0DS6]u/72)As18d050Z0c0p0H0i0w0W0D0E0w0H0W0W0I010p0i0x010406050W0Q0m0m0H0J0K040N0n0w0Q0@0n0e050R0~1012140|0x04051k1d1n0R1k0|0Z0i0h0,0.0:0=0u0i0F0u0w1B0u0p0`050%0b0w0c1w0/0;011A1C1E1C0p1K1M1I0p0J1l0p0u0,170W0x0H0e0=0T011O1y010A0)0c0e0H0m0c1I1+1-1=1Q1^1M1{1}0`0a0D0s0J0n0x0n0W0i1a0e0D0#1)0J0J0c0E2i1d200e1l0R1%2v1!1$1#1J0Z220=1E0e1`2f1I1t1v0-1P2F0i2H0e0n2L1I0x2o1l2t2v2Z0}1,2j2N1?2S0J110w0`0D0X2s2%0{2$212)1Q2+2-2/0T2=1-2@2t2E012|0H2.040D0l302u0|332`0=36380D0f3c322%343i2/0o3m3e3o3g350n2,372/0O3t2^2(1x2{3y2}390S3D3f3G3h3I3A390Y3M3v3O3x3z3j0g3U2_3W3q040X0L3#3F2O3X3J0X2;1e2?3u3$3.3(0X2 3?313^3-2*3Q380X3b3~3d3E3p430`0X3l472v2W0c2v2L2y0Z1$2D3w0E2T1~1l4k1m2X3E2!2?054q0#2Y3V3.0v0`0#0A3m493w0y2/4K3N3`0A4H2p0n0Q0x0c4P4E1?0_040B4Z3_2*0`0c0q4h0:0i1b4)411Q4$0U0C3t0D4}0D4L3%0`2Q0W1!0Q2q4;0e0W3m4 4Q1?0n0`0I5b503.4$0j0P4|4~5j4+042S0m0b2o5i5d1Q5f045h4f5c4!1Q0W1:04020d0Q0n0p0r5K5M5O5o4}5q1Q4G040A3y5x5F3h0`0E5#4*5z4N042Q5*4@5%044-4/2g4=4f5V0=4$4{4f064~625E5+0=5X0i4J5D5|355(5:340n5-5/6a5y0=5H0`5Q5N0r0L3|0l0f0o0O0S0Y0g6o5S5{6k015~5T63626b0e0`5t5v4Y6j5$015A5C2Z645;6c5s0n5u5w6P656R0`0k6e3w6K045)606H5U6D5X0c1E696U6J6d6$6W6g521c6~346m5J5L6p0V0t0M6A0r4?346F6:6;6I6?526`2?6V3p6L6Z6N6+3W5A0z6T7n6b757c7c7e3w7g2Z617i6;6|5.5955571b5a6C6Q5A0G7D51040H0x4X0e0Z7V5k0`4(7R6%0e0b710p7%4#7)7;2{7q6!6O2#6D4_0U6G7I5p6D6-6M6#6{6D6S7t3.7A775O7C7h817K537N2i7Q7|7S0`7U7+6W6-7Y7!7$8r7f7?8x6,6}8n6%4_6G6b677m317o8B6Y7`8a5e0`7w8P5G5I7B8d7d8A3W7F3@7i8i7M0J568l7@0=7T8-6X8u1`8w8D6W4$7*8^3p7.7L7:8Z7(4%8:847r864z7}0`0U7 8g8L3W5X2o0p0Q0J72876Q6-8j8*7O593D0R4B4i1o4w0R4u2w4m1d2z9D0H1L9w9z1u2@9z0$0(0*04.