Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /**
- * Permet de trouver le prochain groupe de Slice ayant moins de `maxDelta` de différence entre son premier et dernier élément.
- * Par défaut, `maxDelta` vaut 36, ce qui correspond à une fenêtre de 3 heures (180' / 5').
- *
- * @param slices Les slices dont on veut récupérer le prochain groupe
- * @param maxDelta La différence maximale entre le premier et dernier Slice du groupe
- * @return Un groupe de Slice ayant une différence maximale de `maxDelta` entre le premier et dernier élément du groupe.
- */
- def nextSliceGroup(slices: List[Long], maxDelta: Long = 36): List[Long] = {
- def nextSliceGroupeInner(slices: List[Long], delta: Long, start_slice: Long): List[Long] = {
- if (slices.isEmpty || slices.head - start_slice > delta) List()
- else slices.head :: nextSliceGroupeInner(slices.tail, delta, start_slice)
- }
- nextSliceGroupeInner(slices, maxDelta, slices.head)
- }
- /**
- * Créé une liste 2D de groupes de Slice ayant moins de `maxDelta` de différence entre leur premier et dernier élément.
- *
- * @param slices Les slices dont on veut récupérer la liste de groupes
- * @param maxDelta la différence maximale entre le premier dernier Slice de chaque groupe
- * @return Une liste de groupe de Slice ayant une différence maximale de `maxDelta` entre leur premier et dernier éléments.
- */
- def sliceGroups(slices: List[Long], maxDelta: Long = 36): List[List[Long]] = {
- def sliceGroupsInner(slices: List[Long]): List[List[Long]] = {
- if (slices.isEmpty) List()
- else {
- val group = nextSliceGroup(slices, maxDelta)
- group :: sliceGroupsInner(slices.diff(group))
- }
- }
- sliceGroupsInner(slices)
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement