
Beaucoup de gens dont l'horaire de travail est variable. Le problème avec cet horaire est la difficulté de calculer rapidement pour n'importe quelle date quel jour il s'agit: travail ou jour de congé. Il existe de nombreux services en ligne pour calculer un horaire de travail, mais il est encore plus facile de le faire dans votre esprit. Cet article considérera l'algorithme de calcul à l'esprit pour tout horaire de quart.
Comme dans l'article
«Calcul du jour de la semaine dans l'esprit», l' algorithme sera basé sur le biais des mois.
L'article examinera le calendrier de travail 3/3. C'est-à-dire La "semaine" dans notre cas durera 6 jours:
1 2 3 1 2 3
Le plus important est de ne pas se tromper lors du calcul de l'offset pour le premier mois de l'année. Tous les mois suivants en dépendront.
Par exemple, que le premier jour ouvrable de l'année soit le 2 janvier, c'est-à-dire 2, 3 et 4 janvier - travailleurs, respectivement, 5, 6, 7 - jours de congé.
Dans mon cas, c'était comme ça31 décembre - Jour ouvrable 1
3 janvier - Journée de travail 2
4 janvier - Journée de travail 3
Par conséquent, pour simplifier les calculs, supposons que les 2, 3 et 4 janvier soient des jours ouvrables.
Ceci est important pour calculer le biais pour janvier.
De ce qui précède, nous obtenons le calendrier pour janvier:

où les cellules vertes sont les jours de la semaine, les globules rouges sont les week-ends.
Le nombre de jours consécutifs est égal au nombre de jours de notre «semaine», dans notre exemple, il est de 6.
1er janvier - Jour de congé 3;
2 janvier - Journée de travail 1 (début de la "semaine").
Avant le premier jour du mois, il y a 5 cellules jaunes vides, ce qui signifie que le décalage pour janvier dans notre cas sera de 5.
En continuant, nous obtenons le calendrier de février (année non bissextile):

comme vous pouvez le voir, le décalage pour février est 0, car le mois commence le premier jour ouvrable.
Prochain pour mars:

Le décalage pour mars est de 4 et pour avril, il est de 5, car le premier avril tombe le 6e jour de la «semaine», et il y aura 5 cases vides devant lui.
Ensuite, nous comptons sur le mois dont nous avons besoin.
Dans mon cas, les compensations pour les 6 premiers mois seront:
5, 0, 4, 5, 5, 5 - janvier, février, mars, avril, mai et juin. N'oubliez pas que 6 chiffres n'est pas difficile.
Pour calculer s'il s'agit d'un jour ouvrable ou d'un jour de congé, vous devez ajouter le décalage du mois à la date et trouver le reste de la division par la durée de la "semaine":
$$ afficher $$ Rester = (date + décalage \; mois) \% (durée \; "semaines") $$ afficher $$
En fonction du solde, déterminez le jour:
1, 2 et 3 - jours ouvrables
4, 5 et 0 - week-end
Par exemple, pour le 23 février: 23 (date) + 0 (décalage de février) = 23. Le reste 23% 6 = 5, c'est le deuxième jour de congé.
Pour le 8 mars: 8 (date) + 4 (quart de travail pour mars) = 12. 12% 6 = 0. Cela signifie que le 8 mars est le dernier jour de congé, le 9 mars pour travailler.
Un autre exemple à épingler:
22 + 5 avril (compensé pour avril) = 27, le reste de la division par 6 est 3 - le dernier jour ouvrable.
L'inconvénient de l'algorithme est la violation du planning après les vacances: la table de décalage doit être recalculée ou prendre des vacances pour que le planning ne soit pas violé. Par exemple, si vous prenez des vacances après 3 jours ouvrables pour
«le nombre de jours ouvrables consécutifs» * «nombre impair» de jours (3, 9, 15, 21 jours de vacances), le calendrier décrit dans l'article ne sera pas violé.
En utilisant cet algorithme, vous pouvez calculer n'importe quel jour dans votre esprit en quelques secondes, sans calendriers ni services en ligne.