diff --git a/src/ex1_triangles.py b/src/ex1_triangles.py index 9c54648..6e43a91 100644 --- a/src/ex1_triangles.py +++ b/src/ex1_triangles.py @@ -2,7 +2,7 @@ Question 1 - De fils en tapis 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 : diff --git a/src/ex2_tv.py b/src/ex2_tv.py new file mode 100644 index 0000000..da38e23 --- /dev/null +++ b/src/ex2_tv.py @@ -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 \ No newline at end of file diff --git a/tests/test_ex1.py b/tests/test_ex1.py index a3899c1..789961c 100644 --- a/tests/test_ex1.py +++ b/tests/test_ex1.py @@ -9,6 +9,7 @@ class MyTestCase(unittest.TestCase): countTriangles([(0, 1), (1, 2), (0, 2)]), 1 ) + def test_simple2(self): self.assertEqual( countTriangles([(2, 1), (1, 2), (2, 3)]), diff --git a/tests/test_ex2.py b/tests/test_ex2.py new file mode 100644 index 0000000..a4bf15b --- /dev/null +++ b/tests/test_ex2.py @@ -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()