Introdução:
Em casa, temos um relógio que bate o valor indicado a cada hora, mas também que bate uma vez a cada meia hora. Então, de 0:01 até 12:00, ocorre nesta ordem:
1, 1, 1, 2, 1, 3, 1, 4, 1, 5, 1, 6, 1, 7, 1, 8, 1, 9, 1, 10, 1, 11, 1, 12
Desafio:
Dado um número inteiro n
, produza uma lista de prazos nos quais o total de ocorrências é igual a n
. Além disso, sempre inicie pelo menos 1 minuto antes desse período e termine pelo menos 1 minuto após esse período (e no máximo 29 minutos).
Por exemplo, se a entrada for n=8
, a saída poderá ser:
[00:59-03:01, 01:29-03:31, 02:59-04:01, 05:29-06:31, 06:29-07:01, 06:59-07:31, 07:59-08:01]
Para os quais esses prazos têm as seguintes somas, todas iguais 8
:
[1+1+2+1+3, 1+2+1+3+1, 3+1+4, 1+6+1, 1+7, 7+1, 8]
Regras do desafio:
- A saída é flexível. Você pode produzir como objetos Time (ou Date / DateTime), timestamps, strings (com ou sem zeros à esquerda), decimais com
.29
/.31
/.59
/.01
(ou seja, em0.29-3.01
vez de00:29-03:01
), etc. Desde que fique claro, é antes e depois do período .
Além disso, você pode escolher o valor você mesmo. Em todos os meus exemplos, uso 1 minuto, mas você também pode escolher 5 minutos, 15 minutos, etc. Isso também significa que você pode usar.4
/.6
/.9
/.1
(ou seja, em0.4-3.1
vez de00:24-03:06
) por exemplo. A lista também é flexível. Pode ser uma lista / coleção, matriz, sequência separada por delimitador, impressão por linha em STDOUT, etc.
Por favor, indique qual opção de saída você fez.Nota: Você não tem permissão para emitir as somas dos prazos como acima, isso é mencionado apenas como esclarecimento. Você deve gerar os prazos, incluindo um pouco antes e depois dele. - As greves envolvem de
12:00
para00:30
. Portanton=14
, se dois dos prazos são11:29-00:31
e11:59-01:01
. - A entrada estará no intervalo
1 <= n <= 90
, onde 90 é a soma total de todos os possíveis ataques. - Os prazos retornados podem estar em qualquer ordem.
Regras gerais:
- Isso é código-golfe , então a resposta mais curta em bytes vence.
Não permita que idiomas com código de golfe o desencorajem a postar respostas com idiomas que não sejam codegolf. Tente encontrar uma resposta o mais curta possível para 'qualquer' linguagem de programação. - As regras padrão se aplicam à sua resposta, para que você possa usar STDIN / STDOUT, funções / método com os parâmetros adequados e programas completos do tipo retorno. Sua chamada.
- As brechas padrão são proibidas.
- Se possível, adicione um link com um teste para o seu código.
- Além disso, adicione uma explicação, se necessário.
Casos de teste:
(todos usando 1 minuto antes / depois dos prazos e zeros à esquerda)
Input: 8
Ouput:
[00:59-03:01, 01:29-03:31, 02:59-04:01, 05:29-06:31, 06:29-07:01, 06:59-07:31, 07:59-08:01]
Input: 14
Output:
[00:29-04:01, 00:59-04:31, 02:59-05:01, 04:29-06:31, 05:59-07:01, 11:29-00:31, 11:59-01:01]
Input: 90
Output:
[00:29-00:01, 00:59-00:31, 01:29-01:01, 01:59-01:31, 02:29-02:01, 02:59-02:31, 03:29-03:01, 03:59-03:31, 04:29-04:01, 04:59-04:31, 05:29-05:01, 05:59-05:31, 06:29-06:01, 06:59-06:31, 07:29-07:01, 07:59-07:31, 08:29-08:01, 08:59-08:31, 09:29-09:01, 09:59-09:31, 10:29-10:01, 10:59-10:31, 11:29-11:01, 11:59-11:31]
Input: 1
Output:
[00:29-00:31, 00:59-01:01, 01:29-01:31, 02:29-02:31, 03:29-03:31, 04:29-04:31, 05:29-05:31, 06:29-06:31, 07:29-07:31, 08:29-08:31, 09:29-09:31, 10:29-10:31, 11:29-11:31]
Input: 2
Output:
[00:29-01:01, 00:59-01:31, 01:59-02:01]
.4
/ .6
/ .9
/ .1
é permitido (sendo 6 minutos como você declarou: :24
/ :36
/ :54
/ :06
).