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

.128013s3o_8bcdufvg/0ly n7apS!r1me(P2=4:+twk%i95h*)6050i0B0J0u0N0p0b0r0h0p0u0b0b0F010J0N0v010406050b0j0A0A0u0y0q040w0d0p0j0.0d0s050n0^0`0|0~0?0v04171e051h0n1h1j1e0?0i0N0l0$0(0*0,0Q0N0m0Q0p1x0Q0J0;050X0g0p0B1s0)0+011w1y1A1y0J1G1I1E0J0g0d0i0~1F0y1f0J0Q0$110b0v0u0s0,0E011K1u010k0Z0B0s0u0A0B1E1,1.1?1M1_1I1|1~0;0a0r0D0y0d0v0d0b0N140s0r0V1*0y0y0B0h2j17210s1f0n1(2w0J1$1#1%0i230,1A0s1{2g1E1p1r0%1L2G0N2I0s1Y1q1E0v2p1f2u2w2!0@1-2k2O1@2T0y0{0p0;0z2t2(0=2%222*1M2,2.0;0E2=1.2@2u2F012|0u2/040c302v0?332`0,36380G3b322(343h0;0P3k3d3m3f350d2-370;0T3r2^2)1t2{3w2}040t3B3e3E3g3G3y040f3K3t3M3v3x380O3k1g2Y172M2z0i2D340h1Y1 1f3%1i3#2$182?053,0V2Z3T2P010L0;0V0k3Z3L3~0K0;0r443}2+0k0;0p150m0j0B0j0y0e0l114a2_3U0:040C4p3D3~0s0;163@313C344s0S0H3r0r4J49452+0;4n0p3k4L4b1M0d0;0F4R4D3u0A0N0;0o4I4K4Z3U40040K1w1I4Y4M2{4z4=4T0,4V040x4X4B2v4S4q3~4#2:4v4E0;4H500=4K5d524w1@4-0N435b5f3n4^5l4+3~4|0M4_531@55042 5p4?4{4W4 2!5m4!4$044(5b5q1@4s5a2!065e5S5G3U4y044A5F5M4U4W5u5g4@5X5%344|0n0n5+5H2~4)5S5!0,4-0B0!0B573u5O5?5T4J5^355o5Z5B014|5E2?5U545I3a5A4`690;0R5:5V666c644|0I6m6e565b5R5T645W4P6t1@6a6C5)6B6h5v5#046s6I5(0,5x2;6w5d644-2p0J4k5Y6p686A4o6w173`0B2w2X6+3$1q3(2z2B2x1X1Z2z0u1H6.0n3%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

.128013s3o_8bcdufvg/0ly n7apS!r1me(P2=4:+twk%i95h*)6050i0B0J0u0N0p0b0r0h0p0u0b0b0F010J0N0v010406050b0j0A0A0u0y0q040w0d0p0j0.0d0s050n0^0`0|0~0?0v04171e051h0n1h1j1e0?0i0N0l0$0(0*0,0Q0N0m0Q0p1x0Q0J0;050X0g0p0B1s0)0+011w1y1A1y0J1G1I1E0J0g0d0i0~1F0y1f0J0Q0$110b0v0u0s0,0E011K1u010k0Z0B0s0u0A0B1E1,1.1?1M1_1I1|1~0;0a0r0D0y0d0v0d0b0N140s0r0V1*0y0y0B0h2j17210s1f0n1(2w0J1$1#1%0i230,1A0s1{2g1E1p1r0%1L2G0N2I0s1Y1q1E0v2p1f2u2w2!0@1-2k2O1@2T0y0{0p0;0z2t2(0=2%222*1M2,2.0;0E2=1.2@2u2F012|0u2/040c302v0?332`0,36380G3b322(343h0;0P3k3d3m3f350d2-370;0T3r2^2)1t2{3w2}040t3B3e3E3g3G3y040f3K3t3M3v3x380O3k1g2Y172M2z0i2D340h1Y1 1f3%1i3#2$182?053,0V2Z3T2P010L0;0V0k3Z3L3~0K0;0r443}2+0k0;0p150m0j0B0j0y0e0l114a2_3U0:040C4p3D3~0s0;163@313C344s0S0H3r0r4J49452+0;4n0p3k4L4b1M0d0;0F4R4D3u0A0N0;0o4I4K4Z3U40040K1w1I4Y4M2{4z4=4T0,4V040x4X4B2v4S4q3~4#2:4v4E0;4H500=4K5d524w1@4-0N435b5f3n4^5l4+3~4|0M4_531@55042 5p4?4{4W4 2!5m4!4$044(5b5q1@4s5a2!065e5S5G3U4y044A5F5M4U4W5u5g4@5X5%344|0n0n5+5H2~4)5S5!0,4-0B0!0B573u5O5?5T4J5^355o5Z5B014|5E2?5U545I3a5A4`690;0R5:5V666c644|0I6m6e565b5R5T645W4P6t1@6a6C5)6B6h5v5#046s6I5(0,5x2;6w5d644-2p0J4k5Y6p686A4o6w173`0B2w2X6+3$1q3(2z2B2x1X1Z2z0u1H6.0n3%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

