added exercise 2
This commit is contained in:
parent
107c338abe
commit
84fde862e1
@ -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
35
src/ex2_tv.py
Normal 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
|
@ -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
21
tests/test_ex2.py
Normal 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()
|
Loading…
x
Reference in New Issue
Block a user