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
.128013it3a;dv,n2S5wbcy+14: f-up08)_9eklohxrP=[s6(]/mg7050g0F0c0e0b0H0P0v0p0H0e0P0P0N010c0b0z010406050P0y0U0U0e0L0q040l0I0H0y0;0I0j050T0{0}0 110_0z04051h1a1k0T1h0_0g0b0h0)0+0-0/0+0j0V0y0e0V0F0x0z0q0c0J180v0J0b0V0J0H1M0J0c0@050!0o0H0F1t0,0.011L1N1P1N0c1V1X1T0c0L1i1H0)140P0z0e0j0/0k011Z1v010w0$0F0j0e0U0F1T1^1`1 1#221X25270@0a0v0M0L0I0z0I0P0b170j0v0Y1?0L0L0F0p2s1a2a0j1i0T1H2F1/1;1:1U0g2c1w0b0j242p1T1q1s0*1!2P2R0j0I2V1T0z2y1i2D2F2,0`1_2t2X202#0L0~0H1T0e1K2y0w0/030D0D0p2$0F1P2!0I0x0s3a0@0v0s1a0e2-2:0^2/2b2=1#2@2_2{2}0F2 01313335372S3a0x1}040v0k3g3i1`3k2D2O013p0e2`1i2|0J2~3032340Y3z2#3B0d3d0d3H2C3j0_3L3n0/3O3Q053S3U3v3W3y2Q3A3b0t3d0t3)1b3+3l2;1u3o0I2^3P3r3T3t3V3x3Y3{3!3b0m3d0m412,3,2:3M3:4b3@3w3X364h393b0Q3d0Q4n433-463/483q3R3s3u4v3`383B0W3d0W4E3J4p3m4H3N4J4a4L4c4N3_4g4Q3b0B3d0B4V2E4X452Y4!493;3?4d3^4f4x4,0x0E3d0E4;3K4q3.4_4K3=4M4e4w3Z4z3a0A0@0s0A561l2*1a2V2I0g1;2N594w2U1r1i2)0F2+3j3*3J054w5D2b0b0g0/322D3B0s3r5L5N4 5g5Q1~2g0F5U5f4y5X2F3h443M0G0@0Y0w5F2E5+590n3d5;5J4@2?0w0@0P0I0}0F0D0~0K0b5`5?4Z0?040R684G4^0j0@0h3P0F0y0L0P6e586a0@0i5`0v696g0@0G6p4Y4^6b0C0u5`0_425G3L5T015O2:3B3D5c6L4*503|3C5Y265!6M5V5%3b6Q0T3h0v6+6v6f2?6y0D60626u6w200I0@0N6@6.1#0U0b0@5m6I4=6A2t6S6;6O3b3$4L785$513$0v5Z5#4P6V7c3H6,6-6q4^5-040w486}7r6/0467743E6^1#0I5^7A197C7q6B2?0o0@0L1`1C763M6b6d7C7E3/6y7T596D6F7C6H2.6K5M6!5P3}5S7-6T5W7:7i6Y7k4+6V3~5)3E7p6,7Y3N6:6=277x7M7F0@0r6|7K836h046j1X6m6o7X6~0/6b0O7#4Z8g7B7+7y1#6b0S6G7T787/0x4k7d7=6#514k7_277{6U4i8E1T6)806+8f0@658u3j7L5|8a048d2,8!4r8561877)8B8H8D4B8G8N7@0x4B8L6Z7?6$8`8R6*828n017t7v0L888#7Z7A993M7G0@2Q9d590j7O047Q1y0F8r6C0@7W8v899b6z8m8w8o6s9i8s9l2f9q207V9G3o6i6k8k9J9A040C6E8A9y5K8;7a0x4S8@6!7f6V4S8|8^8 9Z7o818U948g0G6;8-9p8e946`048c9C6x8h9M6n9O018pa38ta38y9~6_0@0xaa9Ka08ja29U9aa40@8qaj8+9c9_9z019{adar9v84049x9uaka98/ao8C9X4.9!8~514.9)9#7l8PaI9-9.837t0b5:awak9;9?6?aY9e0@020V0c0fae9b8Xa80@7(4o8:5U8D53aJ8I6V53aNaKa~918T9.93as8ga:a%599{8(8Z8Vaza#8.a@aF9W1`5Q5ja|9$8P5l6X8MaO7|brboaS8*597t2y0c6m7J8)bfb9bj2.0T5I5o5C5q5z1a0c5tbS2L2G0e1WbP0T5r6H0Y0!0$0P04.
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 ...