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

.128013buS3_4l(wn/8p)aPk0:hors1*v7c256m!gyd%i9eft =+050K0O0Q0p0M0h0x0R0C0h0p0x0x0S010Q0M0n010406050x0c0G0G0p0w0J040d0v0h0c0.0v0k050l0^0`0|0~0?0n04171e051h0l1h1j1e0?0K0M0A0$0(0*0,0u0M0I0u0h1x0u0Q0;050X0b0h0O1s0)0+011w1y1A1y0Q1G1I1E0Q0b0v0K0~1F0w1f0Q0u0$110x0n0p0k0,0D011K1u010P0Z0O0k0p0G0O1E1,1.1?1M1_1I1|1~0;0a0R0q0w0v0n0v0x0M140k0R0V1*0w0w0O0C2j17210k1f0l1(2w0Q1$1#1%0K230,1A0k1{2g1E1p1r0%1L2G0M2I0k1Y1q1E0n2p1f2u2w2!0@1-2k2O1@2T0w0{0h0;0y2t2(0=2%222*1M2,2.0;0D2=1.2@2u2F012|0p2/040e302v0?332`0,36380g3b322(343h0;0E3k3d3m3f350v2-370;0F3r2^2)1t2{3w2}040B3B3e3E3g3G3y040m3K3t3M3v3x380N3k1g2Y172M2z0K2D340C1Y1 1f3%1i3#2$182?053,0V2Z3T2P010r0;0V0P3Z3L3~0j0;0R443}2+0P0;0h150I0c0O0c0w0f0A114a2_3U0:040i4p3D3~0k0;163@313C344s0o0t3r0R4J49452+0;4n0h3k4L4b1M0v0;0S4R4D3u0G0M0;0s4I4K4Z3U40040j1w1I4Y4M2{4z4=4T0,4V040H4X4B2v4S4q3~4#2:4v4E0;4H500=4K5d524w1@4-0M435b5f3n4^5l4+3~4|0L4_531@55042 5p4?4{4W4 2!5m4!4$044(5b5q1@4s5a2!065e5S5G3U4y044A5F5M4U4W5u5g4@5X5%344|0l0l5+5H2~4)5S5!0,4-0O0!0O573u5O5?5T4J5^355o5Z5B014|5E2?5U545I3a5A4`690;0z5:5V666c644|0T6m6e565b5R5T645W4P6t1@6a6C5)6B6h5v5#046s6I5(0,5x2;6w5d644-2p0Q4k5Y6p686A4o6w173`0O2w2X6+3$1q3(2z2B2x1X1Z2z0p1H6.0l3%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

.128013buS3_4l(wn/8p)aPk0:hors1*v7c256m!gyd%i9eft =+050K0O0Q0p0M0h0x0R0C0h0p0x0x0S010Q0M0n010406050x0c0G0G0p0w0J040d0v0h0c0.0v0k050l0^0`0|0~0?0n04171e051h0l1h1j1e0?0K0M0A0$0(0*0,0u0M0I0u0h1x0u0Q0;050X0b0h0O1s0)0+011w1y1A1y0Q1G1I1E0Q0b0v0K0~1F0w1f0Q0u0$110x0n0p0k0,0D011K1u010P0Z0O0k0p0G0O1E1,1.1?1M1_1I1|1~0;0a0R0q0w0v0n0v0x0M140k0R0V1*0w0w0O0C2j17210k1f0l1(2w0Q1$1#1%0K230,1A0k1{2g1E1p1r0%1L2G0M2I0k1Y1q1E0n2p1f2u2w2!0@1-2k2O1@2T0w0{0h0;0y2t2(0=2%222*1M2,2.0;0D2=1.2@2u2F012|0p2/040e302v0?332`0,36380g3b322(343h0;0E3k3d3m3f350v2-370;0F3r2^2)1t2{3w2}040B3B3e3E3g3G3y040m3K3t3M3v3x380N3k1g2Y172M2z0K2D340C1Y1 1f3%1i3#2$182?053,0V2Z3T2P010r0;0V0P3Z3L3~0j0;0R443}2+0P0;0h150I0c0O0c0w0f0A114a2_3U0:040i4p3D3~0k0;163@313C344s0o0t3r0R4J49452+0;4n0h3k4L4b1M0v0;0S4R4D3u0G0M0;0s4I4K4Z3U40040j1w1I4Y4M2{4z4=4T0,4V040H4X4B2v4S4q3~4#2:4v4E0;4H500=4K5d524w1@4-0M435b5f3n4^5l4+3~4|0L4_531@55042 5p4?4{4W4 2!5m4!4$044(5b5q1@4s5a2!065e5S5G3U4y044A5F5M4U4W5u5g4@5X5%344|0l0l5+5H2~4)5S5!0,4-0O0!0O573u5O5?5T4J5^355o5Z5B014|5E2?5U545I3a5A4`690;0z5:5V666c644|0T6m6e565b5R5T645W4P6t1@6a6C5)6B6h5v5#046s6I5(0,5x2;6w5d644-2p0Q4k5Y6p686A4o6w173`0O2w2X6+3$1q3(2z2B2x1X1Z2z0p1H6.0l3%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

