Aller au contenu

Section des rosiers

🏷️ On considère ici des arbres étiquetés et ordonnés. (Ce qui était toujours le cas jusqu'à présent.)

Rappel : Arbres ordonnés

On dit qu'un arbre est ordonné lorsque l'ordre de ses sous-arbres compte.

Par exemple, les deux arbres ordonnés suivants sont distincts. (Si on avait considérés ces arbres comme non ordonnés, ils auraient été identiques.)

flowchart TB
subgraph "A_droite"
    direction TB
    N0(5) --> N1(7)
    N0    --> N2(9)
    N0    --> N3(1)
    N3  --> N4(4)
    N3  --> N5(2)
end

subgraph "A_gauche"
    direction TB
    M0(5) --> M1(1)
    M0    --> M2(9)
    M0    --> M3(7)
    M1  --> M4(2)
    M1  --> M5(4)
end

Sécateur sur rosier

Un jardinier décide de couper des branches de son rosier assimilé à un arbre. Il décide de garder au maximum les q premières branches de chaque nœud et de couper les autres. Par exemple, avec q = 2

flowchart TB
subgraph "Après"
    direction TB
    N0(5) --> N1(1)
    N0    --> N2(9)
    N1  --> N4(2)
    N1  --> N5(4)
    N5 --> N6(5)
    N5 --> N7(6)
end

subgraph "Avant"
    direction TB
    M0(5) --> M1(1)
    M0    --> M2(9)
    M0    --> M3(7)
    M1  --> M4(2)
    M1  --> M5(4)
    M5 --> M6(5)
    M5 --> M7(6)
    M5 --> M8(3)
end

Exercice

Coder une fonction section qui prend un arbre ordonné et étiqueté et un entier q en paramètres et qui renvoie une copie de l'arbre, mais qui aura au maximum q sous-arbres par nœud, les derniers étant éventuellement sectionnés.

###(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.128013]x,59/fù.q!78rnb _o=ylaepcwgu)vd4613kRméhtsP(S0L2[-i:050H0z0R0y0#0x0S0s0B0x0y0S0S0v010R0#0A010406050S0E0O0O0y0p0w040V0u0x0E0`0u0q050h111315170 0A04051n1g1q0h1n0 0H0#0G0/0;0?0^0Q0#0D0Q0x1E0Q0R0}050*0r0x0z1z0=0@011D1F1H1F0R1N1P1L0R0p1o0R0Q1R1B010i0,0z0q0y0O0z010/1a0S0A0y0q0^0Y1L1|1~1,1T1/1P1=1@0}0b0s0T0p0u0A0u0S0#1d0q0s0(1`0p0p0z0B2l1g230q1o0h1*2y1%1)1(1M0H250^1H0q1;2i1L1w1y0:1S2I0#2K0q0u2O1L0A2r1o2w2y2$101}2m2Q1-2V0p140x0}0s0K2v2*0~2)242,1T2.2:2=0Y2^1~2`2w2H012 0y2;040s0L332x0 362}0^393b0s0I3f352*373l2=0f3p3h3r3j380u2/3a2=0J3w2{2+1A2~3B303c0n3G3i3J3k3L3D3c0o3P3y3R3A3C3m0g3X2|3Z3t040K0W3(3I2R3!3M0K2@1h2_3x3)3;3+0K323_343{3:2-3T3b0K3e412x1r2!1g2O2B0H1)2G3z0B2W1^1o4f1p4d2(4a1o4l0(2#3Y3;0M0}0(0i3p3H370C2=4E3Q3}0i0}0S2s2u4t4F3z0|040U4J4y2-0}150r2r4X3|1-4U0e3p0s4S3*0}0l4(441T4U0F0$3/4G2=0s4 4?370S0H0}01560s0N1;0G0u0#1Q0E2K1`0A5d0s2Z0u0i1e2o2o0x004#2r4,4t4352543c4 0s140#0.0u0j0/0Q0y0l0E1Q0q0a0E2G0q5s0E0p0y0s0y0E5C0y0d0#0O124|3z534~4 5L1Q0l0s0S0u0E0S0!5t0z0S0k5*3Z5,5A4 0X5|5X1c2r0.0P0*0q0R5=4P0#1e0q0P0.0m5 3;615B0s56013w6p4/3}0}5V0B2T0z514T0}5v2$4.4K4Z041;0i1~0R0S4-6v1-0u0}0v6Q6I2~4!0p4$6B5w6u6X3k6x5|0R6$6G6R1T6T046V4t6H4Y4^0}0Z0c6t5B6:6*041f6^71016=6@6/6)380r0}0O2T6C3Z4U4W4R7b0q4;7h3;4+6W6`3k7d04287p4*0}7k2(7m0}6L6N6P7l7t014_0F6 507b4A045n0p7s4)6Y040#7U4@0^0u4H7X747a7J0q7v5V0q0D6.2_767j7y7W7)7=7b4_4{6%6p707D045?5^0t5{7Z3778883z7n6K0q6M6c7H7C7J4U0Z7^727Y7I7V0^4U6~7 806_8r386+0S6-8n770}5~8q7!8z040y0A0A1;0H8D7@8H3s4N6f1e8Q7A8D8d840S866!4%8S6D046F2_8x8I8d4=8*7i0}0F7M8v8/377Q2r0R5U7`348|8+8m8?6w046y6A8X8,8b4:996,7;347?0}8u2$0 0h4v0z2y2Z9r4e1x4g2B2E2z0y1O9u0h4f9o0(0*0,0S04.