Algorithmie : le chevauchement de plages horaires

Publié le 2025-03-25 par DarkChyper

L'engagement à produire des articles mieux structurés et plus documentés présente un défi : ils demandent beaucoup plus de temps à rédiger. Cela est d'autant plus vrai lorsqu'on souhaite illustrer des concepts techniques avec un code propre et fonctionnel, surtout si l'on est un peu trop perfectionniste.

En attendant voic un petit article rapide, un minuscule extrait du code qui arrive prochainement.

Comment vérifier simplement que deux plages horaires ne se chevauchent pas ? Vous ne vous êtes peut-être jamais posé la question, pourtant ce problème est omniprésent : réservation de salles, gestion du temps, etc.

Imaginons une première plage horaire allant de A à B, et une seconde de C à D. En écartant les cas où A et C sont égaux, ainsi que ceux où B et D le sont également, il reste six possibilités. Comme on dit, une image vaut mieux que mille mots. Voici un schéma illustrant ces six possibilités :


Un schema representant 6 couples de plages horaires, 4 se chevauchent, les deux dernier ne se chevauchent pas.


Avec ce schéma on peut se rendre compte que deux plages horaires se chevauchent si ces deux conditions sont strictements vraies :


Ce qui donnerait en code PHP :

 PHP

<?php class TimeRange { private $start; private $end; public function __construct($start, $end) { $this->start = $start; $this->end = $end; } public function overlapsWith(TimeRange $other) { return $this->start < $other->end && $this->end > $other->start; } } // Example usage: $range1 = new TimeRange(10, 20); $range2 = new TimeRange(15, 25); if ($range1->overlapsWith($range2)) { echo "The time ranges overlap."; } else { echo "The time ranges do not overlap."; } ?>