.128013s3o8bcdufvg/0ly n7apS!.r1me(P2=4:+twk%i9][5h*)6050h0B0J0t0N0o0b0q0g0o0t0b0b0F010J0N0u010406050b0i0A0A0t0y0p040v0d0o0i0:0d0r050m0`0|0~100^0u04191g051j0m1j1l1g0^0h0N0k0(0*0,0.0S0N0l0S0o1z0S0J0?050Z0f0o0B1u0+0-011y1A1C1A0J1I1K1G0J0f0d0h101H0y1h0J0S0(130b0u0t0r0.0E011M1w010j0#0B0r0t0A0B1G1.1:1^1O1{1K1~200?0a0q0D0y0d0u0d0b0N160r0q0X1,0y0y0B0g2l19230r1h0m1*2y0J1(1%1)0h250.1C0r1}2i1G1r1t0)1N2I0N2K0r1!1s1G0u2r1h2w2y2$0_1/2m2Q1_2V0y0}0o0?0z2v2*0@2)242,1O2.2:0?0E2@1:2_2w2H012~0t2;040c322x0^352|0.383a0G3d342*363j0?0R3m3f3o3h370d2/390?0V3t2`2+1v2}3y2 040s3D3g3G3i3I3A040e3M3v3O3x3z3a0O3m1i2!192O2B0h2F360g1!211h3)1k3%2(1a2^053.0X2#3V2R010L0?0X0j3#3N400K0?0q463 2-0j0?0b0p0y0t0g0i0b0B4c2{3W0=040C4p3F400r0?183_333E364s0U0H3t0q4J4b472-4g0i2k4o4B2x4L4d1O0d0?0F3m4U4q404s0Q4v3p4z4*3w4s0P4I4K4D3w42040K1y1K4!4?3W4y044A2$4#4w1_4X040w4Z4S0454360A0N2=4-4r0?4H5b064K5o5d4@0?0N455b5q4 4,5v4~40570M4}4M1O5f305E4V0.570F5a535A1_5H040n5i4%5k4;5p5p5Q2}5y5P5F5L4Y5J4$4N515,554W0?0m0m5:5e5g04315m5Z4J5#0.4^0B0$4R2(5)014s5l2$5n5 5o61375%2^5w5B5+5z685S3c6n5K01570T5_3w50526j6g570I6w3W5S2?5~5 6g500`4Q5V560?0x6O5$040t0u0u1}0h6S0.4s4u5b6K6i4C684F5Y6k1_4^2r0J0i0y6z336/6T6M0J662^0^0m3|0B2y2Z743(1s3*2B2D2z1Z1#2B0t1J770m3)710X0Z0#0b04.

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

.128013s3o8bcdufvg/0ly n7apS!.r1me(P2=4:+twk%i9][5h*)6050h0B0J0t0N0o0b0q0g0o0t0b0b0F010J0N0u010406050b0i0A0A0t0y0p040v0d0o0i0:0d0r050m0`0|0~100^0u04191g051j0m1j1l1g0^0h0N0k0(0*0,0.0S0N0l0S0o1z0S0J0?050Z0f0o0B1u0+0-011y1A1C1A0J1I1K1G0J0f0d0h101H0y1h0J0S0(130b0u0t0r0.0E011M1w010j0#0B0r0t0A0B1G1.1:1^1O1{1K1~200?0a0q0D0y0d0u0d0b0N160r0q0X1,0y0y0B0g2l19230r1h0m1*2y0J1(1%1)0h250.1C0r1}2i1G1r1t0)1N2I0N2K0r1!1s1G0u2r1h2w2y2$0_1/2m2Q1_2V0y0}0o0?0z2v2*0@2)242,1O2.2:0?0E2@1:2_2w2H012~0t2;040c322x0^352|0.383a0G3d342*363j0?0R3m3f3o3h370d2/390?0V3t2`2+1v2}3y2 040s3D3g3G3i3I3A040e3M3v3O3x3z3a0O3m1i2!192O2B0h2F360g1!211h3)1k3%2(1a2^053.0X2#3V2R010L0?0X0j3#3N400K0?0q463 2-0j0?0b0p0y0t0g0i0b0B4c2{3W0=040C4p3F400r0?183_333E364s0U0H3t0q4J4b472-4g0i2k4o4B2x4L4d1O0d0?0F3m4U4q404s0Q4v3p4z4*3w4s0P4I4K4D3w42040K1y1K4!4?3W4y044A2$4#4w1_4X040w4Z4S0454360A0N2=4-4r0?4H5b064K5o5d4@0?0N455b5q4 4,5v4~40570M4}4M1O5f305E4V0.570F5a535A1_5H040n5i4%5k4;5p5p5Q2}5y5P5F5L4Y5J4$4N515,554W0?0m0m5:5e5g04315m5Z4J5#0.4^0B0$4R2(5)014s5l2$5n5 5o61375%2^5w5B5+5z685S3c6n5K01570T5_3w50526j6g570I6w3W5S2?5~5 6g500`4Q5V560?0x6O5$040t0u0u1}0h6S0.4s4u5b6K6i4C684F5Y6k1_4^2r0J0i0y6z336/6T6M0J662^0^0m3|0B2y2Z743(1s3*2B2D2z1Z1#2B0t1J770m3)710X0Z0#0b04.