Arbre en version immuable
🏷️ On considère ici des arbres étiquetés.
Créer un tuple
Pour créer un tuple, on peut faire :
🐍 Script Python
t_0 = () # le tuple à 0 éléments
t_1 = (5,) # un tuple à un seul éléments
témoins = (2, 3, 5, 7, 11, 13) # un tuple à 6 éléments
carrés = tuple(n**2 for n in range(10)) # création avec une compréhension
une_liste = [17, 19] # c'est une liste Python
une_liste.append(23)
suite_témoins = tuple(une_liste) # création par transtypage explicite
Il est indispensable de placer une virgule au tuple
(5,) ; sinon, Python l'interprète comme le nombre 5 qui n'est pas un tuple.
Arbre en version immuable
On souhaite, dans cet exercice, avoir une version immuable de l'arbre, à base de tuple, de manière récursive pour chaque branche.
🐍 Script Python
A__mutable = [42, [[1, []], [2, []]]]
A_immuable = (42, ((1, ()), (2, ())))
Exercice
Coder une fonction vers_tuple qui prend un arbre étiqueté en paramètre (en version liste) et qui renvoie un arbre de structure identique, avec les mêmes étiquettes, mais entièrement construit avec des tuples.
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]x,5/f.q7r;nb _o=ylaepcwgu)vdV4613kRAméhtsP(S2[-i:050D0v0P0u0X0t0Q0o0x0t0u0Q0Q0r010P0X0w010406050Q0A0M0M0u0k0s040T0q0t0A0?0q0m0o020u0M0w0l0o0K0v100k0i0A0v0Q050f0}0 11130{0w04051y1r1B0f1y0{0D0X0C0+0-0/0;0O0X0z0O0t1P0O0P0_050$0n0t0v1K0.0:011O1Q1S1Q0P1Y1!1W0P0k1z0P0O1$1M010g0(0v0m1e0v010+160Q0w0u0m0;0U1W26281`1(1}1!200M22040a0o0R0k0q0w0q0Q0X191b0!240k0k0v0x2w1r2d0m1z0f1^2I1=1@1?1X0D2f0;1S0m1 2t1W1H1J0,1%2S0X2U0m0q2Y1W0w2B1z2G2I2:0|271b2!1{2)0k100t0_0H2F2@0`2?2e2_1(2{2}0_0U3128332G2R01380u2~040I3c2H0{3f360;3i3k0F3n3e2@3g3t0_0e3w3p3y3r3h0q2|3j0_0G3D342^1L373I39040j3w1C2.1r2Y2L0D1@2Q3G0x2*2l0Z1I1z2-0v2/323W3*0!3=353Q0;0J0_0!0g3W3q3|010y0_0o423F440m0g0_0C0v0k0Q0p0P0A0w1!493{2#010^040S4o3P4q0m0_110n2B4v3g4s0B0Y3D0o4J48434q0Q2b04011j0m0C0q0X1#0A2U240w4W0o2y0t004A2B0d0o1 0o4f4h0X1a0o4k4m224I4K3O3z0_0k0u0x2%0v4D3G4s0d3w4L4a4x0_1 0g280P1q1s325b4p1{0q0_0r5a4~3G4y044+555k3d064K5m4w2`0_2)0A4f0u0A0c5s4M5o5q5N5c1{4s0V0b4|4J5t443~040g3I5R5n370_0Q0q0A4i5x5)5E1(0q46042%5=4 045f5h5j2=5O1(4s4H5z3o5C5C5Z5d045H5J5L56445p040h6h6c0u0w0w1 0D6m5T0_4u673`5?3s4e4g4i4_4n6x6b6u4t6t5+045-5/0p5;6G630;4F0B5X5D3g5#2B4k0k0m5|576v6K6A0451532U6+4r0_596x6X5u0n0_6E5y625S646*6R706,6e0v5K5M735*6T0_0B6V6x0{0f3^3;3X7k0f3!1r0P3$7p2O2J0u1Z7m3!1x6y3g2B0M0p5g0J0v0p0O0I0_1j1l1n1p0o662=1E332Y3g0u0D0M1a2v4?1b0?4s1x7W7Y7!2w0W0?0P1:040E6C7$0o0u4f0x0o4Y1#3*1f0k0N0O1 2u1a1C7U1I3g1*1R1T1V7A3G2h1 210_2n0T0x0k0@0P2o0s1^886G3:6y2;3?7j8h5!3 0v417a6z45476;4c6B4h4j4l6F6 7b6=6J8I5}6Q8T8J4F7R325B4}6S014O0_4R1 4U4$7 4!4$4(4*0k4B0v4-4/4;877%8R4{7g6a8+5v6.546;586(4b5e4c609d4q6j5r6^6H6L8Z8(96743h6|0p5 0m5i9i5P049l2:6_4b6{046}9b728!5}908Q4`9J8W9L5u5,5.5:8{4C8X6)047f9D9n3}0_5%0k9z6L6N9W8|9-0;5^0_5{9m979f5g9x613?8+4F6W9(016Z0#0A6$9=8V6w9S9e6-529a9Z449c9`9s5v0P9v9g9~9Q9$8(1r8C7l2I7y3Z3.1G0#0%0)3g0D280z4g0_3p0~1l130L7|0o0-0o5%0m2D7_058C100wav3+2;aN1v8a2Z448d1,1U2c9s8j2j2l8n8p8r8t8v6%8x3Y7S2=aw8+5#406;5_48ai4x4d049N9Ibb6Iaca0am4z9X6~bk8U8$a38+8-4Q4S8;4X4Z3*4#1#8_5x8~1b907_6}01bsblaf6/bo3da4ak9%9{5~aq9yal8U9kaa5v9p5A9r8Ua66#a bT9s4sbjbQbU996:bh71046@b.8U0m9Gbgad4qb:8M9Ga#9Qb;2Ha45vbf939Qb|5lcb9|9hb_7c9#7e3N7ia(axaA0C337naD0(0Qcv0!0$cy04.
# Tests(insensible à la casse)(Ctrl+I)
(Alt+: ; Ctrl pour inverser les colonnes)
(Esc)