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

.12801342ny6g3p )rPv1=oa_%ckmi*u5(e:ts!Shl970w+bf8/d050T0C0E0r0x0J0F0j0u0J0r0F0F0p010E0x0i010406050F0z0w0w0r0l0e040H0q0J0z0.0q0d050S0^0`0|0~0?0i04171e051h0S1h1j1e0?0T0x0n0$0(0*0,0I0x0g0I0J1x0I0E0;050X0P0J0C1s0)0+011w1y1A1y0E1G1I1E0E0P0q0T0~1F0l1f0E0I0$110F0i0r0d0,0c011K1u010Q0Z0C0d0r0w0C1E1,1.1?1M1_1I1|1~0;0a0j0m0l0q0i0q0F0x140d0j0V1*0l0l0C0u2j17210d1f0S1(2w0E1$1#1%0T230,1A0d1{2g1E1p1r0%1L2G0x2I0d1Y1q1E0i2p1f2u2w2!0@1-2k2O1@2T0l0{0J0;0o2t2(0=2%222*1M2,2.0;0c2=1.2@2u2F012|0r2/040h302v0?332`0,36380b3b322(343h0;0A3k3d3m3f350q2-370;0f3r2^2)1t2{3w2}040L3B3e3E3g3G3y040R3K3t3M3v3x380K3k1g2Y172M2z0T2D340u1Y1 1f3%1i3#2$182?053,0V2Z3T2P010v0;0V0Q3Z3L3~0N0;0j443}2+0Q0;0J150g0z0C0z0l0s0n114a2_3U0:040B4p3D3~0d0;163@313C344s0k0D3r0j4J49452+0;4n0J3k4L4b1M0q0;0p4R4D3u0w0x0;0M4I4K4Z3U40040N1w1I4Y4M2{4z4=4T0,4V040G4X4B2v4S4q3~4#2:4v4E0;4H500=4K5d524w1@4-0x435b5f3n4^5l4+3~4|0t4_531@55042 5p4?4{4W4 2!5m4!4$044(5b5q1@4s5a2!065e5S5G3U4y044A5F5M4U4W5u5g4@5X5%344|0S0S5+5H2~4)5S5!0,4-0C0!0C573u5O5?5T4J5^355o5Z5B014|5E2?5U545I3a5A4`690;0y5:5V666c644|0O6m6e565b5R5T645W4P6t1@6a6C5)6B6h5v5#046s6I5(0,5x2;6w5d644-2p0E4k5Y6p686A4o6w173`0C2w2X6+3$1q3(2z2B2x1X1Z2z0r1H6.0S3%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

.12801342ny6g3p )rPv1=oa_%ckmi*u5(e:ts!Shl970w+bf8/d050T0C0E0r0x0J0F0j0u0J0r0F0F0p010E0x0i010406050F0z0w0w0r0l0e040H0q0J0z0.0q0d050S0^0`0|0~0?0i04171e051h0S1h1j1e0?0T0x0n0$0(0*0,0I0x0g0I0J1x0I0E0;050X0P0J0C1s0)0+011w1y1A1y0E1G1I1E0E0P0q0T0~1F0l1f0E0I0$110F0i0r0d0,0c011K1u010Q0Z0C0d0r0w0C1E1,1.1?1M1_1I1|1~0;0a0j0m0l0q0i0q0F0x140d0j0V1*0l0l0C0u2j17210d1f0S1(2w0E1$1#1%0T230,1A0d1{2g1E1p1r0%1L2G0x2I0d1Y1q1E0i2p1f2u2w2!0@1-2k2O1@2T0l0{0J0;0o2t2(0=2%222*1M2,2.0;0c2=1.2@2u2F012|0r2/040h302v0?332`0,36380b3b322(343h0;0A3k3d3m3f350q2-370;0f3r2^2)1t2{3w2}040L3B3e3E3g3G3y040R3K3t3M3v3x380K3k1g2Y172M2z0T2D340u1Y1 1f3%1i3#2$182?053,0V2Z3T2P010v0;0V0Q3Z3L3~0N0;0j443}2+0Q0;0J150g0z0C0z0l0s0n114a2_3U0:040B4p3D3~0d0;163@313C344s0k0D3r0j4J49452+0;4n0J3k4L4b1M0q0;0p4R4D3u0w0x0;0M4I4K4Z3U40040N1w1I4Y4M2{4z4=4T0,4V040G4X4B2v4S4q3~4#2:4v4E0;4H500=4K5d524w1@4-0x435b5f3n4^5l4+3~4|0t4_531@55042 5p4?4{4W4 2!5m4!4$044(5b5q1@4s5a2!065e5S5G3U4y044A5F5M4U4W5u5g4@5X5%344|0S0S5+5H2~4)5S5!0,4-0C0!0C573u5O5?5T4J5^355o5Z5B014|5E2?5U545I3a5A4`690;0y5:5V666c644|0O6m6e565b5R5T645W4P6t1@6a6C5)6B6h5v5#046s6I5(0,5x2;6w5d644-2p0E4k5Y6p686A4o6w173`0C2w2X6+3$1q3(2z2B2x1X1Z2z0r1H6.0S3%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

.12801342ny6g3p )rPv1=oa%ckmi*u5(e:ts]!Shl970w[bf8+./d050V0B0D0r0w0J0E0j0t0J0r0E0E0p010D0w0i010406050E0y0v0v0r0l0e040H0q0J0y0:0q0d050U0`0|0~100^0i04191g051j0U1j1l1g0^0V0w0n0(0*0,0.0I0w0g0I0J1z0I0D0?050Z0P0J0B1u0+0-011y1A1C1A0D1I1K1G0D0P0q0V101H0l1h0D0I0(130E0i0r0d0.0c011M1w010Q0#0B0d0r0v0B1G1.1:1^1O1{1K1~200?0a0j0m0l0q0i0q0E0w160d0j0X1,0l0l0B0t2l19230d1h0U1*2y0D1(1%1)0V250.1C0d1}2i1G1r1t0)1N2I0w2K0d1!1s1G0i2r1h2w2y2$0_1/2m2Q1_2V0l0}0J0?0o2v2*0@2)242,1O2.2:0?0c2@1:2_2w2H012~0r2;040h322x0^352|0.383a0b3d342*363j0?0z3m3f3o3h370q2/390?0f3t2`2+1v2}3y2 040L3D3g3G3i3I3A040R3M3v3O3x3z3a0K3m1i2!192O2B0V2F360t1!211h3)1k3%2(1a2^053.0X2#3V2R010u0?0X0Q3#3N400N0?0j463 2-0Q0?0E0e0l0r0t0y0E0B4c2{3W0=040A4p3F400d0?183_333E364s0k0C3t0j4J4b472-4g0y2k4o4B2x4L4d1O0q0?0p3m4U4q404s0O4v3p4z4*3w4s0F4I4K4D3w42040N1y1K4!4?3W4y044A2$4#4w1_4X040G4Z4S0454360v0w2=4-4r0?4H5b064K5o5d4@0?0w455b5q4 4,5v4~40570s4}4M1O5f305E4V0.570p5a535A1_5H040M5i4%5k4;5p5p5Q2}5y5P5F5L4Y5J4$4N515,554W0?0U0U5:5e5g04315m5Z4J5#0.4^0B0$4R2(5)014s5l2$5n5 5o61375%2^5w5B5+5z685S3c6n5K01570x5_3w50526j6g570S6w3W5S2?5~5 6g500`4Q5V560?0T6O5$040r0i0i1}0V6S0.4s4u5b6K6i4C684F5Y6k1_4^2r0D0y0l6z336/6T6M0D662^0^0U3|0B2y2Z743(1s3*2B2D2z1Z1#2B0r1J770U3)710X0Z0#0E04.

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

.12801342ny6g3p )rPv1=oa%ckmi*u5(e:ts]!Shl970w[bf8+./d050V0B0D0r0w0J0E0j0t0J0r0E0E0p010D0w0i010406050E0y0v0v0r0l0e040H0q0J0y0:0q0d050U0`0|0~100^0i04191g051j0U1j1l1g0^0V0w0n0(0*0,0.0I0w0g0I0J1z0I0D0?050Z0P0J0B1u0+0-011y1A1C1A0D1I1K1G0D0P0q0V101H0l1h0D0I0(130E0i0r0d0.0c011M1w010Q0#0B0d0r0v0B1G1.1:1^1O1{1K1~200?0a0j0m0l0q0i0q0E0w160d0j0X1,0l0l0B0t2l19230d1h0U1*2y0D1(1%1)0V250.1C0d1}2i1G1r1t0)1N2I0w2K0d1!1s1G0i2r1h2w2y2$0_1/2m2Q1_2V0l0}0J0?0o2v2*0@2)242,1O2.2:0?0c2@1:2_2w2H012~0r2;040h322x0^352|0.383a0b3d342*363j0?0z3m3f3o3h370q2/390?0f3t2`2+1v2}3y2 040L3D3g3G3i3I3A040R3M3v3O3x3z3a0K3m1i2!192O2B0V2F360t1!211h3)1k3%2(1a2^053.0X2#3V2R010u0?0X0Q3#3N400N0?0j463 2-0Q0?0E0e0l0r0t0y0E0B4c2{3W0=040A4p3F400d0?183_333E364s0k0C3t0j4J4b472-4g0y2k4o4B2x4L4d1O0q0?0p3m4U4q404s0O4v3p4z4*3w4s0F4I4K4D3w42040N1y1K4!4?3W4y044A2$4#4w1_4X040G4Z4S0454360v0w2=4-4r0?4H5b064K5o5d4@0?0w455b5q4 4,5v4~40570s4}4M1O5f305E4V0.570p5a535A1_5H040M5i4%5k4;5p5p5Q2}5y5P5F5L4Y5J4$4N515,554W0?0U0U5:5e5g04315m5Z4J5#0.4^0B0$4R2(5)014s5l2$5n5 5o61375%2^5w5B5+5z685S3c6n5K01570x5_3w50526j6g570S6w3W5S2?5~5 6g500`4Q5V560?0T6O5$040r0i0i1}0V6S0.4s4u5b6K6i4C684F5Y6k1_4^2r0D0y0l6z336/6T6M0D662^0^0U3|0B2y2Z743(1s3*2B2D2z1Z1#2B0r1J770U3)710X0Z0#0E04.