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é.
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
.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.
# Tests(insensible à la casse)(Ctrl+I)
(Alt+: ; Ctrl pour inverser les colonnes)
(Esc)