Aller au contenu

Transformer les racines d'un arbre

🏷️ On considère ici des arbres étiquetés.

Une fonction qui transforme les étiquettes d'un arbre

Si on considère la fonction \(f\), écrite en Python avec :

🐍 Script Python
def f(n):
    return 10*n + 3

L'image par \(f\) de \(5\) est \(10×5+3\) qui est égal à \(53\).

Si on applique la fonction \(f\) à chaque étiquette de l'arbre

graph TB
    N0(5) --> N1(7)
    N0    --> N2(9)
    N0    --> N3(1)

on obtient :

graph TB
    N0(53) --> N1(73)
    N0    --> N2(93)
    N0    --> N3(13)

Et si la fonction utilisée était la fonction g

🐍 Script Python
def g(n):
    return n // 2

on aurait obtenu :

graph TB
    N0(2) --> N1(3)
    N0    --> N2(4)
    N0    --> N3(0)

Exercice

Coder une fonction transforme qui prend un arbre étiqueté et une fonction f en paramètres et qui renvoie un arbre de même structure, mais avec les étiquettes transformées par la fonction f.

👍 Oui, il est légal de passer une fonction en paramètre !

###(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 : /
.128013]x,5/f.q!7r;nb _o=ylaepcwgu)vdV4613kRIAméhtsP(S2Cè[-i:050E0w0R0v0#0u0S0p0y0u0v0S0S0s010R0#0x010406050S0B0O0O0v0l0t040V0r0u0B0`0r0n0p020v0O0x0m0p0L0w140l0i0B0w0S050f111315170 0x04051C1v1F0f1C0 0E0#0D0/0;0?0^0Q0#0A0Q0u1T0Q0R0}050*0o0u0w1O0=0@011S1U1W1U0R1$1(1!0R0l1D0R0Q1*1Q010g0,0w0n1i0w010/1a0S0x0v0n0^0W1!2a2c1~1,211(240O26040a0p0T0l0r0x0r0S0#1d1f0(280l0l0w0y2A1v2h0n1D0f1|2M1_1{1`1#0E2j0^1W0n232x1!1L1N0:1+2W0#2Y0n0r2$1!0x2F1D2K2M2@102b1f2(1 2-0l140u0}0I2J2{0~2`2i2}1,2 310}0W352c372K2V013c0v32040J3g2L0 3j3a0^3m3o0G3r3i2{3k3x0}0e3A3t3C3v3l0r303n0}0H3H382|1P3b3M3d040k3A1G2=1v2$2P0E1{2U3K0y2.2p0%1M1D2;0w2?363!3.0(3_393U0^0K0}0(0g3!3u40010z0}0p463J480n0g0}1_2c0S0g3W0w4d3 2)010|040U4p3T4r0n0}150o2F4w3k4t0d3A4c474y0}451w3`4K1 4t0C0$3H0p4W4J4e4r0S2f04011n0n0D0r0#1)0B1f2-0B0D0w0u0p4B2F0d0p4j0n4l3W0P0p2b0l0p0;0p4m0n2H0#1e58014V4X3S3D0}0l0v0y2+4o4O3h5i3K4G4I5s4f0}230g2c0R1u5q2L4Y4q1 0r0}0s5v4Q3b4A0l4C5p2@064X5G4x2~0}4;4?0v0B0c5M4Z5I5K5)5H1,4t0Z0b5g4W5w4r42044m0l5-5X5O040S0r0B0S0q4`5S365W3k0r4a042+5~5j045z5B5D2_5N0^4t4U5E0~5V5V5^5Y045!0w5$5(6r6v1,5J040h4E3K4z040v0x0x230E6I484t4v6C6n3l4i5l4 5|2o6R4r6T6%6w6264665Q4D6V5*5/0}4H6r6a6J4M6*6?040C0C5?6`485`2F0R0B0l0n6g5t0}0Z6}3w6|6;5.6o0}6U6m6=7g045l5n2Y7f4s0}0C6^2@734L6x635#5%7u4t5=6r0 0f3|3^3#7N0f3(1v0R3*7S2S2N0v1%7P3(1B3~5 0^2F0O0q5A0K0w0q0Q0J0}1n1p1r1t0p6q2_1I372$3k0v0E0O1e2z5c1f0`4t1B8183852A0!0`0R1@040F0w0l2y5d0v4?0y0p4/1)3.1j0l0P0Q238o7a7~7$0X001t0R8t2Y0p4?8n870p2F8w140n0E0P1)0j1G7 1M3k1.1V1X1Z7%3k2l23250}2r0V0y0l0{8J0T0t1|1e3!3@7%2^3`7M8+3K5`447u6d4c7i7(3l4h044~5030685r6W6)9b6h677G6@7b5x5{9q6 7|365U5h6W4#0}4(234+4-8K0p6y4^674|9g6#5254560v581e5b5d4h726D7p7r5o9v7y699!6X6i4g6k9s4r6F5L6_9+6K9p7J6u6W750)788D7z9+5:7u6K4N7n7j7v4ua55k5m9%9n7c6 9)3h7A4R7d729|7o9,9O4n9v7m4Paq6K6,659`a89c5u9@6Wa69v71aFaq5`5|9:6+63aA6/9j5F9+6c0}6faKa96K6j0n5C9Z9l0}0b7I5T1v937O2M7#3%3=1K0)0+0-3k0E2c0A8m0}3t121p170N8r9S9U5a2A4c93140xa/3/2^b41z371C0M4^0n8H0S8J2b0.5l0#620n247Z0p0E000P8?0#2F8K1)8N8C4_b805be6Mbh3}4|230p0w0g0g0)b9599W1fbPbias9ibS3^532F8UbC0w5%53151i0Y1_7`b!4;0.4+0B0E8@1e0.5n7Z551(b/1o4-0l0hcf8Z7K0(0*0,0S377Qa`cl04.