.128013buS[34l.(wn/8p)aPk0:hors1*v7c256m!gyd]%i9eft =+050L0Q0S0q0O0h0y0T0D0h0q0y0y0U010S0O0o010406050y0c0H0H0q0x0K040d0w0h0c0:0w0l050m0`0|0~100^0o04191g051j0m1j1l1g0^0L0O0B0(0*0,0.0v0O0J0v0h1z0v0S0?050Z0b0h0Q1u0+0-011y1A1C1A0S1I1K1G0S0b0w0L101H0x1h0S0v0(130y0o0q0l0.0E011M1w010R0#0Q0l0q0H0Q1G1.1:1^1O1{1K1~200?0a0T0r0x0w0o0w0y0O160l0T0X1,0x0x0Q0D2l19230l1h0m1*2y0S1(1%1)0L250.1C0l1}2i1G1r1t0)1N2I0O2K0l1!1s1G0o2r1h2w2y2$0_1/2m2Q1_2V0x0}0h0?0z2v2*0@2)242,1O2.2:0?0E2@1:2_2w2H012~0q2;040f322x0^352|0.383a0g3d342*363j0?0F3m3f3o3h370w2/390?0G3t2`2+1v2}3y2 040C3D3g3G3i3I3A040n3M3v3O3x3z3a0P3m1i2!192O2B0L2F360D1!211h3)1k3%2(1a2^053.0X2#3V2R010s0?0X0R3#3N400k0?0T463 2-0R0?0y0K0x0q0D0c0y0Q4c2{3W0=040j4p3F400l0?183_333E364s0p0u3t0T4J4b472-4g0c2k4o4B2x4L4d1O0w0?0U3m4U4q404s0e4v3p4z4*3w4s0M4I4K4D3w42040k1y1K4!4?3W4y044A2$4#4w1_4X040I4Z4S0454360H0O2=4-4r0?4H5b064K5o5d4@0?0O455b5q4 4,5v4~40570N4}4M1O5f305E4V0.570U5a535A1_5H040t5i4%5k4;5p5p5Q2}5y5P5F5L4Y5J4$4N515,554W0?0m0m5:5e5g04315m5Z4J5#0.4^0Q0$4R2(5)014s5l2$5n5 5o61375%2^5w5B5+5z685S3c6n5K01570A5_3w50526j6g570V6w3W5S2?5~5 6g500`4Q5V560?0i6O5$040q0o0o1}0L6S0.4s4u5b6K6i4C684F5Y6k1_4^2r0S0c0x6z336/6T6M0S662^0^0m3|0Q2y2Z743(1s3*2B2D2z1Z1#2B0q1J770m3)710X0Z0#0y04.

###(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

.128013buS[34l.(wn/8p)aPk0:hors1*v7c256m!gyd]%i9eft =+050L0Q0S0q0O0h0y0T0D0h0q0y0y0U010S0O0o010406050y0c0H0H0q0x0K040d0w0h0c0:0w0l050m0`0|0~100^0o04191g051j0m1j1l1g0^0L0O0B0(0*0,0.0v0O0J0v0h1z0v0S0?050Z0b0h0Q1u0+0-011y1A1C1A0S1I1K1G0S0b0w0L101H0x1h0S0v0(130y0o0q0l0.0E011M1w010R0#0Q0l0q0H0Q1G1.1:1^1O1{1K1~200?0a0T0r0x0w0o0w0y0O160l0T0X1,0x0x0Q0D2l19230l1h0m1*2y0S1(1%1)0L250.1C0l1}2i1G1r1t0)1N2I0O2K0l1!1s1G0o2r1h2w2y2$0_1/2m2Q1_2V0x0}0h0?0z2v2*0@2)242,1O2.2:0?0E2@1:2_2w2H012~0q2;040f322x0^352|0.383a0g3d342*363j0?0F3m3f3o3h370w2/390?0G3t2`2+1v2}3y2 040C3D3g3G3i3I3A040n3M3v3O3x3z3a0P3m1i2!192O2B0L2F360D1!211h3)1k3%2(1a2^053.0X2#3V2R010s0?0X0R3#3N400k0?0T463 2-0R0?0y0K0x0q0D0c0y0Q4c2{3W0=040j4p3F400l0?183_333E364s0p0u3t0T4J4b472-4g0c2k4o4B2x4L4d1O0w0?0U3m4U4q404s0e4v3p4z4*3w4s0M4I4K4D3w42040k1y1K4!4?3W4y044A2$4#4w1_4X040I4Z4S0454360H0O2=4-4r0?4H5b064K5o5d4@0?0O455b5q4 4,5v4~40570N4}4M1O5f305E4V0.570U5a535A1_5H040t5i4%5k4;5p5p5Q2}5y5P5F5L4Y5J4$4N515,554W0?0m0m5:5e5g04315m5Z4J5#0.4^0Q0$4R2(5)014s5l2$5n5 5o61375%2^5w5B5+5z685S3c6n5K01570A5_3w50526j6g570V6w3W5S2?5~5 6g500`4Q5V560?0i6O5$040q0o0o1}0L6S0.4s4u5b6K6i4C684F5Y6k1_4^2r0S0c0x6z336/6T6M0S662^0^0m3|0Q2y2Z743(1s3*2B2D2z1Z1#2B0q1J770m3)710X0Z0#0y04.