Aller au contenu

Somme maximale de k termes consécutifs⚓︎

Écrire une fonction somme_maxi qui prend en paramètres un tableau d’entiers valeurs, et un entier strictement positif k. Cette fonction doit renvoyer la somme maximale de k entiers consécutifs du tableau valeurs.

On garantit que le tableau valeurs est de taille au moins égale à k et que k est un entier strictement positif.

Exemple
1
2
3
4
>>> somme_maxi([0, 1, 2, 3, 2, 1, 0], 3)  # pour les termes consécutifs 2, 3, 2
7
>>> somme_maxi([0, 1, 2, 3, 2, 1, 0], 1)  # pour le terme 3
3
###(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
.128013oP;f 8lkg5:+,bry2a1h3tvw=u6e[(Sn9]x_s-c)7im/4p0d050W0C0w0s0Q0h0L0f0N0h0s0L0L0z010w0Q0U010406050L0A0R0R0s0p0q040F0b0h0A0;0b0G050S0{0}0 110_0U04051h1a1k0S1h0_0W0Q0x0)0+0-0/0+0G0j0A0s0j0C0M0U0q0w0u180f0u0Q0j0u0h1M0u0w0@050!0o0h0C1t0,0.011L1N1P1N0w1V1X1T0w0p1i1H0)140L0U0s0G0/0r011Z1v010e0$0C0G0s0R0C1T1^1`1 1#221X25270@0a0f0c0p0b0U0b0L0Q170G0f0Y1?0p0p0C0N2s1a2a0G1i0S1H2F1/1;1:1U0W2c1w0Q0G242p1T1q1s0*1!2P2R0G0b2V1T0U2y1i2D2F2,0`1_2t2X202#0p0~0h1T0s1K2y0e0/030K0K0N2$0C1P2!0b0M0t3a0@0f0t1a0s2-2:0^2/2b2=1#2@2_2{2}0C2 01313335372S3a0M1}040f0r3g3i1`3k2D2O013p0s2`1i2|0u2~3032340Y3z2#3B0v3d0v3H2C3j0_3L3n0/3O3Q053S3U3v3W3y2Q3A3b0T3d0T3)1b3+3l2;1u3o0b2^3P3r3T3t3V3x3Y3{3!3b0k3d0k412,3,2:3M3:4b3@3w3X364h393b0B3d0B4n433-463/483q3R3s3u4v3`383B0P3d0P4E3J4p3m4H3N4J4a4L4c4N3_4g4Q3b0g3d0g4V2E4X452Y4!493;3?4d3^4f4x4,0M0H3d0H4;3K4q3.4_4K3=4M4e4w3Z4z3a0V0@0t0V561l2*1a2V2I0W1;2N594w2U1r1i2)0C2+3j3*3J054w5D2b0Q0W0/322D3B0t3r5L5N4 5g5Q1~2g0C5U5f4y5X2F3h443M0i0@0Y0e5F2E5+590y3d5;5J4@2?0e0@0L0b0}0C0K0~0J0Q5`5?4Z0?040E684G4^0G0@0x3P0C0A0p0L6e586a0@0n5`0f696g0@0i6p4Y4^6b0O0l5`0_425G3L5T015O2:3B3D5c6L4*503|3C5Y265!6M5V5%3b6Q0S3h0f6+6v6f2?6y0K60626u6w200b0@0z6@6.1#0R0Q0@5m6I4=6A2t6S6;6O3b3$4L785$513$0f5Z5#4P6V7c3H6,6-6q4^5-040e486}7r6/0467743E6^1#0b5^7A197C7q6B2?0o0@0p1`1C763M6b6d7C7E3/6y7T596D6F7C6H2.6K5M6!5P3}5S7-6T5W7:7i6Y7k4+6V3~5)3E7p6,7Y3N6:6=277x7M7F0@0m6|7K836h046j1X6m6o7X6~0/6b0D7#4Z8g7B7+7y1#6b0I6G7T787/0M4k7d7=6#514k7_277{6U4i8E1T6)806+8f0@658u3j7L5|8a048d2,8!4r8561877)8B8H8D4B8G8N7@0M4B8L6Z7?6$8`8R6*828n017t7v0p888#7Z7A993M7G0@2Q9d590G7O047Q1y0C8r6C0@7W8v899b6z8m8w8o6s9i8s9l2f9q207V9G3o6i6k8k9J9A040O6E8A9y5K8;7a0M4S8@6!7f6V4S8|8^8 9Z7o818U948g0i6;8-9p8e946`048c9C6x8h9M6n9O018pa38ta38y9~6_0@0Maa9Ka08ja29U9aa40@8qaj8+9c9_9z019{adar9v84049x9uaka98/ao8C9X4.9!8~514.9)9#7l8PaI9-9.837t0Q5:awak9;9?6?aY9e0@020j0w0dae9b8Xa80@7(4o8:5U8D53aJ8I6V53aNaKa~918T9.93as8ga:a%599{8(8Z8Vaza#8.a@aF9W1`5Q5ja|9$8P5l6X8MaO7|brboaS8*597t2y0w6m7J8)bfb9bj2.0S5I5o5C5q5z1a0w5tbS2L2G0s1WbP0S5r6H0Y0!0$0L04.
Indice 1

On pourra commencer par faire le cumul des k premières valeurs pour initialiser une variable maxi.

On pourra ensuite faire une boucle qui ajoute la valeur suivante et retranche la première valeur.

Indice 2

On pourra s'aider du code à trou

Python
def somme_maxi(valeurs, k):
    k_somme = ...
    for i in range(k):
        k_somme += ...
    maxi = k_somme
    for i in range(..., ...):
        k_somme += valeurs[...] - valeurs[...]
        if k_somme > maxi:
            maxi = ...
    return ...