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.

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

.1280132mhS)cleP=3tf!np_:avgbys560or 1(k8+*4iwu7%d9/050R0i0m0t0M0h0y0E0g0h0t0y0y0k010m0M0q010406050y0O0c0c0t0D0x040e0C0h0O0.0C0p050T0^0`0|0~0?0q04051e171h0T1e0?0R0M0u0$0(0*0,0d0M0v0d0h1v0d0m0;050X0w0h0i1q0)0+011u1w1y1w0m1E1G1C0m0D1f0m0d0$110y0q0t0p0,0b011I1s010n0Z0i0p0t0c0i1C1#1%1,1K1/1G1=1@0;0a0E0j0D0C0q0C0y0M140p0E0V1Z0D0D0i0g2c171`0p1f0T1X2p1U1W1V1D0R1|0,1y0p1;291C1n1p0%1J2z0M2B0p0C2F1C0q2i1f2n2p2T0@1$2d2H1-2M0D0{0h0;0F2m2X0=2W1{2Z1K2#2%0;0b2+1%2-2n2y012=0t2(040l2_2o0?2|2:0,2 310L342{2X2}3a0;0z3d363f382~0C2$300;0A3k2.2Y1r2;3p2?040P3u373x393z3r040I3D3m3F3o3q310S3d1i2R172F2s0R1W2x3n0g2N1^1f3W1g3U2V182,053$0V2S3M2I010H0;0V0n3S3E3^0N0;0E3~3@2!0n0;0h150v0O0i0O0D0r0u11442/3N0:040G4j3w3^0p0;163.2`3v2}4m0f0s3k0E4D433 2!0;4h0h3d4F451K0C0;0k4L4x3n0c0M0;0B4C4E4T3N3`040N1u1G4S4G2;4t4,4N0,4P040o4R4v2o4M4k3^4V2)4p4y0;4B4`0=4E574|4q1-4%0M3}55593g4/5f4#3^4?0Q4:4}1-4 042^5j4-4=4Q4_2T5g4U4W044Y555k1-4m542T06585M5A3N4s044u5z5G4O4Q5o5a4.5R5X2}4?0T0T5#5B2@4Z5M5U0,4%0i0!0i513n5I5-5N4D5/2~5i5T5v014?5y2,5O4~5C335u4;630;0K5*5P60665~4?0J6g6850555L5N5~5Q4J6n1-646w5Z6v6b5p5V046m6C5Y0,5r2*6q575~4%2i0m4e5S6j626u4i6q173;0i2p2Q6#3V1o3X2s2v2q0t1F6(0T3W0?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

.1280132mhS)cleP=3tf!np_:avgbys560or 1(k8+*4iwu7%d9/050R0i0m0t0M0h0y0E0g0h0t0y0y0k010m0M0q010406050y0O0c0c0t0D0x040e0C0h0O0.0C0p050T0^0`0|0~0?0q04051e171h0T1e0?0R0M0u0$0(0*0,0d0M0v0d0h1v0d0m0;050X0w0h0i1q0)0+011u1w1y1w0m1E1G1C0m0D1f0m0d0$110y0q0t0p0,0b011I1s010n0Z0i0p0t0c0i1C1#1%1,1K1/1G1=1@0;0a0E0j0D0C0q0C0y0M140p0E0V1Z0D0D0i0g2c171`0p1f0T1X2p1U1W1V1D0R1|0,1y0p1;291C1n1p0%1J2z0M2B0p0C2F1C0q2i1f2n2p2T0@1$2d2H1-2M0D0{0h0;0F2m2X0=2W1{2Z1K2#2%0;0b2+1%2-2n2y012=0t2(040l2_2o0?2|2:0,2 310L342{2X2}3a0;0z3d363f382~0C2$300;0A3k2.2Y1r2;3p2?040P3u373x393z3r040I3D3m3F3o3q310S3d1i2R172F2s0R1W2x3n0g2N1^1f3W1g3U2V182,053$0V2S3M2I010H0;0V0n3S3E3^0N0;0E3~3@2!0n0;0h150v0O0i0O0D0r0u11442/3N0:040G4j3w3^0p0;163.2`3v2}4m0f0s3k0E4D433 2!0;4h0h3d4F451K0C0;0k4L4x3n0c0M0;0B4C4E4T3N3`040N1u1G4S4G2;4t4,4N0,4P040o4R4v2o4M4k3^4V2)4p4y0;4B4`0=4E574|4q1-4%0M3}55593g4/5f4#3^4?0Q4:4}1-4 042^5j4-4=4Q4_2T5g4U4W044Y555k1-4m542T06585M5A3N4s044u5z5G4O4Q5o5a4.5R5X2}4?0T0T5#5B2@4Z5M5U0,4%0i0!0i513n5I5-5N4D5/2~5i5T5v014?5y2,5O4~5C335u4;630;0K5*5P60665~4?0J6g6850555L5N5~5Q4J6n1-646w5Z6v6b5p5V046m6C5Y0,5r2*6q575~4%2i0m4e5S6j626u4i6q173;0i2p2Q6#3V1o3X2s2v2q0t1F6(0T3W0?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

.1280132mhS)cleP=3tf!n.p:avgbys560or 1(]k8+[*4iwu7%d9/050T0i0m0t0O0h0y0E0g0h0t0y0y0k010m0O0r010406050y0Q0c0c0t0D0x040e0C0h0Q0:0C0p050V0`0|0~100^0r04051g191j0V1g0^0T0O0u0(0*0,0.0d0O0v0d0h1x0d0m0?050Z0w0h0i1s0+0-011w1y1A1y0m1G1I1E0m0D1h0m0d0(130y0r0t0p0.0b011K1u010n0#0i0p0t0c0i1E1%1)1.1M1;1I1@1_0?0a0E0j0D0C0r0C0y0O160p0E0X1#0D0D0i0g2e191|0p1h0V1Z2r1W1Y1X1F0T1~0.1A0p1?2b1E1p1r0)1L2B0O2D0p0C2H1E0r2k1h2p2r2V0_1(2f2J1/2O0D0}0h0?0F2o2Z0@2Y1}2#1M2%2)0?0b2-1)2/2p2A012@0t2*040l2{2q0^2~2=0.31330N362}2Z2 3c0?0z3f383h3a300C2(320?0A3m2:2!1t2?3r2^040R3w393z3b3B3t040J3F3o3H3q3s330U3f1k2T192H2u0T1Y2z3p0g2P1`1h3Y1i3W2X1a2.053(0X2U3O2K010I0?0X0n3U3G3`0P0?0E403_2$0n0?0y0x0D0t0g0Q0y0i462;3P0=040G4j3y3`0p0?183:2|3x2 4m0f0s3m0E4D45412$4a0Q2d4i4v2q4F471M0C0?0k3f4O4k3`4m0L4p3i4t4!3p4m0H4C4E4x3p3|040P1w1I4U4-3P4s044u2V4V4q1/4R040o4T4M044~2 0c0O2+4%4l0?4B55064E5i574.0?0O3 555k4_4$5p4^3`510S4@4G1M592_5y4P0.510k544}5u1/5B040B5c4X5e4+5j5j5K2?5s5J5z5F4S5D4W4H4{5$4 4Q0?0V0V5*585a042`5g5T4D5V0.4/0i0$4L2X5Z014m5f2V5h5_5i5{305X2.5q5v5#5t625M356h5E01510M5:3p4`4|6d6a510K6q3P5M2,5^5_6a4`0`4K5P500?0q6I5W040t0r0r1?0T6M0.4m4o556E6c4w624z5S6e1/4/2k0m0Q0D6t2|6)6N6G0m602.0^0V3?0i2r2S6~3X1q3Z2u2x2s0t1H710V3Y6{0X0Z0#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

.1280132mhS)cleP=3tf!n.p:avgbys560or 1(]k8+[*4iwu7%d9/050T0i0m0t0O0h0y0E0g0h0t0y0y0k010m0O0r010406050y0Q0c0c0t0D0x040e0C0h0Q0:0C0p050V0`0|0~100^0r04051g191j0V1g0^0T0O0u0(0*0,0.0d0O0v0d0h1x0d0m0?050Z0w0h0i1s0+0-011w1y1A1y0m1G1I1E0m0D1h0m0d0(130y0r0t0p0.0b011K1u010n0#0i0p0t0c0i1E1%1)1.1M1;1I1@1_0?0a0E0j0D0C0r0C0y0O160p0E0X1#0D0D0i0g2e191|0p1h0V1Z2r1W1Y1X1F0T1~0.1A0p1?2b1E1p1r0)1L2B0O2D0p0C2H1E0r2k1h2p2r2V0_1(2f2J1/2O0D0}0h0?0F2o2Z0@2Y1}2#1M2%2)0?0b2-1)2/2p2A012@0t2*040l2{2q0^2~2=0.31330N362}2Z2 3c0?0z3f383h3a300C2(320?0A3m2:2!1t2?3r2^040R3w393z3b3B3t040J3F3o3H3q3s330U3f1k2T192H2u0T1Y2z3p0g2P1`1h3Y1i3W2X1a2.053(0X2U3O2K010I0?0X0n3U3G3`0P0?0E403_2$0n0?0y0x0D0t0g0Q0y0i462;3P0=040G4j3y3`0p0?183:2|3x2 4m0f0s3m0E4D45412$4a0Q2d4i4v2q4F471M0C0?0k3f4O4k3`4m0L4p3i4t4!3p4m0H4C4E4x3p3|040P1w1I4U4-3P4s044u2V4V4q1/4R040o4T4M044~2 0c0O2+4%4l0?4B55064E5i574.0?0O3 555k4_4$5p4^3`510S4@4G1M592_5y4P0.510k544}5u1/5B040B5c4X5e4+5j5j5K2?5s5J5z5F4S5D4W4H4{5$4 4Q0?0V0V5*585a042`5g5T4D5V0.4/0i0$4L2X5Z014m5f2V5h5_5i5{305X2.5q5v5#5t625M356h5E01510M5:3p4`4|6d6a510K6q3P5M2,5^5_6a4`0`4K5P500?0q6I5W040t0r0r1?0T6M0.4m4o556E6c4w624z5S6e1/4/2k0m0Q0D6t2|6)6N6G0m602.0^0V3?0i2r2S6~3X1q3Z2u2x2s0t1H710V3Y6{0X0Z0#0y04.