Aller au contenu

TP Les fonctions

Fonction affine⚓︎

Écrire le code d'une fonction f qui a tout nombre x associe -4x + 7.

###(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 : 5/5
.128013ita;dvn2Swb*cy7+14: f-up0)_elohxrP=s(/mgk050f0C0c0d0b0D0K0u0n0D0d0K0K0J010c0b0y010406050K0x0N0N0d0H0o040j0E0D0x0*0E0h050M0;0?0^0`0/0y04051a131d0M1a0/0f0b0g0Y0!0$0(0!0h0O0x0d0O0C0w0y0o0c0F110u0F0b0O0F0D1F0F0c0-050T0l0D0C1m0#0%011E1G1I1G0c1O1Q1M0c0H1b1A0Y0}0K0y0d0h0(0i011S1o010v0V0C0h0d0N0C1M1.1:1^1U1{1Q1~200-0a0u0I0H0E0y0E0K0b100h0u0R1,0H0H0C0n2l13230h1b0M1A2y1(1*1)1N0f251p0b0h1}2i1M1j1l0Z1T2I2K0h0E2O1M0y2r1b2w2y2#0:1/2m2Q1_2U0H0@0D1M0d1D2r0v0(030B0B0n2V0C1I2T0E0w0z0w0r0-0r130d2$2)0.2(242+1U2-2/2;2?0C2^012`2|2~302L330w1?040i393b1:2y2Y0C2y2O2B0f1*2G3g0(2}0R2N1k1b3D2!3c2v3U3N3E3e2m0b0f0(2{2w3u361b2=3#3%3q0R3s2U3*1@290C3/3X3=32343+3z3Z2H010P0-0R0v3V3B423L010k0-0u492x4b1n3h0v0-48143U2w430,040L4h3T3f4k0(0h0-0G4w4j2R014t0t4w4g4r4c0h0l4n0D0E0d0c4E4M4z4H0-0A4K4F1_0E0-0w020O0c0e4#4W4G4O4Q4S4U4p4a4:1_4I4w0/4_4i4r3.013(2)3u3w053-3$543:2 2J3t341?0u3_3{3r5f3?5h1M0M3a0u5t4L2)4345042r0c0x0H1250045v4y4G4(040w4/5w4c0N0b0-0s5N5I4%0-0m5U2*4X4B044D5F5H5!5J0-0q5Z435Q0-0p4~4E0M3X3C2Z133G130c3I5 2E2z0d1P3Y0M3G4 0R0T0V0K04.

Somme⚓︎

Écrire une fonction addition qui prend deux nombres en paramètre et retourne leur somme.

###(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 : 5/5
.128013it3adv,n2S5wbcy+14: f-upA)8_elohrP=s(/mgk050f0D0c0e0b0E0K0u0o0E0e0K0K0J010c0b0y010406050K0x0N0N0e0H0p040k0F0E0x0*0F0i050M0;0?0^0`0/0y04051a131d0M1a0/0f0b0g0Y0!0$0(0!0i0O0x0e0O0D0w0y0p0c0G110u0G0b0O0G0E1F0G0c0-050T0n0E0D1m0#0%011E1G1I1G0c1O1Q1M0c0H1b1A0Y0}0K0y0e0i0(0j011S1o010v0V0D0i0e0N0D1M1.1:1^1U1{1Q1~200-0a0u0I0H0F0y0F0K0b100i0u0R1,0H0H0D0o2l13230i1b0M1A2y1(1*1)1N0f251p0b0i1}2i1M1j1l0Z1T2I2K0i0F2O1M0y2r1b2w2y2#0:1/2m2Q1_2U0H0@0E1M0e1D2r0v0(030C0C0o2V0D1I2T0F0w0r330-0r130e2$2)0.2(242+1U2-2/2;2?0D2^012`2|2~302L330w1?040j383a1:3c2w2H013h0e2:1b2=0G2@2_2{2}0R3r2U3t0d0-0d3y2v3b0/3C3f0(3F3H053J3L3n3N3q2J3s340s0-0s3W143Y3d2*1n3g0F2.3G3j3K3l3M3p3P3/3R340l0-0l3^2%1g2Z132O2B0f1*2G3#013O211b4j1c4h4f2%4q2!2)0u0b0f0(2{2w3t0r3j4C4E462 4832344I0u290D4L4q3Q4P352y393{3D0P0-0R0v3X3A4$4o0m0-0u4,2x4.3}3$0v0-0e0f1j2u3_4-3!4_010,040L4?4z3e540i4|594^2R550-0h594=535h5d040n5f5n1_560A0t590/514@3C4K014F2)3t3v3)4B4D5E4M4X5H1@4T4V3.315P4!040u5Y5m4A4o4(042r0c0x0H125A5X5g2,5e5.5!5b5h0F0-0q5l5:3g0-5r5.5z2%5C5L5F1:3S4J665N4O694S1 4U5M4W6d343T5W633b4$5D670i3t3=3I5K5S475U3;5Q6g6y4N6A0w6v3W5t5 5(0D0;0E0T0c5}6K0(5`040J6S5#5c4|4~2k0b115s6Z5h56585.5~0(0N0b4c6*5^5u5j6Y6_1U6=3U6^3|6,0-0A5y716x5M4G4a6a6E5O7b6f207d6k0w4b5W6:3E0n0-2Y2J6R6/6T5i57774o5p2r6O6Q7y545v5l5@721_0o4I04030u0z0v1{0o0G1R0B766/0M4y1e4h0M4t2z4l132C7+0e1P0D2y4j5z0R0T0V0K04.

Pair ou impair⚓︎

Créer une fonction est_pair qui prend un entier et retourne True s’il est pair, sinon False.

###(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 : 5/5
.128013itadvn2Swbcy1: f-up0)_el%ohrP=s(/mgk050e0x0c0d0b0y0F0p0l0y0d0F0F0E010c0b0t010406050F0s0I0I0d0C0m040i0A0y0s0#0A0g050H0,0.0:0=0*0t0405150~180H150*0e0b0f0T0V0X0Z0V0g0J0s0d0J0x0r0t0m0c0B0|0p0B0b0J0B0y1A0B0c0(050O0k0y0x1h0W0Y011z1B1D1B0c1J1L1H0c0C161v0T0^0F0t0d0g0Z0h011N1j010q0Q0x0g0d0I0x1H1)1+1:1P1?1L1_1{0(0a0p0D0C0A0t0A0F0b0{0g0p0M1%0C0C0x0l2g0~1~0g160H1v2t1Z1#1!1I0e201k0b0g1^2d1H1e1g0U1O2D2F0g0A2J1H0t2m162r2t2W0+1*2h2L1;2P0C0/0y1H0d1y2m0q0Z030w0w0l2Q0x1D2O0A0r0h0r0n0(0n0~0d2X2!0)2Z1 2$1P2(2*2,2.0x2:012=2@2_2{2G2~2~0(0h34361+2t2T0x2t2J2w0e1#2B3b0Z2^0M2I1f163x2V372q3O3H3y392h0b0e0Z2?2r3p31162-3V3X3l0M3n2P3!1/240x3)3R3,2}2 3#3t3T2C010K0(0M0q3P3v3|3F010j0(0p432s451i3c0q0(0x0F0c0w1*0b0C4b3N3a4e0Z0%040G4p4d2M010g0(0}0 3O2r3}4u0v0o4p0*4E444G3(013Y2!3p1.3$0p4Q2?3?2E3o2 1.0p3:3=3m4#3-4%1H0H350p4?4a4G463 042m0c0s0C4D2W4^2!3}4B045137534r4z0A0(0z4p5a2#4s010I0b3r5g4y1;5d040E0E5o4_5j5l0(0u4L4x0H3R3w2U0~3A0~0c3C5J2z2u0d1K3S0H3A4M0M0O0Q0F04.

Compter les voyelles dans une phrase.⚓︎

Compléter le code d'une fonction compter_voyelles qui prend une chaîne de caractères et retourne le nombre de voyelles (a, e, i, o, u, y) (majuscule/minuscule).

###(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 : 5/5
.128013it3a;djvEn2S5w0bcy+14q: f-upA8)_I9UYBeklohrOP=s6(/mg7050g0M0c0e0b0O0V0y0r0O0e0V0V0U010c0b0C010406050V0B0Z0Z0e0R0s040m0P0O0B0_0P0k050Y101214160~0C04051m1f1p0Y1m0~0g0b0i0.0:0=0@0:0k0!0B0e0!0M0A0C0s0c0Q1d0y0Q0b0!0Q0O1R0Q0c0|050)0q0O0M1y0;0?011Q1S1U1S0c1!1$1Y0c0R1n1M0.190V0C0e0k0@0l011(1A010z0+0M0k0e0Z0M1Y1}1 241*271$2a2c0|0a0y0T0R0P0C0P0V0b1c0k0y0%1{0R0R0M0r2x1f2f0k1n0Y1M2K1@1_1^1Z0g2h1B0b0k292u1Y1v1x0/1)2U2W0k0P2!1Y0C2D1n2I2K2;0 1~2y2$252*0R130O1Y0e1P2D0z0@030G0G0r2+0M1U2)0P0A0d0A0u0|0u1f0e2=2^0}2@2g2`1*2|2~30320M340136383a3c2X3f0A22040l3l3n1 3p2I2T013u0e2 1n310Q333537390%3E2*3G0d0|0d3L2H3o0~3P3s0@3S3U053W3Y3A3!3D2V3F3g0v0|0v3-1g3/3q2_1z3t0P2}3T3w3X3y3Z3C3$3 3(3g0n0|0n452;3:2^3Q3@4f3{3B3#3b4l3e3g0W0|0W4r473;4a3?4c3v3V3x3z4z3~3d3G0#0|0#4I3N4t3r4L3R4N4e4P4g4R3}4k4U3g0E0|0E4Z2J4#492%4(4d3^3`4h3|4j4B4:0A0I0|0I4^2K2.0M2K2!2N0g1_2S3=014A2Z1w1n5c2:3o3.3N054A5r2g0b0g0@372I3G3i4P5z5B533%4D3h232l0M5I4A5K5E1Y0Y3m483Q0N0|0%0z5t2J5X5k0o0|0y5%5x4{2{0z0|390Z0C0c0M0R0G0i0P0s3b1$0V5.5)4%0{040X644K4|0k5?0Q0*2W6a4u5k670F0x5.0~465u3P5H015C2^3G3I3_0y6t4.54403H5N2b5P6u5J4C6x5U3m0y6P5-6b2{0|5~600O625.6R6j4%0P0|0U6Z654|0V3I020w0B0P0c0f0e0M0b0P0B0s0D0j0H0S0J0K6/6;6?6o6i5y5A6J5D3g3*5G7a6C5S7d6G2c5Q4T6E7e3L6Q6!4$6c5?0P5^5`0B0R6*6S1*6%046)6q2J7s5:1*0Z0b0|0p777H5/6A7g0G7c0A427f7m4/6E420y5O7!6D4m7X6N047r6+255Z040z4c7B6#7u041$1:2D7`7t250P5+042V817K3?6e6g0M788901676n7R6p2?6s7U7W4o7Z6J5R6L4n7k6I7h8t0A8p7q7r6Q7;1*7?0b5$7R7J4v0|7~1@8d8J8E0@840|878Q7C8a046V610M637R8R8g0|8i4s8e7T5I7W4F8q8x554F7(6H7*7i0A8=8B8C8C8)6d045@5_0M7z883Q7E0t7G2;8K5k7M3j7Q8l4u6B7V6w3g4W8?6K554W8`7l8r7n7,9r909g4%7?2D0c7z1e8W7{6T957w97998j8.9n7W4=9s8s554=9w8w9t6E9V3L8k5s8m8:9p563w9n9X6E579!8|8y572K5W8X3R0q0|2.2V0c8.6k0|698(9~94965`5|8!6X8$a566a7ai6,6.6:6=0f0L1d0h6{0R74apal256l0F6Z9D4|0r5F030y3,9R8(0Y5w1q2/1f5f1f0c5haS2Q2L0e1#5daQ5o6p0%0)0+0V04.

Tester si un nombre est premier.⚓︎

Écrire une fonction est_premier qui prend un entier et retourne True s’il est premier, sinon False.

###(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 : 5/5
.128013it3a;dv,FnT2.S5wb*cy+14: f-up08)_9ekl%ohrP=s6(/mg7050g0J0c0e0b0L0S0z0t0L0e0S0S0R010c0b0D010406050S0C0W0W0e0P0u040o0N0L0C0?0N0k050V0}0 11130{0D04051j1c1m0V1j0{0g0b0h0+0-0/0;0-0k0X0C0e0X0J0B0D0u0c0O1a0z0O0b0X0O0L1O0O0c0_050$0r0L0J1v0.0:011N1P1R1P0c1X1Z1V0c0P1k1J0+160S0D0e0k0;0m011#1x010A0(0J0k0e0W0J1V1`1|211%241Z27290_0a0z0Q0P0N0D0N0S0b190k0z0!1^0P0P0J0t2u1c2c0k1k0V1J2H1;1?1=1W0g2e1y0b0k262r1V1s1u0,1$2R2T0k0N2X1V0D2A1k2F2H2.0|1{2v2Z222%0P100L1V0e1M2A0A0;030H0H0t2(0J1R2$0N0B0x0B0w0_0z0w1c0e2/2=0`2;2d2@1%2_2{2}2 0J3101333537392U3c0B1 040z0m3j3l1|3n2F2Q013s0e2|1k2~0O303234360!3C2%3E0d3g0d3K2E3m0{3O3q0;3R3T053V3X3y3Z3B2S3D3d0x3g0x3,1d3.3o2?1w3r0N2`3S3u3W3w3Y3A3#3~3%3d0p3g0p442.3/2=3P3?4e3`3z3!384k3b3d0T3g0T4q463:493=4b3t3U3v3x4y3}3a3E0Y3g0Y4H3M4s3p4K3Q4M4d4O4f4Q3|4j4T3d0F3g0F4Y2G4!482!4%4c3@3_4g3{4i4A4/0B0I3g0I4@3N4t3;4|4N3^4P4h4z3$4C3e0E0_0w0E591n2,1c2X2K0g1?2P5c4z2W1t1k2+0J2-3m3-3M054z5G2d0b0g0;342F3E3f4O5O5Q525j5T202i0J5X5i4B5!2H3k473P0K0_0!0A5I2G5.5c0q3g5@5M4`2^0A0_0J0S0c0H5E0W0b0J0P5}5_4$0^040U6c4J4{0k0_1b455J6j226f0G0y5}0{6o5^3O5W015R2=3E3G5f6A4-533 3F5#285%6B5Y5*3d6F0V3k0z6W0z6d4{5:040b5?6x3H6Z2^6m5}6Y6q1%0N0_020L0c0f6.6+1%680_3J6)6|0;6f6u6)6w2:6z5P6P5S3d3)5V7a6I5Z7d6M295(4S6K7e3K6X7r6/5b4$6#2A0c0C0P6n2.7t4#6!0t0_0j3S0S0J6v6i4t6H0H7c3c3u7P5)54410z5$7m4.6K415,3H6X72016#0A4b6{6:3=0_0b7:7u4{0N5{6$7B3m7D5 3r0r0_0P1|1E7N7E6r0_6h717;016~0470787_8a040i7^89827?0k0c8881738b8u4u6-6)803P6=040s0s8o8v8f61040E0n4p8d8k1%6s8I8D0_0v8U5c8g3i8Q8p8w046t7M8$2v7P7R4n7f7!6J4l0B4n7Y6N8=7i8^1V6U7)7s8C5c6#6%8Y4$6l047~3M934$8E0M976k7?9h228E0R0R9k6}0b0_5p8,3P748+8j5N7g7Q6D4D7T9A7V6K4E8`7l6P9G8@4E7(92927+7w0#7z9b2G9d7F7H7J7L768y8.9C0B4V8;9L7n8@4V9J6O7h6R9+8 6V7*8e9T7y7A9p0;0K7G040l0P0C9$4r9(9A7R4;9-9@544;9=8|9^ae3K775H795X7R56af6Q5456aj9.7#8@at3,8e0k83042+2S8t9u5c6f8c9y8J99636567696baL6e8xaX4{8g4Xa!8l0G0G6.6W7+0t5U030za6a89xap7Oac9*5o9Eak54a}ayag6Ka}7(7+aF0_aI8s8yaMaZaP8z04aS662A686abcaY6gbna#9r045obqa)a+8B9Y22a/0_a;7I0)a946710V5L5r5F5t5C1c0c5wbP2N2I0e1YbM0V5u6w0!0$0(0S04.

Noircir un texte⚓︎

Avant de rendre public des dossiers sensibles, il arrive que certains organismes les « anonyment » en entier ou partiellement.

Dans le cadre de cet exercice, nous ne programmons qu'une version simpliste : « noircir » un texte consiste à remplacer toutes les caractères alphabétiques par un caractère occultant, comme par exemple ▮.

Le texte L'espion était J. Bond devient alors ▮'▮▮▮▮▮▮ ▮▮▮▮▮ ▮. ▮▮▮▮.

On demande d'écrire la fonction noircir qui prend en argument une chaîne de caractères texte ainsi que le caractère occultant noir et renvoie le même texte « noirci » du début à la fin.

Astuce

Si s est une chaîne de caractères, l'instruction s.isalpha() renvoie True si s n'est composée que de caractères alphabétiques.

Ainsi "é".isalpha() est évalué à True, "Bonjour !".isalpha() est évalué à False.

Attention

Python interdit de modifier les chaînes de caractères. Vous devez donc en créer une nouvelle.

Pour cela, on utilise l'opérateur + qui permet de concaténer deux chaînes, ey donc d'ajouter un caratère à la fin d'une chaîne.

texte = '' + 'e'

ou

texte = 'salu' + 't'

Exemples
1
2
3
4
5
6
7
8
>>> noircir("", "*")
''
>>> noircir("L'espion était J. Bond", "▮")
"▮'▮▮▮▮▮▮ ▮▮▮▮▮ ▮. ▮▮▮▮"
>>> noircir("L'espion était J. Bond", "_")
"_'______ _____ _. ____"
>>> noircir(";-)", "â–®")
';-)'
###(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 : 5/5
.128013it3a;dv,n2.S5wbcy+14q: f-up8)_9eklohxrP=s6(/mg7050g0G0c0e0b0I0P0x0q0I0e0P0P0O010c0b0B010406050P0A0T0T0e0M0r040m0J0I0A0:0J0j050S0`0|0~100^0B04051g191j0S1g0^0g0b0h0(0*0,0.0*0j0U0A0e0U0G0z0B0r0c0K170x0K0b0U0K0I1L0K0c0?050Z0p0I0G1s0+0-011K1M1O1M0c1U1W1S0c0M1h1G0(130P0B0e0j0.0k011Y1u010y0#0G0j0e0T0G1S1@1_1~1!211W24260?0a0x0N0M0J0B0J0P0b160j0x0X1=0M0M0G0q2r19290j1h0S1G2E1.1:1/1T0g2b1v0b0j232o1S1p1r0)1Z2O2Q0j0J2U1S0B2x1h2C2E2+0_1^2s2W1 2!0M0}0I1S0e1J2x0y0.030E0E0q2#0G1O2Z0J0z0Q0z0t0?0t190e2,2/0@2.2a2;1!2?2^2`2|0G2~01303234362R390z1|040k3f3h1_3j2C2N013o0e2_1h2{0K2}2 31330X3y2!3A0d0?0d3F2B3i0^3J3m0.3M3O053Q3S3u3U3x2P3z3a0u0?0u3%1a3)3k2:1t3n0J2@3N3q3R3s3T3w3W3_3Y3a0n0?0n3 2+3*2/3K3.493=3v3V354f383a0Q0?0Q4l413+443-463p3P3r3t4t3^373A0V0?0V4C3H4n3l4F3L4H484J4a4L3@4e4O3a0C0?0C4T2D4V432X4Y473/3;4b3?4d4v4*0z0F0?0F4/2E2(0G2E2U2H0g1:2M3,014u2T1q1h562*3i3(3H054u5l2a0b0g0.312C3A3c4J5t5v4}3X4x3b1}2f0G5C4u5E5y1S0S3g423K0H0?0X0y5n2D5R5e0o0?0x5X5r4=2=0y0?2!0b0M0q5/5(5Z4X0=040R5?4E4?0j0?0c0G0L615|4o5e5_0i5(5%5}2=5-0J5=405o6c1!5_0D0w5(0^6h5Y3J5B015w2/3A3C3:0x6t4(4~3`3B5H255J6u5D4w6x5O3g0x6P6b664X5 042x0`0I0Z0c6a5@4?0J0?0O6#6j0.0P3C020v0A0J0c0f6:6=6@6o655s5u6J5x3a3!5A6 6C5M726G265K4N6E733F6Q6R4W4?5T040y466+6S5~0?0q0~0e2z0G2x7o7i1 0J5#042P7y5*3n6062646q5)3K5_6n7L6p2-6s750E710z3|747b4)6E3|0x5I7!6D4g7X6N047g7g6$1 7k0b5W7L7h7G3-7r7t7v7x7L7=1!6(040l6}7|3L0?0b0P3N0B0K0e887N0?0R6m6|827T5C7W4i7Z6J5L6L4h796I768w0z8s7f7:8F837}6V0G6X6Z7F3K850s6*7`8H8a045.0M8n7S4o6B7V6w4y3q8#8v4 4z7(6H7*77397.8F6P8T7k350P0G8i670?7P4m8i8#7W4Q8t8A4 4Q8.7a8u7c7,968E8@6Q8T6U6W0A6Y0e6!8S6,018P8R2+7{4p7~0M7u6181928o8!7U7W4,976K4 4,9b8z9L6E9J3F7R5m8p708%508)7U8+6E519O8:8B512E6O9j9s7k2x0c0A0M189r7p6d8J8L9p8Y5m0S5q1k2)1959190c5ba82K2F0e1V57a65i6p0X0Z0#0P04.

La 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.

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
1
2
3
4
5
6
>>> 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 : 5/5

.128013it3advn2S5wb*cy!+14: f-up08)_9ekl%ohrP=s6(/mg7050f0F0c0e0b0H0O0v0o0H0e0O0O0N010c0b0z010406050O0y0S0S0e0L0p040j0J0H0y0/0J0h050R0_0{0}0 0@0z04051f181i0R1f0@0f0b0g0%0)0+0-0)0h0T0y0e0T0F0x0z0p0c0K160v0K0b0T0K0H1K0K0c0=050Y0m0H0F1r0*0,011J1L1N1L0c1T1V1R0c0L1g1F0%120O0z0e0h0-0i011X1t010w0!0F0h0e0S0F1R1?1^1}1Z201V23250=0a0v0M0L0J0z0J0O0b150h0v0W1;0L0L0F0o2q18280h1g0R1F2D1-1/1.1S0f2a1u0b0h222n1R1o1q0(1Y2N2P0h0J2T1R0z2w1g2B2D2*0^1@2r2V1~2Z0L0|0H1R0e1I2w0w0-030D0D0o2!0F1N2Y0J0x0B0x0s0=0s180e2+2.0?2-292:1Z2=2@2_2{0F2}012 3133352Q380x1{040i3e3g1^3i2B2M013n0e2^1g2`0K2|2~30320W3x2Z3z0d0=0d3E2A3h0@3I3l0-3L3N053P3R3t3T3w2O3y390t0=0t3$193(3j2/1s3m0J2?3M3p3Q3r3S3v3V3^3X390k0=0k3~2*3)2.3J3-483;3u3U344e37390P0=0P4k403*433,453o3O3q3s4s3@363z0U0=0U4B3G4m3k4E3K4G474I494K3?4d4N390B0=0B4S2C4U422W4X463.3:4a3=4c4u4)0x0E0=0E4.2D2%0F2D2T2G0f1/2L3+014t2S1p1g552)3h3%3G054t5k290b0f0-302B3z3b4I5s5u4|3W4w3a1|2e0F5B4t5D5x1R0R3f413J0G0=0W0w5m2C5Q5d0l0=0v5W5q4;2;0w0=0H161x0F0y0L0D0g125%5Y4W0;040Q5_4D4=0h0=173 5n601~5|0C0u5%0@655X3I5A015v2.3z3B3/0v6h4%4}3_3A5G245I6i5C4v6l5N3f0v6D5$673m0=5@0H5%6F4n5d0J0=0N6L5`4=0S0b0=0A6c5 4n6p0D5w393Z5z5t6x5K6z6)6u255J4M6s6*3E6E6M4V4=5S040l1J1V6S6G3,63746N4W6P040q6R6e046|5)1Z6V3c6!6}680=6b7f6d2,6g6,6j1^3z3{6+6?4(6s3{0v5H7B6r4f0x7z6`6{6E6T1~6 0b5V7f7h4o777U7P1Z7b0I787n7j6W3C7%7i0-7b0N7e2*7V5d7k046Y7f7Z0-5|7q4l7m2r6$6(0x4h7A6-6@7J4h7F6v7H5L4g6B7g7N8j7|3K7X7=8l7/7,7W04648o75017b0R0R8r7@7*3D7r816o7v6%6k4x3p6$6.4~4y8c6=887C7J4y2D6C8j7?4W6 340O0F8G5d7~6Z7{7u5B844P876q8f0x4P8R6w8@6/8_8h8Z7N8l628t8B7a6Q966U7*3#7Y8w7b0n992;8n3h8!4=7b0r9h7)7l8F8.6#8I844+8?6y4~4+8{8e8~9x7M8k8w946J9p7.989d79616I5^9O7(9M049o9T7-017^3d9s7t9u8:8K4 8M8I8O6s509C8T7I5E508X8i6D8l6 2w0c5;8u9k939R6K9%5l0R5p1j2(1858180c5aaf2J2E0e1U56ad5h6d0W0Y0!0O04.