Tengo un colega en el trabajo que trabaja desde casa todos los martes y jueves. Alrededor de las 8:00 a.m., nos envía un mensaje con el siguiente texto:
Hola hoy estoy trabajando desde casa
Para liberarlo de la carga de hacer esto todos los días que se queda en casa, nos gustaría automatizar esta tarea para él.
El reto
Escriba en el menor número de bytes posible un código que:
- Recibe la hora actual: su código puede recibir valores para el año actual, mes (1-12), día del mes (1-31), hora (0-23) y minuto (0-59) y el día de la semana (puede elegir si este número comienza desde 0 o 1, y si 0/1 significa domingo, lunes o cualquier otro día); alternativamente, puede recibir una estructura tal como
Date
,DateTime
,Calendar
o cualquier otra estructura relacionada con el tiempo, si el idioma lo permita. También puede recibir una cadena con la fechayyyyMMddHHmm
si lo desea, o dos cadenas separadas para la fecha y la hora, y luego un número entero con el día de la semana. Sentirse libre. - Devuelve dos valores de verdad y falsa coherentes , lo que indica si el mensaje debe enviarse al chat de trabajo o no.
Reglas
- Se supone que este código se invoca periódicamente. La periodicidad exacta es irrelevante, no obstante.
- El valor verdadero debe devolverse si el día de la semana es martes o jueves y la hora es a las 8:00 a.m. con un margen de error de 10 minutos (de 7:50 a 8:10 inclusive).
- El valor verdadero debe enviarse solo si es la primera vez que se invoca el código entre esas horas para el día especificado. No queremos que el bot envíe el mismo mensaje varias veces seguidas. La forma en que maneje esta restricción dependerá completamente de usted.
- Su código puede ser un programa independiente ejecutado repetidamente o puede ser parte de un código más grande que siempre se está ejecutando. Tu elección.
- Puede suponer que no habrá reinicios entre las ejecuciones del código.
- Puede suponer que la fecha siempre será correcta.
- Se alientan las explicaciones sobre su código y específicamente sobre el método utilizado para lograr la persistencia.
Ejemplos
(Week starts on Monday: 1, the following invokations will be made in succession)
2018,08,27,08,00,1 = falsey (not Tuesday or Thursday)
2018,08,28,07,45,2 = falsey (out of hours)
2018,08,28,07,55,2 = truthy (first time invoked this day at the proper hours)
2018,08,28,08,05,2 = falsey (second time invoked this day at the proper hours)
2018,08,28,08,15,2 = falsey (out of hours)
2018,08,29,08,00,3 = falsey (not Tuesday or Thursday)
2018,08,29,18,00,3 = falsey (not Tuesday or Thursday)
2018,08,30,07,49,4 = falsey (out of hours)
2018,08,30,07,50,4 = truthy (first time invoked this day at the proper hours)
2018,08,30,07,50,4 = falsey (second time invoked this day at the proper hours)
2018,08,30,08,10,4 = falsey (third time invoked this day at the proper hours)
2018,08,30,08,11,4 = falsey (out of hours)
2018,09,04,08,10,2 = truthy (first time invoked this day at the proper hours)
Este es el código de golf , ¡así que puede ganar el código más corto para cada idioma!
YYYYmmdd
y la hora también HHss
?