File avec deux piles

On choisit d'implémenter une file à l'aide d'un couple [p1, p2]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
.8217.128013s3_8ufvy n7aêSû1me(P24C:jtwi]D[hE)6Oo;bcdgM?/T0làqApQ.rL-,=+k%95Rxé050Q0t0B0n0D0X0c0k0P0X0n0c0c0,010B0D0#010406050c0g0s0s0n0(0j040p0M0X0g180M0l0k020n0s0#0N0k0=0t1i0(0Z0g0t0c050U1f1h1j1l1d0#041J1Q051T0U1T1V1Q1d0Q0D0i101214160H0D0R0H0X1-0H0B1b050{0O0X0t1(1315011,1.1:1.0B1_1{1@0B0O0M0Q1l1^0(1R0B0H101o0c0#0n0l160w011}1*010h0}0t0l1w0t1@2l2n2s1 2v1{2y0s2A040b0k0v0(0M0#0M0c0D1r1t0_2j0(0(0t0P2V1J2C0l1R0U2h2+0B2f2e2g0Q2E161:0l2x2S1@1#1%111~2^0D2`0l2b1$1@0#2!1R2)2+3c1e2m1t302t350(1i0X1b0k0r2(3g1c3f2D3i1 3k3m3o0w3r2n3t2)2@013y0n3n040k0d3C2*1d3F3w163I3K0k0x3O3E3g3G3U3o0;3Y3Q3!3S3H0M3l3J3o0K3)3u3h1)3x3.3z3L0m3?3R3_3T3{3:3L0f3 3+413-3/3V0:473v493$040r0W4e3^314a3|0r3q1K3s3*4f4n4h0r3B4s3D4u4m3j433K0r3N4A3P3@3#4F1b0r3X4J3Z4v4E4b4O3(4R4C4M4V4i3=4Y4L3,4x3~4(404w4N4i464-484/4#0r4d4?4T3`4#0w4k4|4D4~3|0w4r3c4Z4*4:0w4z584)4g5b4I3e1W3a1J2~2.0Q2=3G0P2b2K0^1$1R390t3b3s3Y055s0_5A4}160.1b0_0h5C4.2t0C3o5N4@3j0h1b0P2!0t0(0e2G0t0e0i0D0_5S5H011a040u0J0z4l3G5Q3L0k5{5,53160c0Q1b00631B0l0i0M0D1|0g2`0k5$0k5)0_63003)5{5|5O1 5J042!0B0g0(0l3Y0k5f4n5/0G5}3#5W5Y5!0#2w5(5*0t6C3,5/5;0+6w6y3j6E0t5Z0e6H1{6J5+4R6S1 6O0J0E3)59496p5L6M495_6x6$6n3T5V041H0B5#6I6g6L6^5T6(1b0u6;4w1b5$782t5/5=5@3,6?6l7c1 6062642x67690k0V0(1G0k2T0k126d2w0k6}6f6K6i6k7j6_016p6r6t6v4R6x7J0l1b6}6X706K7k166O7Y3H7a2w7#6A7#0s0D1b513e7J5/0E0J6R7J0M5_2n0Q7^743T7T0c6~6Y5%717)767#7S047b735-7*8d5~017,4O87047?6,6%5I5K0t5M8g5^5R8u4*6{2x5$0(8l778x4g7%1{8l6Q7P8p7$040i3J0t6t8l7f528v5`5|8F4n7m046i0!0A0M1q1|0X000@0X0@2J0l0B6f8Q6t0k0Y7y0n7A1{7G4Y6l7Q7 8N1C848C8Z7d889a3x8H727:958f9h5-8j047/5B7;1b0E8K3c945-8a8P1{8S9d7Z1b7@4Y6-4n6/8s7#6?896{5L2w999k8h7!9B8N8c9R3G7e5?8V7h3o7j9U8#915e7J8#930F0@6e6b0k8/8;2x8@2X7z9W4t8M9.6l657q1|0P0`9@8:8=0B7g49a15{9+4t938M6p0D8t9u8M8a7U846!9g9p9i9c9X4*9f8l6B9U9m57au8e9r8U5893ai7J6p0C1,8I8L7_5_35abaR95ap827V6Z869U9Tax8G8b7(a%1baBa)4n9m9o3D8M7=aIahaKa|ao1b9y8R9Q3s9v8h0M1b0,6wb46D040_988D89aza-04a/aF8ha=8l8n92a|aKa~6|1x9Pbf9U8a9~a@9qbj7+7-4ibo9tb3btb09Aa:9b049E5806aL957L0`7N7~9w8rbebi8EbN9ea+aQb(9CbDaCbFaEbBav8mbQ9 0U5E5z1S5l0U5n1J0B5pc12:2,2a2c2.0n1`b|b 5w1P5G8h2!0s5#0n0.5%0H0d1b1B1D1F1H0k9!5j1Z1U040F2n0 a68@0t0?5Z0P0Da60+0k1s0k1q0}0D0c6a6c827u2$6t1|2X840k0Q1s8@1{0 2Q0@0(0n2V0 0Q00972waa7C9{c!0@84c`cT6dc)8{2j0q8@5s0l822n8@8M1j2U0H1i0BcG1b090u0L0u0r0J09b^3D0%1S3t1Q0$0gc@1t6}0*0}c%8,8~cW0gcY2!dF8 a51s822U0g0@c!dU0g0?0k840 0Tdv1d0g0X3t1:dw040)00c-c/2Vc%6jcW1s0R6|0l5$aa2(2/d_3Ld82T821|8|c^1{0(7y8.a99`c%cC8}dY7Bc?9`0(dT0%0k0y0`dicN0#c.c:0DcOd10h0|9{1s0Pd45sd62jd90{8?du1W3t0Ud+1deQcz0)3.0c1F009?cTd(a89_8?7w1|e00g0ic!eg9}2wcM8-d:ewcO2X1ee00ld`0Q9;c_9`d 2Pe}3L2!5)ee8|em3JcS5Z0ke0cSetevc;cvc%c~9Peb9^c`9|8~c$ek8?em0te=c@bve9efd9ehfu1|0c3.181|0#0gfh1{fm98dMcEes0s0o2Jei1{eoeq0 fgc,eud;exfEezd30P0H0n0P6be6d5d7dPeKcFeC0leEe?f)e^2Wc}d}ee7D0@0R8Qc`8|eGf_eJdbeMcyeP0DeOd(d,058~3,0R231=2a0?2r0Qc:0n0*0B0j0#0t160D1i0R2Aef0{0*0C5*2h160n1qb6gKgz0H0t1;0BgQgS2r0H2!0h1+250#0c0z0Ub`5t0?0%0h3.gI0%0n0#g,0%0t0QdJg2g?0(0U2vf/690(0c0U2x0e2/0n8PdWh56I0_dWa!1Hhb0?0M0e0=0I0S0UgG0ngIha2J0}9z5!0P130%0c0i0Rgwgy0*0_0c0P0*2R2T2V162a250M0s1@gG0R0k3JgZ01e 8B2r0c0(0Pg*0Bg,g.g:0_g=g@0(g_g{g}g h12Vh3hih75Zhahchehg0?hi6Zhk0?hmi6hphrhthvgHhnhA0XhC0ehE0chGhI2rgN0QgP010x0W0/1@0U0n2+cy1QcBfEfP6HdLhN1013cM2R8`h*foiLcih8e$aac=0af?dNd4dd0(dfdhdj04dl0ldr6wfq9`0 hf2#7ycui*i,c:i.i:i=7Pi@8?c=eg5D5t040#4rb{04cMcO8~i~2hi-gvi/0u0wi;ds2*fif*dPdY8*eae fRf/0nctiZeee`jejc1Jjec{7y0ae8fe1feaj95F0#4zjeiRfN0 i%e@d=2Xjzf18?cMfI2Uba3,dejkj0jmdljp0-0rj39uj#f+0 0zi|f^7C82c%eD7y330@0|2!ghgngp49grgYguhKgLgBgDgFilkjgziwiygR0BgTgxgLgWgYg!kug$g(h:h=g/b{h_g^0tg`g|ish hEi10hh4h61,i5hb0lhdc/i9ib5%idifhohqhshuhwhy1W0D2!irithJgUhM1HhPhR2Uf+hU0MhWhY1Rh!h$0Xh(iUe9h,h.kEg-kGg;g?kJkLh~h0kPf+i2kTh8i6kXi8gRia5$0ek%dZk)iik,ilhaiM2#hFhHk@kr0H16iAiC2+iFd$cz0I1tf72nf/fyi|0 j50B0 1f1$db0 0l00gRf48@0O1H681tjDc?i%e!fPj}cOiSea0o2/g40}0@islQ1Tke4nkg24kik^klgE01k-gJkwkqgOlK01ktkvhLky24kAgTg%8slch?kHlgh{kKh}kNlkh2kRi3kUh9kWkYhfltk#lw8RielycGk*ijmhlDk:lF0c0wk?kpk_hOhQ2Sk}1sk l1hZ0sh#h%16l85Zlah/20g+ldh@cGmAh|kMg~mFkQkScKmJlqmMk!lvlx2wigmVlBhxhnlEirm$lHivmllLiBiDlPeNcf0!332TcMgxiKfLmZdFcDiQjwiTf0fC1tl!i#i%6e8|nNedj6jg1tji7Jj:dgj=dkjojq6wl|fEl~fQfojBjDl!dMjS5zjIn03La70XjNfBjP8`n@jbjVjajXfhj!g1j$c}c een-n:7vl!nBk69?ku0{0Xn?nZi+j;dij?0u0dn)7Pn+is0klS0k0s0M0j2x6cfPm_fri$nTe%f_d6c!k6jjn#osn%ov0U2o0dj{b3oykccf0)dOeHgr0M0O3Jk3gedaj*cN1t2m0(fPcK0Dooe|d`gdh$oD0(18f3e1o%5m0`0|0~04.