
Muitas pessoas cujo horário de trabalho é variável. O problema desse cronograma é a dificuldade de calcular rapidamente para qualquer data em que dia é: trabalho ou dia de folga. Existem muitos serviços online para calcular uma programação de turnos, mas é ainda mais fácil fazer isso em sua mente. Este artigo considerará o algoritmo de cálculo em mente para qualquer agendamento de turno.
Como no artigo
“Calculando o dia da semana na mente”, o algoritmo será baseado no viés dos meses.
O artigo considerará o cronograma de trabalho 3/3. I.e. "Semana" no nosso caso durará 6 dias:
1 2 3 1 2 3
O mais importante é não cometer erros ao calcular o deslocamento para o primeiro mês do ano. Todos os meses subsequentes dependerão disso.
Por exemplo, que o primeiro dia útil do ano seja 2 de janeiro, ou seja, 2, 3 e 4 de janeiro - trabalhadores, respectivamente, 5, 6, 7 - dias de folga.
No meu caso, foi assim31 de dezembro - dia útil 1
3 de janeiro - dia útil 2
4 de janeiro - jornada 3
Portanto, para simplificar os cálculos, suponha que os dias 2, 3 e 4 de janeiro sejam dias úteis.
Isso é importante para calcular o viés de janeiro.
Pelo exposto, obtemos o calendário para janeiro:

onde as células verdes são dias da semana, as células vermelhas são fins de semana.
O número de dias seguidos é igual ao número de dias da nossa "semana", no nosso exemplo é 6.
1º de janeiro - dia 3 de folga;
2 de janeiro - Dia útil 1 (início da "semana").
Antes do primeiro dia do mês, existem 5 células amarelas vazias, o que significa que a compensação para janeiro no nosso caso será 5.
Continuando, temos o calendário para fevereiro (ano não bissexto):

como você pode ver, o deslocamento para fevereiro é 0, porque o mês começa no primeiro dia útil.
Em março próximo:

A diferença para março é 4 e para abril - 5, porque o primeiro de abril cai no 6º dia da "semana" e haverá 5 quadrados vazios à sua frente.
Então, contamos o mês que precisamos.
No meu caso, as compensações para os primeiros 6 meses serão:
5, 0, 4, 5, 5, 5 - janeiro, fevereiro, março, abril, maio e junho. Lembre-se de 6 dígitos não é difícil.
Para calcular se é um dia útil ou um dia de folga, você precisa adicionar o deslocamento do mês à data e encontrar o restante da divisão pela duração da "semana":
$$ display $$ Restante = (data + deslocamento \; mês) \% (duração \; "semanas") $$ display $$
Dependendo da balança, determine o dia:
1, 2 e 3 - dias úteis
4, 5 e 0 - fins de semana
Por exemplo, para 23: 23 de fevereiro (data) + 0 (deslocamento de fevereiro) = 23. O restante 23% 6 = 5, este é o segundo dia de folga.
Para 8: 8 de março (data) + 4 (turno para março) = 12. 12% 6 = 0. Isso significa que 8 de março é o último dia de folga, 9 de março para trabalhar.
Outro exemplo a ser fixado:
22 de abril + 5 (deslocamento para abril) = 27, o restante da divisão por 6 é 3 - o último dia útil.
A desvantagem do algoritmo é uma violação do agendamento após as férias: a tabela de deslocamento deve ser recalculada ou tirar férias de forma que o agendamento não seja violado. Por exemplo, se você tirar férias após três dias úteis por
"o número de dias úteis consecutivos" * "número ímpar" de dias (3, 9, 15, 21 dias de férias), a programação discutida no artigo não será violada.
Usando esse algoritmo, você pode calcular qualquer dia em sua mente em alguns segundos, sem calendários ou serviços online.