Renverse
Règles du jeu
Cet exercice est indépendant de la nature de l'implémentation interne de File.
(self.données n'existe peut-être pas ; l'implémentation est peut-être très différente...)
- Vous n'avez pas le droit ici d'utiliser les données directement. (lesquels d'ailleurs ?)
- On ne peut utiliser que les éléments d'interface de la file (
enfile,défile,est_vide, création de file vide).
On pourra afficher une_file avec print(une_file) pour en observer l'état.
Exemple d'affichage
📤 Sortie
départ : Tête ← [2, 3, 5, 7, 11, 13, 17, 19, 23] ← Queue
fin : Tête ← [23, 19, 17, 13, 11, 7, 5, 3, 2] ← Queue
Exercice
(Très difficile)
Ajouter une méthode renverse à la classe File qui permet de renverser en place la file.
On n'utilisera pas directement de classe
Pile, ni récursivité, ni la méthode dernier.
On s'inspirera de l'exercice d'entrainement Castor Informatique, 2021, Billes renversantes.
Coup de pouce
- On videra la file dans deux files intermédiaires A et B, par paquets de 1, alternativement A puis B. Puis on la remet, avec B puis A.
- On recommence par paquets de 2.
- On recommence par paquets de 4, 8... jusqu'à ce que la file B ne soit pas utilisée, signe de fin de l'algorithme.
Guide
🐍 Script Python
def renverse(self):
"""Renverse une file, sans pile, sans récursivité"""
A, B = File(), File()
fini = False
k = 1
while not fini:
tour = 0
... # Du travail !!!!!
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
.128013,59/f.7B8r;nb _o=ylaepcwgu)vd*46F13kAméhtsP(S0+2i:050D0v0P0u0X0t0Q0o0x0t0u0Q0Q0r010P0X0w010406050Q0A0M0M0u0k0s040T0q0t0A0?0q0m050e0}0 11130{0w04051j1c1m0e1j0{0D0X0C0+0-0/0;0O0X0z0O0t1A0O0P0_050$0n0t0v1v0.0:011z1B1D1B0P1J1L1H0P0k1k0P0O1N1x010f0(0v0m0u0M0v010+160Q0w0u0m0;0W1H1^1`1(1P1+1L1.1:0_0a0o0R0k0q0w0q0Q0X190m0o0!1?0k0k0v0x2h1c1 0m1k0e1$2u1Z1#1!1I0D210;1D0m1-2e1H1s1u0,1O2E0X2G0m0q2K1H0w2n1k2s2u2Y0|1_2i2M1)2R0k100t0_0o0I2r2$0`2#202(1P2*2,2.0W2;1`2?2s2D012{0u2-040o0J2 2t0{322_0;35370o0F3b312$333h2.0c3l3d3n3f340q2+362.0G3s2@2%1w2`3x2|380h3C3e3F3g3H3z380j3L3u3N3w3y3i0d3T2^3V3p040I0U3!3E2N3W3I0I2:1d2=3t3#3-3%0I2~3=303@3,2)3P370I3a3}3c3D3o420_0I3k463m3^413X4b3r4e3 494i3(3B4l483v3`3K4r3M3_4a3(3S4w3U4y4o0I3Z4C4g3G4o0W3*4I404K3I0W3;2Y4m4t4z0W3|4U4s3$4X454!4x4h4R4d4)4D4+3Q0W4k4.4J3O4L4q4@4P4_4R4v4|4n4R4B514W4L4H2!1p2W1c2K2x0D1#2C3v0x2S1;1k5d1l5b592!5j0!2X4/1P0K0_0!0f3l4#3-0y2.5B4*2`0f0_2n0m0C0v0k0Q0v5G5v0;0^040S5S4^010n5V5Q0t5A4e5C1)5V0B0Y3s0o5;0o5+2`0_0L5Y4}015V0b3l5?5H3g0_0i605@0;0q0_0r6662340_0H1,5{335V0S0B5 4e615T6e046g1L6i3v6k0B5:5=676r1+0m0X6c6q69046b6o6B0K0x6f365Q6z5;6B0m0_0K6G5Z6I6K2Y6p5Z0M0X4b6S6%5|5x040y1z6u6L6d0q5E042R0P6Y5|6V046D6F5*6d5V5/4l5=796-3o0_0P0q0A0k6~336!7i3v6)0_4N4U7a6A6d6/6;6h6@6H6`6|7l3V5#0_5%5)2!6^0_0g6v3$0_0v0Q0P0p0C0X0!7L3-6x777q7r7a6U0_736$6B7k7x6(6*047p3?7!7#7t0_7v6?7)750_5X746q707(2=7b3v6I020t0P0l7B3_6W7V5,0_6y7,5|6_0_1`0D8b1)8k6{0q6}8i337D047F8e1P6I7K7 5Z707O7Q7S7U8D5|7X6,7=797$045`8K7j7J8z63041-235R8T6w7}8W5!5$0v5(8)8B8)700D0N8!8)6x8h7Z8O7?807%8o8A0_0V6#836B7n3(8N7!8Q8230843V7+7{6q977:3~8|6T7@6:6=8#9h5Z6k8:8 8u850_8789908X6X8$3V5-9C018q8m9I8q7A9x7C8+8-9F3-8/9T2)7N7P7R7T9r2=6B8M789m8P6d70659W91048C7H8~8Y0m8@9:5U8(9|8*7E8,7G9%7I9=9v048=9{9@9t7}0B8`7;9+7s9^9c2t9e9U92949d967.4Tag8|8Q7e7g9Mao9I97at3~067=8Q72az6J9I70ax7h9Pan049A0lapalar6+9*7r6M7^9q9M7z8saL5_8.8V9 8F9Z8I9$309(ad7Yau8O9baJaU38aW7/99aZ9o7_a=aV7|5Wa7aka a5aSa*049Eab8L8ga%8l0m8naP8pa(8t9s6 64a,a6a.9Y8H9#8^a^b2a{6d8w8y9 9Vbi7c9_aaa46q9uby049/bL9ybxbV7Ma88?7wbY7Wadaf9lah9najaJ93aBasbE9,b.bp9;a~am1)9jb?ai5Z7ua$b_9}b9bSbbb|9;bec46rbhbPac04b*b77ybmbobt7jbrbf8Sb%8pa-cs5^8Ya:bB9 9)8{ah6BbHa2bw9?cfbubNb$cJ6j9~cv8XcrcNbWcIa?9-5yb#7`cT9Gb)b b3b^cnbWb:ccaC3saF9acXbgaJ0Eb{b04Z3?1c5s0v2u2Vd05c1t5e2x2A2v0u1Kd30e5d0{dd0#0%0)04.
# Tests(insensible à la casse)(Ctrl+I)
(Alt+: ; Ctrl pour inverser les colonnes)
(Esc)