Suite de Syracuse

Pour construire la suite de Syracuse d'un entier \(n\) strictement positif, on répète la transformation suivante :

  • Si \(n\) est pair, on le divise par \(2\) ;
  • Sinon \(n\) devient \(3n+1\).

On admet que, quel que soit l'entier \(n\) choisi au départ, la suite finit toujours par atteindre la valeur \(1\). On convient donc d'interrompre les transformations lorsque l'on a atteint la valeur \(1\).

Ainsi, en prenant de \(n=3\), on obtient :

\[3 \longrightarrow 10 \longrightarrow 5 \longrightarrow 16 \longrightarrow 8 \longrightarrow 4 \longrightarrow 2 \longrightarrow 1\]

On rappelle que n % 2 renvoie le reste dans la division de n par 2. Si ce reste est nul, c'est que n est un nombre pair.

assert ?

Le mot clé assert est utilisé en Python afin de vérifier que des propositions sont vraies.

Ainsi, l'instruction assert 3 + 5*7 == 38 permet de vérifier que l'expression 3 + 5*7 est bien évaluée à 38.

Si c'est le cas, le programme continue de se dérouler normalement. Dans le cas contraire, le programme est interrompu et une erreur est signalée.

La vidéo ne s'affiche pas... ?

Il peut arriver que les vidéos ne s'affichent pas sur des navigateurs basés sur Chrome, ou si un ad-blocker est activé sur le navaigateur. Essayer avec un autre navigateur si vous êtes dans ce cas (FireFox, typiquement), ou désactivez l'ad-blocker.

Longueur du vol

On a admis que, quel que soit l'entier \(n\) choisi, ce processus de calcul finissait toujours par atteindre \(1\). Par exemple en partant de la valeur \(3\), il y a \(7\) transformations avant d'atteindre \(1\).

Ce nombre de transformations nécessaires est appelé « longueur du vol » de l'entier \(n\).

Écrire une fonction longueur_vol qui prend en paramètre un entier n strictement positif et renvoie la longueur du vol de cet entier.

Exemple
>>> longueur_vol(3)
7
>>> longueur_vol(7)
16
>>> longueur_vol(1)
0

###(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 : 10/10

.128013!%n w*5e9(38m=0p)rhkuoiscb/6S1vt_dg:ay24P+fl7050I0i0G0L0x0S0y0e0z0S0L0y0y0o010G0x0q010406050y0v0n0n0L0s0M040D0w0S0v0.0w0d050B0^0`0|0~0?0q04171e051h0B1h1j1e0?0I0x0F0$0(0*0,0t0x0J0t0S1x0t0G0;050X0A0S0i1s0)0+011w1y1A1y0G1G1I1E0G0A0w0I0~1F0s1f0G0t0$110y0q0L0d0,0N011K1u010R0Z0i0d0L0n0i1E1,1.1?1M1_1I1|1~0;0a0e0P0s0w0q0w0y0x140d0e0V1*0s0s0i0z2j17210d1f0B1(2w0G1$1#1%0I230,1A0d1{2g1E1p1r0%1L2G0x2I0d1Y1q1E0q2p1f2u2w2!0@1-2k2O1@2T0s0{0S0;0E2t2(0=2%222*1M2,2.0;0N2=1.2@2u2F012|0L2/040l302v0?332`0,36380O3b322(343h0;0h3k3d3m3f350w2-370;0C3r2^2)1t2{3w2}040T3B3e3E3g3G3y040m3K3t3M3v3x380j3k1g2Y172M2z0I2D340z1Y1 1f3%1i3#2$182?053,0V2Z3T2P010u0;0V0R3Z3L3~0f0;0e443}2+0R0;0S150J0v0i0v0s0H0F114a2_3U0:040k4p3D3~0d0;163@313C344s0r0K3r0e4J49452+0;4n0S3k4L4b1M0w0;0o4R4D3u0n0x0;0p4I4K4Z3U40040f1w1I4Y4M2{4z4=4T0,4V040b4X4B2v4S4q3~4#2:4v4E0;4H500=4K5d524w1@4-0x435b5f3n4^5l4+3~4|0c4_531@55042 5p4?4{4W4 2!5m4!4$044(5b5q1@4s5a2!065e5S5G3U4y044A5F5M4U4W5u5g4@5X5%344|0B0B5+5H2~4)5S5!0,4-0i0!0i573u5O5?5T4J5^355o5Z5B014|5E2?5U545I3a5A4`690;0g5:5V666c644|0Q6m6e565b5R5T645W4P6t1@6a6C5)6B6h5v5#046s6I5(0,5x2;6w5d644-2p0G4k5Y6p686A4o6w173`0i2w2X6+3$1q3(2z2B2x1X1Z2z0L1H6.0B3%0?6~0W0Y0!04.

