„A legritkábban előforduló szünetminta”- elvén működő szünetbeosztó algoritmus

Szünetmátrix

Legyen N db szünetmintánk (egymástól lényegesen eltérőek). Az egyszerűség kedvéért színeket rendeljünk az egyes mintákhoz. (piros, kék, sárga, zöld…)

Egy új még szünet nélküli műszak gerenda színét szeretnénk meghatározni, úgy hogy a csoportjába tartozó k db gerendának már van színe. A vezérlő elv: Az új gerenda színe legyen a gerenda időintervallumában legritkábban előforduló szín. Ehhez a többi már kiszínezett gerenda azon részeit (ami lehet az egész gerenda is, ha közös kezdésűek) vesszük figyelembe, amelyek a színezendő új gerenda időintervallumába esnek (eleje és vége közé). Megszámoljuk, hogy hány db időatomú rész (pl. 10 perces) milyen színnel van reprezentálva. Ezeket színek szerint összesítjük és a legkisebb végösszegű szín lesz a keresett új szín. Ha több ilyen is van (főleg a beosztás elején fordulhat ez elő), akkor véletlen szám generátorral kisorsoljuk a keresett színt. Ez az ebédidők diverzifikálása szempontjából hasznos. Tehát ha pl. az első gerenda szünetei minden óra 10-20-ig tartanak, akkor a második gerenda ne feltétlenül a 20-30 mintájú legyen, hanem pl. lehet a 40-50 is!

A hosszú vagy „ebédszünet” idejét a következő definíció jelöli ki:

Megadható külön a délelőttös/délutános műszakokhoz egy-egy időpont, amelyhez „legközelebbi” rövid szünetet hosszabbítjuk meg a végidőpont kitolásával. A legközelebbi rövid szünet nem lehet a műszak sem első sem utolsó szünete. A délelőttös-délutános műszak csoportosítás választó időpontja, valamint az ezekhez tartozó hosszú szünet középérték időpont szabálytípusonként adható meg.

A fejlesztendő JavaScript függvénynek meg kell kapnia a szünetcsoport már beosztott gerendáinak elejét, hosszát és színét, valamint a beosztandó új gerenda elejét és hosszát. A függvény eredményül az új gerenda színét adja meg.