added exercise 2
This commit is contained in:
parent
107c338abe
commit
84fde862e1
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)]),
|
||||
1
|
||||
)
|
||||
|
||||
def test_simple2(self):
|
||||
self.assertEqual(
|
||||
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