Aller au contenu

Implémentation avec deux piles

Le cadre

On s'inspire d'une situation de jeux de cartes avec deux piles : la pioche et la défausse. (Pensez à la bataille ou au Uno.)

  • On enfile dans la défausse.
  • On défile depuis la pioche,
    • mais si la pioche est vide, on retourne avant la défausse dans la pioche, ce qui donne la nouvelle pioche.
    • si les deux sont vides, on ne peut pas piocher !

Exercice

Coder une implémentation de la file qui utilise deux piles en interne, suivant le principe rappelé plus haut.

👍 Une classe Pile est disponible.

⚠ Vous n'avez pas le détail de l'implémentation de la pile. N'utilisez que les méthodes disponibles. Voir >>> help(Pile)

Coup de pouce

Pour créer une instance de File, on peux créer deux instances de Pile.

🐍 Script Python
# la classe Pile est supposée accessible

class File:
    def __init__(self):
        self.pile_entrée = Pile()
        self.pile_sortie = ...  # À compléter

⚠ Le dernier test doit provoquer une erreur volontaire s'il n'est pas commenté.

###(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 : /
.339.128013x/.r;nbOylaeêu)dV63Am(P02è-,59fq!78 _o=pcwgv4F1kRIéhtsSàCji:E050r0n0$0m0,0l0%0L0Q0l0m0%0%0O010$0,0P010406050%0p0w0w0m0f0k040(0N0l0p120N0h0L020m0w0P0g0L0Y0n1c0f0H0p0n0%050d191b1d1f170P04051K1D1N0d1K170r0,0T0`0|0~100#0,0S0#0l1#0#0$15050=0i0l0n1W0}0 011!1$1(1$0$1.1:1,0$0f1L0$0#1=1Y010G0@0n0h1q0n010`1i0%0P0m0h100A1,2i2k261@291:2c0w2e040b0L0y0f0N0P0N0%0,1l1n0:2g0f0f0n0Q2I1D2p0h1L0d242U2123221-0r2r101(0h2b2F1,1T1V0{1?2(0,2*0h0N2.1,0P2N1L2S2U2 182j1n2:272^0f1c0l150L0W2R3316322q351@37393b0A3e2k3g2S2%013l0m3a040L0u3p2T173s3j103v3x0L0U3B3r333t3H3b0E3L3D3N3F3u0N383w3b0t3S3h341X3k3X3m3y0J3$3E3)3G3+3Z3y0K3/3U3;3W3Y3I0F3`3i3|3P040W0z413(2;3}3,0W3d1E3f3T424a440W3o4f3q4h49363?3x0W3A4n3C3%3O4s150W3K4w3M4i4r3~4B3R4E4p4z4I453#4L4y3V4k3.4R3:4j4A453_4W3{4Y4O0W404$4G3*4O0A474,4q4.3,0A4e2 4M4T4Z0A4m4{4S434~4v514X4H4^4D564%583@0A4K5b4-3=4/4Q5h4?5j4^4V5m4N4^4#5r4}4/4+5v534O0u4;5z4(3,0u4`4g525F3@0u505J574@5M555P5c5R3x0u5a3f1O2}1D2.2X0r232$3V0Q2_2x0/1U1L2|0n2~5!4E055.0:5_5i010X153j3L5K270R3b655Q3G0Q150V2a6a5V1014040-483t683y0L6r6h600%0r15016y0*3)1;6f1:0L0m0T2O0L0:0p0c0L0P2a0%6y013S6r6s6b010Q0W15030L1m0L190P2E0%1;1z000p2*2r1;0y2a0L1B0$6F0Q0Q1B2G1/0n3S066U0L661@62040:0G6t5n016p765{6W0G0w150M0M2?2H7n7d3t6k0x7s3V0i6k6,0l7c7i6i016k0q6m4L757577100%2n04010Z0h2H0,3w0,6,0L6:1;2t1;0T0,0:6S7J7K6V7E7y157A7C316W0N150e7w43156O1:0M2b210!724E767^150O3L877E0h156@1:7|4a7u0q6T7-8c607:047=8i277_047{7D608e047 0n0M0%3X12852 8o7e8v8a867M3u8f6g8y7e8k737L6W797b8t1@7g8#3G0G156`0M7(0:8(7F157v8T3t8q8s8@3V7G7I4{8n8K3t7O6x1v0h0T0N0,1;6:0L0i0N1i848e8m7-8P792N0$0p0f0h8b8P8_0n7B8:8v8x7@8d7~2a810h838I5!888w8:8A8,8.9G3q8P8V8O7^6p2k0r9r6W9t9v8{3|9x9K9B808F0f8H9w7`9(049M7)9O2T9Q8=8l4L746U9k158!9#4a8%a2368*9;0h7$8:7u8:9Z7?9H7E6k0D9X9A040!0l0!2w9Eab157H9i7K8P937Q0v0+0N1k9a1nanap820L0)0L0|0L1z0n1A6J1;aM7$7+8 8n9s7z9uaf9P9I9yag8z9)8D820f849.9Ja53k8+1r8S9z60aca=3G15aGaq0$as049{4{9}7.608Z0na#9^6Wa4a`7ea9a00!aaa}8;048?bg8^aZ9!bq8|at8~5U607gaXbm6v6x6y6n3VbD6q7-0.0c210?6{0;0L2N9698aS00b0aI2b0L0$0o0$1;2KaTa_by7ebI902B0N97aO7Z6;0n2MaP0f6(0,aL0m0L7$0L0!0=2H0L9NbG3|b.8n6Rav8X7E790,bc3y8P0N6p2^b29S7/bscjcl9/bm8A8C8E8G99a:a(a$al9=8/bm8kbx4o90cfb9159m9o9qcq8pcscC9:cy9+9-bm9%cwbj8Cb30xb54g909 9;0^9@5 8U15cK3CcM9~6W6Y6!0L0j1n9maC9p1;cya-846J2k0_cYcAc=b7cMc/0R1!8hcT8Lcn0Ncp8JaY7;a!cWc%8B9Cd8c=cua;bu7}9;0%0$8-9?c*au7,c{cNbh150kak608MdS7eaedvdD4ja+9D9FdYa)dP7a0!c)cI9`cedNds8rduc#cvdZ36d#cZcBd^dCd)3Oa@d-d`1@a|e5a~04dRd.b48Wd;8Y15cidVbrdtbte13Vc$e88Qdx9*ded(cEa*dFdHc8ecc+c_16dNaweg040f0?6,ej4T2x0s3w1A0.2M3Xc*8:ay016D7%9?0L0IaVen3|7Gd:9jeH9ueLeceDdgeFc/cQ9peM3|dXd cDbdaldd9,d~eqepe)d!d+e4f7279R510d5}5^5#fh0d5(1D0$5*fm2!2V0m712U5(1Jc?3t2N0w0M0G0m0X8D0#0u151v1xaO0_eD1O3g2.3t0m0r0w1m7U6%0R1d7T0h0S151JfRfTfV2I0C120$1 1Lfg3t1_1%1)1+fx3V9leKc=91eN15eP1j0neS2C0feVbC7PeY6^9Ne$e(ewc@ed5{ff5/2U1R1M1gb~6%6;fCc62j0_6Eb%dG76f=3Vf@1{1*2ocrelcta%cX9Cd}dAgLdwcGgPahd/gkfg3ybQb?0l006%gu6{5|5/f?1)gFf`e^0;cRe{4ae}f5d_fba?es8DgOevf0ex0rd,b+gh7tgV31gl5~aJb!aCgx1B2g0p0P0%aj1Q3g1K0v0l3X0_g*2KgDg-f_gHcOeIg;e`dmekd?emh6eog`hHdEf2c!g_e0hKf8h3fahQfch85`gX6N2Cb=1AeJ9c991n7!6_b`9ob}b c16^6`c7e#1tgsd6aP6{gw87211m0Sf92ab|19b|h+8Ch@cHdG2Cf#8w0L0x6E2w0~0m0Sb(00b_2Nh.2j0f1:h%2K18i0iee4iyi26_6{bN1!h%97211;0w7X1;bZ0a0p0T2Ne$9{go1Nici1040*0n0P2b0r2kdqiB040D6$1n2|bk0BiS0r1m2*i71nij0%il6-0pb~2?1Tb?b?0QiogAaMixidi2bliXieaNj06_gAgebQ2^2Ji^b_aLb(c40?0laRaL000,1raob10m2I0L1t0,0Q0,i-6G6I6K6MjaiY8C1C1Ei+i-1zb~6,eJh)6{9N0%8xiV04d16Nh|2g0h2Gh32Nb|j59uc0g(6N1d8Hjvg#2?b%0ffC6~j}j^6^7Igo0p0l3g1(8Bh!0NaOi`iNh-i5gr340#b_0Qknhch37$b|0r6/gtgd9?hlkc17kcbQi@0hi_b@h jb049dcSjeiCi|i~6Jiokj0eigjVj`itb(7#h=6{jmjv8C9{kB1Dk93gfk5=17fk0;jt0%04.