File avec deux piles

On choisit d'implémenter une file à l'aide d'un couple [p1, p2] où p1 et p2 sont des piles. Ainsi file[0] et file[1] sont respectivement les piles p1 et p2.

Enfiler une valeur

Pour enfiler un nouvel élément valeur dans file, on l'empile dans p1.

enfiler

Défiler une valeur

Pour défiler file, deux cas se présentent :

Dans ce cas, on dépile p2.

défiler

Dans ce cas, on dépile les éléments de p1 en les empilant dans p2 jusqu'à ce que p1 soit vide, puis on dépile p2.

défiler

Interface des piles

La structure de pile est utilisable au travers de leur interface constituée des fonctions suivantes :

  • creer_pile_vide : renvoie une pile vide.
  • depiler : prend en paramètre une pile et renvoie le sommet qui est dépilé.
  • empiler : prend un element quelconque et une pile et renvoie une nouvelle pile où element est le sommet.
  • est_pile_vide : prend en paramètre une pile et renvoie True si la pile est vide.
🐍 Console Python
>>> ma_pile = creer_pile_vide()
>>> est_pile_vide(ma_pile)
True
>>> empiler(ma_pile, 5)
>>> empiler(ma_pile, 4)
>>> depiler(ma_pile)
4

A partir des opérations sur les piles fournis dans le module, écrire en Python les fonctions suivantes :

  • une fonction creer_file_vide() qui renvoie une file vide de tout élément.
  • une fonction est_file_vide(file) qui prend en argument une file et qui renvoie True si la file est vide, False sinon.
  • une fonction enfiler(file, valeur) qui prend en arguments une file et un élément valeur et qui ajoute valeur en queue de la file.
  • une fonction defiler(file) qui prend en argument une file et qui renvoie l'élément en tête de la file en le retirant.

Exemple

🐍 Console Python
>>> ma_file = creer_file_vide()
>>> est_file_vide(ma_file)
True
>>> enfiler(ma_file, 1)
>>> enfiler(ma_file, 2)
>>> est_file_vide(ma_file)
False
>>> defiler(ma_file)
1
>>> defiler(ma_file)
2

Contraintes

On doit utiliser exclusivement les fonctions fournies.

Aucune connaissance de la manière dont sont stockées les valeurs de la pile n'est nécessaire.

