Introdução
Aqui na Alemanha, a decisão sobre horários de trabalho é muito rigorosa. Se você trabalha 6 ou mais horas por dia, deve fazer uma pausa de pelo menos 30 minutos. Se você trabalha 9 horas ou mais, precisa fazer uma pausa de 45 minutos. Se você trabalha menos de 6 horas, não precisa fazer intervalos.
É claro que você pode dividir essas pausas, mas cada parte deve ter pelo menos 15 minutos para ser contada.
O desafio
Neste desafio, você obterá uma lista de períodos de trabalho e precisará verificar se foram feitas pausas suficientes, usando as seguintes regras:
Seja w
o tempo de trabalho em horas:
w < 6 -> No breaks needed
6 <= w < 9 -> 30 minute break needed
w >= 9 -> 45 minute break needed
Além disso, cada intervalo deve ter pelo menos 15 minutos. Além disso, você sempre pode fazer mais pausas do que o necessário. Esses são todos os valores "pelo menos".
Entrada
Sua entrada será uma lista de períodos de trabalho. O formato exato é com você, mas deve conter apenas valores de tempo como horas e minutos.
Exemplo:
Formato aqui é uma lista de tuplas enquanto cada uma representa um período de trabalho. O primeiro elemento de uma tupla será o horário de início, o segundo será o horário de término.
[("07:00","12:00"),("12:30","15:30"),("15:45","17:15")]
Isso resulta em um tempo total de trabalho de 9,5 horas e um tempo total de pausa de 45 minutos.
Observe que esses períodos de trabalho não precisam ser separados por intervalos. Também pode haver períodos de trabalho que apenas se seguem (exemplo, veja casos de teste).
Observe também que as pausas não contam para o tempo de trabalho. Esses são dois valores separados.
Você pode assumir que os períodos de trabalho estão ordenados.
Resultado
Dada essa entrada, saída de um truthy valor se pausas suficientes foram tomadas e um Falsas valor se não.
Regras
- Especifique o formato de entrada que você está usando no seu envio.
- Você não precisa lidar com entradas vazias. Sempre haverá pelo menos um período de trabalho.
- Os períodos de trabalho duram apenas um dia, para que você não precise lidar com o trabalho durante a meia-noite.
- Data / Hora / Qualquer que seja o recurso permitido, desde que seja fornecido com o seu idioma.
- Função ou programa completo permitido.
- Regras padrão para entrada / saída.
- Aplicam-se brechas padrão .
- Isso é código-golfe , portanto, a menor contagem de bytes vence. O desempate é uma submissão anterior.
Casos de teste
Mesmo formato de entrada que no exemplo acima.
[("07:00", "12:00"), ("12:30", "15:30"), ("15:45", "17:15")] -> TRUE // 9: 30h de trabalho, 45 minutos de intervalo -> OK [("07:20", "07:45"), ("07:59", "11:30"), ("11:55", "15:00")] -> FALSO // 7: 01h de trabalho, 39 minutos de intervalo, mas o primeiro intervalo não conta porque <15 minutos [("06:00", "09:00"), ("09:00", "11:50")] -> VERDADEIRO // Apenas 5: 50h de trabalho, portanto, não é necessário interromper [("07:30", "12:00"), ("12:30", "16:00")] -> VERDADEIRO // 8h de trabalho, 30 minutos de intervalo -> OK [("08:00", "12:30"), ("13:05", "17:45")] -> FALSO // 9: 10h de trabalho, apenas 35 minutos de pausa em vez dos necessários 45 [("08:00", "14:00")] -> FALSO // 6h de trabalho, sem interrupções, mas são necessários 30 minutos
Feliz codificação!
fonte