
Muchas personas cuyo horario de trabajo es cambiante. El problema con este horario es la dificultad de calcular rápidamente para cualquier fecha qué día es: trabajo o día libre. Hay muchos servicios en línea para calcular un horario de turnos, pero es aún más fácil hacer esto en su mente. Este artículo considerará el algoritmo de cálculo en mente para cualquier horario de turnos.
Como en el artículo
"Cálculo del día de la semana en la mente", el algoritmo se basará en el sesgo de los meses.
El artículo considerará el horario de trabajo 3/3. Es decir La "semana" en nuestro caso durará 6 días:
1 2 3 1 2 3
Lo más importante es no cometer un error al calcular la compensación para el primer mes del año. Todos los meses siguientes dependerán de esto.
Por ejemplo, que el primer día hábil del año sea el 2 de enero, es decir, 2, 3 y 4 de enero - trabajadores, respectivamente, 5, 6, 7 - días libres.
En mi caso fue así31 de diciembre - Día de trabajo 1
3 de enero - Día laboral 2
4 de enero - Día laboral 3
Por lo tanto, para simplificar los cálculos, suponga que el 2, 3 y 4 de enero son días hábiles.
Esto es importante para calcular el sesgo de enero.
De lo anterior, obtenemos el calendario para enero:

donde las células verdes son de lunes a viernes, las células rojas son los fines de semana.
El número de días seguidos es igual al número de días en nuestra "semana", en nuestro ejemplo es 6.
1 de enero - Día libre 3;
2 de enero - Día laboral 1 (comienzo de la "semana").
Antes del primer día del mes hay 5 celdas amarillas vacías, lo que significa que la compensación para enero en nuestro caso será de 5.
Continuando, obtenemos el calendario para febrero (año no bisiesto):

Como puede ver, la compensación para febrero es 0, porque el mes comienza el primer día hábil.
Siguiente para marzo:

La compensación para marzo es 4 y para abril - 5, porque el primero de abril cae en el sexto día de la "semana", y habrá 5 casillas vacías frente a ella.
Luego contamos hasta el mes que necesitamos.
En mi caso, las compensaciones para los primeros 6 meses serán:
5, 0, 4, 5, 5, 5: enero, febrero, marzo, abril, mayo y junio. Recuerde que 6 dígitos no es difícil.
Para calcular si es un día hábil o un día libre, debe agregar el desplazamiento del mes a la fecha y encontrar el resto de la división por la duración de la "semana":
$$ display $$ Restain = (fecha + desplazamiento \; mes) \% (duración \; "semanas") $$ display $$
Dependiendo del saldo, determine el día:
1, 2 y 3 - días hábiles
4, 5 y 0 - fines de semana
Por ejemplo, para el 23 de febrero: 23 (fecha) + 0 (desplazamiento de febrero) = 23. El resto 23% 6 = 5, este es el segundo día libre.
Para el 8 de marzo: 8 (fecha) + 4 (turno para marzo) = 12. 12% 6 = 0. Esto significa que el 8 de marzo es el último día libre, el 9 de marzo para trabajar.
Otro ejemplo para fijar:
22 de abril + 5 (compensación para abril) = 27, el resto de la división entre 6 es 3, el último día hábil.
La desventaja del algoritmo es la violación del horario después de las vacaciones: la tabla de compensación debe ser recalculada o tomar vacaciones para que no se viole el horario. Por ejemplo, si se toma unas vacaciones después de 3 días hábiles por
“el número de días hábiles consecutivos” * “número impar” de días (3, 9, 15, 21 días de vacaciones), no se violará el cronograma discutido en el artículo.
Con este algoritmo, puede calcular cualquier día en su mente en pocos segundos, sin calendarios ni servicios en línea.