###(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 : 10/10

.128013!%n w*5e9(38m=0p)rhkuoiscb/6S1vt_dg:ay24P+fl7050I0i0G0L0x0S0y0e0z0S0L0y0y0o010G0x0q010406050y0v0n0n0L0s0M040D0w0S0v0.0w0d050B0^0`0|0~0?0q04171e051h0B1h1j1e0?0I0x0F0$0(0*0,0t0x0J0t0S1x0t0G0;050X0A0S0i1s0)0+011w1y1A1y0G1G1I1E0G0A0w0I0~1F0s1f0G0t0$110y0q0L0d0,0N011K1u010R0Z0i0d0L0n0i1E1,1.1?1M1_1I1|1~0;0a0e0P0s0w0q0w0y0x140d0e0V1*0s0s0i0z2j17210d1f0B1(2w0G1$1#1%0I230,1A0d1{2g1E1p1r0%1L2G0x2I0d1Y1q1E0q2p1f2u2w2!0@1-2k2O1@2T0s0{0S0;0E2t2(0=2%222*1M2,2.0;0N2=1.2@2u2F012|0L2/040l302v0?332`0,36380O3b322(343h0;0h3k3d3m3f350w2-370;0C3r2^2)1t2{3w2}040T3B3e3E3g3G3y040m3K3t3M3v3x380j3k1g2Y172M2z0I2D340z1Y1 1f3%1i3#2$182?053,0V2Z3T2P010u0;0V0R3Z3L3~0f0;0e443}2+0R0;0S150J0v0i0v0s0H0F114a2_3U0:040k4p3D3~0d0;163@313C344s0r0K3r0e4J49452+0;4n0S3k4L4b1M0w0;0o4R4D3u0n0x0;0p4I4K4Z3U40040f1w1I4Y4M2{4z4=4T0,4V040b4X4B2v4S4q3~4#2:4v4E0;4H500=4K5d524w1@4-0x435b5f3n4^5l4+3~4|0c4_531@55042 5p4?4{4W4 2!5m4!4$044(5b5q1@4s5a2!065e5S5G3U4y044A5F5M4U4W5u5g4@5X5%344|0B0B5+5H2~4)5S5!0,4-0i0!0i573u5O5?5T4J5^355o5Z5B014|5E2?5U545I3a5A4`690;0g5:5V666c644|0Q6m6e565b5R5T645W4P6t1@6a6C5)6B6h5v5#046s6I5(0,5x2;6w5d644-2p0G4k5Y6p686A4o6w173`0i2w2X6+3$1q3(2z2B2x1X1Z2z0L1H6.0B3%0?6~0W0Y0!04.
Suite des termes

Écrire une fonction syracuse prenant en paramètres un entier n strictement positif et qui renvoie la liste des termes de la suite de Syracuse de l'entier n.

On rappelle les instructions suivantes :

🐍 Console Python
>>> nombres = [3]       # création d'une liste contenant la valeur 3
>>> nombres.append(10)  # ajout de la valeur 10 (à la fin)
>>> nombres
[3, 10]
Exemple
>>> syracuse(3)
[3, 10, 5, 16, 8, 4, 2, 1]
>>> syracuse(7)
[7, 22, 11, 34, 17, 52, 26, 13, 40, 20, 10, 5, 16, 8, 4, 2, 1]
>>> syracuse(1)
[1]

###(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 : 10/10

