added exercise 2

This commit is contained in:
Louis Heredero 2025-01-16 11:01:55 +01:00
parent 107c338abe
commit 84fde862e1
Signed by: HEL
GPG Key ID: 8D83DE470F8544E7
4 changed files with 58 additions and 1 deletions

View File

@ -2,7 +2,7 @@
Question 1 - De fils en tapis Question 1 - De fils en tapis
But : en partant d'une liste des arêtes d'un graphe, compter le nombre But : en partant d'une liste des arêtes d'un graphe, compter le nombre
de triangles qu'il contient de triangles qu'il contient
Approche : Approche :

35
src/ex2_tv.py Normal file
View File

@ -0,0 +1,35 @@
"""
Question 2 - Un clic pour les regarder toutes
But : calculer le nombre maximum d'émissions télé complètes consécutive que l'on
peut enregistrer sur un disque dur de taille fixe.
Approche :
Nous pouvons utiliser une "fenêtre" que l'on fait "glisser" sur les différentes
émissions, indiquant la tranche de programmation que l'on peut enregistrer.
En partant de la première émission, nous procédons ainsi:
- Si nous pouvons ajouter l'émission en entier à l'enregistrement sans dépasser
la taille du disque, nous l'ajoutons
- Sinon, il faut enlever au moins une émission du début de l'enregistrement pour
pouvoir ajouter celle-ci.
Nous parcourons ainsi tout le programme de la chaîne, en gardant le plus grand
nombre d'émissions enregistrables.
"""
def startRecordingAt(tv_shows: list[int], hard_drive_memory: int) -> int:
maximum: int = 0
recording: list[int] = []
duration: int = 0
for show in tv_shows:
recording.append(show)
duration += show
while duration > hard_drive_memory:
show2: int = recording.pop(0)
duration -= show2
maximum = max(maximum, len(recording))
return maximum

View File

@ -9,6 +9,7 @@ class MyTestCase(unittest.TestCase):
countTriangles([(0, 1), (1, 2), (0, 2)]), countTriangles([(0, 1), (1, 2), (0, 2)]),
1 1
) )
def test_simple2(self): def test_simple2(self):
self.assertEqual( self.assertEqual(
countTriangles([(2, 1), (1, 2), (2, 3)]), countTriangles([(2, 1), (1, 2), (2, 3)]),

21
tests/test_ex2.py Normal file
View File

@ -0,0 +1,21 @@
import unittest
from ex2_tv import startRecordingAt
class MyTestCase(unittest.TestCase):
def test_simple1(self):
self.assertEqual(
startRecordingAt([12, 22, 32, 42, 25, 12], 52),
2
)
def test_simple2(self):
self.assertEqual(
startRecordingAt([12, 22, 32, 42, 25, 12], 80),
3
)
if __name__ == '__main__':
unittest.main()