Tenir compte une liste d'ensembles de plages de dates:Comment calculer « Outersections » à partir de jeux de plage de dates
A: [{2017/01/01, 2017/01/30},{2017/02/15, 2017/03/05},{2017/03/25, 2017/04/30}]
B: [{2017/01/01, 2017/01/30}]
C: [{2017/01/01, 2017/01/20},{2017/02/19, 2017/03/15}]
Yat-il un moyen efficace de calculer les intervalles « Outersection » (zone hachurée , sans intersections entre les plages de dates A, B, C)?
EDIT: @ kaidul-islam, merci pour votre réponse! J'ai simplifié la logique dans un for
et un if
:
...
for (i; i < n - 1; i++) {
var current := ranges[i];
var next := ranges[i + 1];
if (next.left > current.right) {
gap := next.left - right
if(gap > 0){
result.add(gap)
}
}
}
je raté quelque chose? PS: les plages sont triées par date de gauche et de droite.
Salut @ kaidul-islam –
Salut @ kaidul-islam, merci pour votre réponse! J'ai travaillé sur la logique, et j'ai obtenu ceci: ... pour (i; i current.right) { \t \t écart: = next.left - droit \t \t si (écart> 0) { \t \t \t result.add (gap) \t \t} \t} } J'ai raté quelque chose? –
Bonjour @DaniloSampaio De rien. Je ne sais vraiment pas javascript et cette question ne demandait que l'algorithme. Veuillez accepter la réponse et ouvrir une nouvelle question avec votre code essayé, mettez le lien et j'essaierai de répondre. Merci! –