.128013!%n w*5e9(]38m=0p)rhk[uoiscb/6.S1vtdg:ay24P+fl7050K0i0J0N0z0U0A0e0B0U0N0A0A0p010J0z0r010406050A0x0o0o0N0t0O040G0y0U0x0:0y0d050D0`0|0~100^0r04191g051j0D1j1l1g0^0K0z0I0(0*0,0.0u0z0L0u0U1z0u0J0?050Z0C0U0i1u0+0-011y1A1C1A0J1I1K1G0J0C0y0K101H0t1h0J0u0(130A0r0N0d0.0P011M1w010T0#0i0d0N0o0i1G1.1:1^1O1{1K1~200?0a0e0R0t0y0r0y0A0z160d0e0X1,0t0t0i0B2l19230d1h0D1*2y0J1(1%1)0K250.1C0d1}2i1G1r1t0)1N2I0z2K0d1!1s1G0r2r1h2w2y2$0_1/2m2Q1_2V0t0}0U0?0H2v2*0@2)242,1O2.2:0?0P2@1:2_2w2H012~0N2;040m322x0^352|0.383a0Q3d342*363j0?0h3m3f3o3h370y2/390?0E3t2`2+1v2}3y2 040V3D3g3G3i3I3A040n3M3v3O3x3z3a0j3m1i2!192O2B0K2F360B1!211h3)1k3%2(1a2^053.0X2#3V2R010v0?0X0T3#3N400f0?0e463 2-0T0?0A0O0t0N0B0x0A0i4c2{3W0=040k4p3F400d0?183_333E364s0s0M3t0e4J4b472-4g0x2k4o4B2x4L4d1O0y0?0p3m4U4q404s0w4v3p4z4*3w4s0l4I4K4D3w42040f1y1K4!4?3W4y044A2$4#4w1_4X040b4Z4S0454360o0z2=4-4r0?4H5b064K5o5d4@0?0z455b5q4 4,5v4~40570c4}4M1O5f305E4V0.570p5a535A1_5H040q5i4%5k4;5p5p5Q2}5y5P5F5L4Y5J4$4N515,554W0?0D0D5:5e5g04315m5Z4J5#0.4^0i0$4R2(5)014s5l2$5n5 5o61375%2^5w5B5+5z685S3c6n5K01570g5_3w50526j6g570S6w3W5S2?5~5 6g500`4Q5V560?0F6O5$040N0r0r1}0K6S0.4s4u5b6K6i4C684F5Y6k1_4^2r0J0x0t6z336/6T6M0J662^0^0D3|0i2y2Z743(1s3*2B2D2z1Z1#2B0N1J770D3)710X0Z0#0A04.

###(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 : 10/10

.128013!%n w*5e9(]38m=0p)rhk[uoiscb/6.S1vtdg:ay24P+fl7050K0i0J0N0z0U0A0e0B0U0N0A0A0p010J0z0r010406050A0x0o0o0N0t0O040G0y0U0x0:0y0d050D0`0|0~100^0r04191g051j0D1j1l1g0^0K0z0I0(0*0,0.0u0z0L0u0U1z0u0J0?050Z0C0U0i1u0+0-011y1A1C1A0J1I1K1G0J0C0y0K101H0t1h0J0u0(130A0r0N0d0.0P011M1w010T0#0i0d0N0o0i1G1.1:1^1O1{1K1~200?0a0e0R0t0y0r0y0A0z160d0e0X1,0t0t0i0B2l19230d1h0D1*2y0J1(1%1)0K250.1C0d1}2i1G1r1t0)1N2I0z2K0d1!1s1G0r2r1h2w2y2$0_1/2m2Q1_2V0t0}0U0?0H2v2*0@2)242,1O2.2:0?0P2@1:2_2w2H012~0N2;040m322x0^352|0.383a0Q3d342*363j0?0h3m3f3o3h370y2/390?0E3t2`2+1v2}3y2 040V3D3g3G3i3I3A040n3M3v3O3x3z3a0j3m1i2!192O2B0K2F360B1!211h3)1k3%2(1a2^053.0X2#3V2R010v0?0X0T3#3N400f0?0e463 2-0T0?0A0O0t0N0B0x0A0i4c2{3W0=040k4p3F400d0?183_333E364s0s0M3t0e4J4b472-4g0x2k4o4B2x4L4d1O0y0?0p3m4U4q404s0w4v3p4z4*3w4s0l4I4K4D3w42040f1y1K4!4?3W4y044A2$4#4w1_4X040b4Z4S0454360o0z2=4-4r0?4H5b064K5o5d4@0?0z455b5q4 4,5v4~40570c4}4M1O5f305E4V0.570p5a535A1_5H040q5i4%5k4;5p5p5Q2}5y5P5F5L4Y5J4$4N515,554W0?0D0D5:5e5g04315m5Z4J5#0.4^0i0$4R2(5)014s5l2$5n5 5o61375%2^5w5B5+5z685S3c6n5K01570g5_3w50526j6g570S6w3W5S2?5~5 6g500`4Q5V560?0F6O5$040N0r0r1}0K6S0.4s4u5b6K6i4C684F5Y6k1_4^2r0J0x0t6z336/6T6M0J662^0^0D3|0i2y2Z743(1s3*2B2D2z1Z1#2B0N1J770D3)710X0Z0#0A04.