###(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.8217ê_Ce,l8:ynb0Duik(2c[7aûm.j%S)r9 15s/éO?-LxR]T6gào+t=hd3PEfvp;wAQ4q050%0f0!0x0q0h0K0H0u0h0x0K0K0#010!0q0-010406050K0p0z0z0x0F0k040D0Y0h0p170Y0l0H020x0z0-0.0H0S0f1h0F0?0p0f0K050L1e1g1i1k1c0-041I1P051S0L1S1U1P1c0%0q0,0 1113150$0q0W0$0h1,0$0!1a050`0m0h0f1%1214011+1-1/1-0!1^1`1?0!0m0Y0%1k1@0F1Q0!0$0 1n0K0-0x0l150t011|1)010+0|0f0l1v0f1?2k2m2r1~2u1`2x0z2z040a0H0)0F0Y0-0Y0K0q1q1s0^2i0F0F0f0u2U1I2B0l1Q0L2g2*0!2e2d2f0%2D151/0l2w2R1?1!1$101}2@0q2_0l2a1#1?0-2Z1Q2(2*3b1d2l1s2 2s340F1h0h1a0H0I2%3f1b3e2C3h1~3j3l3n0t3q2m3s2(2?013x0x3m040H0(3B2)1c3E3v153H3J0H0=3N3D3f3F3T3n0J3X3P3Z3R3G0Y3k3I3n0V3(3t3g1(3w3-3y3K0w3=3Q3^3S3`3/3K0i3~3*403,3.3U0G463u483#040I0n4d3@30493{0I3p1J3r3)4e4m4g0I3A4r3C4t4l3i423J0I3M4z3O3?3!4E1a0I3W4I3Y4u4D4a4N3%4Q4B4L4U4h3;4X4K3+4w3}4%3 4v4M4h454,474.4!0I4c4=4S3_4!0t4j4{4C4}3{0t4q3b4Y4)4/0t4y574(4f5a4H3d1V391I2}2-0%2;3F0u2a2J0@1#1Q380f3a3r3X055r0^5z4|150r1a0^0+5B4-2s0/3n5M4?3i0+1a0u2Z0f0F0d2F0f0d0,0q0^5R5G0119040s0E0j4k3F5P3K0H5`5+52150K0%1a00621A0l0,0Y0q1{0p2_0H5#0H5(0^62003(5`5{5N1~5I042Z0!0p0F0l3X0H5e4m5.0v5|3!5V5X5Z0-2v5%5)0f6B3+5.5:0g6v6x3i6D0f5Y0d6G1`6I5*4Q6R1~6N0E0T3(58486o5K6L485^6w6#6m3S5U041G0!5!6H6f6K6@5S6%1a0s6:4v1a5#772s5.5;5?3+6=6k7b1~5 61632w66680H0U0F1F0H2S0H116c2v0H6|6e6J6h6j7i6^016o6q6s6u4Q6w7I0l1a6|6W6 6J7j156N7X3G792v7!6z7!0z0q1a503d7I5.0T0E6Q7I0Y5^2m0%7@733S7S0K6}6X5$707(757!7R047a725,7)8c5}017+4N86047=6+6$5H5J0f5L8f5@5Q8t4)6`2w5#0F8k768w4f7$1`8k6P7O8o7#040,3I0f6s8k7e518u5_5{8E4m7l046h0:0B0Y1p1{0h000M0h0M2I0l0!6e8P6s0H0X7x0x7z1`7F4X6k7P7~8M1B838B8Y7c87993w8G717/948e9g5,8i047.5A7:1a0T8J3b935,898O1`8R9c7Y1a7?4X6,4m6.8r7!6=886`5K2v989j8g7Z9A8M8b9Q3F7d5=8U7g3n7i9T8!905d7I8!920o0M6d6a0H8.8:2w8?2W7y9V4s8L9-6k647p1{0u0_9?8/8;0!7f48a05`9*4s928L6o0q8s9t8L897T836Z9f9o9h9b9W4)9e8k6A9T9l56at8d9q8T5792ah7I6o0/1+8H8K7^5^34aaaQ94ao817U6Y859T9Saw8F8a7%a$1aaAa(4m9l9n3C8L7;aHagaJa{an1a9x8Q9P3r9u8g0Y1a0#6vb36C040^978C88aya,04a.aE8ga;8k8m91a{aJa}6{1w9Obe9T899}a?9pbi7*7,4hbn9sb2bsa 9za/9a049D5706aK947K0_7M7}9v8qbdbh8DbM9da*aPb%9BbCaBbEaDbAau8lbP9~0L5D5y1R5k0L5m1I0!5oc02/2+292b2-0x1_b{b~5v1O5F8g2Z0z5!0x0r5$0$0(1a1A1C1E1G0H9Z5i1Y1T040o2m0~a58?0f0R5Y0u0qa50g0H1r0H1p0|0q0K696b817t2#6s1{2W830H0%1r8?1`0~2P0M0F0x2U0~0%00962va97B9`cZ0M83c_cS6cc(8`2i0y8?5r0l812m8?8L1i2T0$1h0!cF1a090s0N0s0I0E09b@3C0A1R3s1P0;0pc?1s6|0P0|c$8+8}cV0pcX2ZdE8~a41r812T0p0McZdT0p0R0H830~0Odu1c0p0h3s1/dv040Q00c,c.2Uc$6icV1r0W6{0l5#a92%2.d^3Kd72S811{8{c@1`0F7x8-a89_c$cB8|dX7Ac=9_0FdS0A0H0e0_dhcM0-c-c/0qcNd00+0{9`1r0ud35rd52id80`8=dt1V3s0Ld*1cePcy0Q3-0K1E009=cSd%a79^8=7v1{d 0p0,cZef9|2vcL8,d/evcN2W1dd 0ld_0%9:c^9_d~2Oe|3K2Z5(ed8{el3IcR5Y0Hd cReseuc:cuc$c}9Oea9@c_9{8}c#ej8=el0fe;c?bue8eed8egft1{0K3-171{0-0pfg1`fl97dLcDer0z0c2Ieh1`enep0~ffc+etd:ewfDeyd20u0$0x0u6ae5d4d6dOeJcEeB0leDe=f(e@2Vc|d|ed7C0M0W8Pc_8{eFf^eIdaeLcxeO0qeNd%d+058}3+0W221;290R2q0%c/0x0P0!0k0-0f150q1h0W2zee0`0P0/5)2g150x1pb5gJgy0$0f1:0!gPgR2q0$2Z0+gEgG1G0L2I0|9y5Z0u120A0K0,0Wgvgx0P0^0K0u0P2Q2S2U1529240Y0z1?gF0W0H3IgY01e~8A2q0K0F0ug)0xgH0Kg,gW0hg/0dg;0Kg?g^2qgM0%gO010=0n0C1?0L0x2*cx1PcAfDfO6GdKg}0 12cL2Q8_hgfnhPch68e9fp9_c;0bf=dMd3dc0Fdedgdi04dk0ldq6vh(8=0~0xe,f~cth/h;c/h?h^h`7Oh|0!c;ef5C5s040-4qb`04cLcN8}i32gh=guh@0s0th_dr2)fhf)dOdX8)e9e~fQf.0xcse#fq1{ie5Eih1Iijc`7x0be7fd1ee9iM5y0-4yijhVfM0~h,e?d;2WiEf08=cLfH2Tb93+ddipi5irdkiu0Z0Ii89ti+f*0~0j7xdNeG7Cc%f}7x320M0{2Zgggmgo48gqgXgtg`gKgAgChmgHjpgyhAhCgQ0!gSgwgKgVgXgZjAg#g%jtg+hQ2!g=g@g_gTg|1Gg h12Tf*h40Yh6h81Qhahc0hhehYe8hihkjKhpjMhvhxjQjx0$15hEhG2*hJd#cy0*1sf62mf.fxj70~ia0~1e1#da0~0l00gQf38?0m1G671siIc=h,eZfOj3cNhWe90c2.g30|0Mhwj 1Sjk4mjm23jojRjrgD01gFhngIjCjwgNj_01jzjBg{jE23jGgSg$8rj/1V0q2Zhv0tj?jvjSg~h02RjW1rjYj!h90zhbhd15j+5Yj-hlkNg*j:k+jN0Kk.jPhzkTj`hFhHj~eMce0:322ScLgwhOfKl8dEcChUiBhXe fB1sk9c$h+6b6d8{lAech}il1sin7Ii_dfi{djitiv6vktfDkvfPfniGiIiadLiYigiiifiR0hiTfAiV8_l(i!iPifi%fgi*g0i,c|c~edlXl!7uialoeCcO1sjA0`0hl%lNh:i`dhi|0s0(lT7OlVhw0Hk10H0z0Y0k2w6bfOl1fqlDiJedgccZm6iolPmglRmj0L2n0(j1b2mmjice0Qj88?gq0Y0m3I7B81eHd9i:cM1s2l0FfOcJ0qmce{d_gchcmr0F17f2e0mQ5l0_0{0}04.