NOTA: Como eu sou holandês, todas as datas estão no dd-MM-yyyy
formato holandês na descrição do desafio e nos casos de teste.
Desafio:
Entradas:
Data de início ; Data final ; Dígito
Saídas:
todas as datas dentro do intervalo (incluindo nos dois lados), que contêm quantidade de dígitos únicos na data.
Exemplo:
Entradas: Data de início: 12-11-1991
; Fim: 02-02-1992
; Dígito:4
Saídas:
Com 0s iniciais por dias / meses:
[20-11-1991, 23-11-1991, 24-11-1991, 25-11-1991, 26-11-1991, 27-11-1991, 28-11-1991, 30-11-1991, 01-12-1991, 02-12-1991, 09-12-1991, 10-12-1991, 13-12-1991, 14-12-1991, 15-12-1991, 16-12-1991, 17-12-1991, 18-12-1991, 20-12-1991, 23-12-1991, 24-12-1991, 25-12-1991, 26-12-1991, 27-12-1991, 28-12-1991, 31-12-1991, 01-01-1992, 02-01-1992, 09-01-1992, 10-01-1992, 11-01-1992, 12-01-1992, 19-01-1992, 20-01-1992, 21-01-1992, 22-01-1992, 29-01-1992, 01-02-1992, 02-02-1992]
Sem 0s iniciais por dias / meses:
[20-11-1991, 23-11-1991, 24-11-1991, 25-11-1991, 26-11-1991, 27-11-1991, 28-11-1991, 30-11-1991, 3-12-1991, 4-12-1991, 5-12-1991, 6-12-1991, 7-12-1991, 8-12-1991, 10-12-1991, 13-12-1991, 14-12-1991, 15-12-1991, 16-12-1991, 17-12-1991, 18-12-1991, 20-12-1991, 23-12-1991, 24-12-1991, 25-12-1991, 26-12-1991, 27-12-1991, 28-12-1991, 31-12-1991, 3-1-1992, 4-1-1992, 5-1-1992, 6-1-1992, 7-1-1992, 8-1-1992, 10-1-1992, 13-1-1992, 14-1-1992, 15-1-1992, 16-1-1992, 17-1-1992, 18-1-1992, 20-1-1992, 23-1-1992, 24-1-1992, 25-1-1992, 26-1-1992, 27-1-1992, 28-1-1992, 31-1-1992]
Regras do desafio:
- As datas de entrada e saída podem estar em qualquer formato razoável (data). Pode ser uma string em qualquer
dMy
formato (incluindo separadores opcionais), lista de três números inteiros, o objeto Date do idioma nativo etc. A saída pode ser uma lista / matriz / fluxo, impressa em STDOUT, uma única String delimitada, etc. - Você tem permissão para incluir ou excluir 0s iniciais por dias / meses em suas saídas. Especifique qual dos dois você usa em sua resposta , pois isso causará resultados diferentes. Ou seja,
1-1-1991
tem 2 dígitos únicos, mas01-01-1991
com 3 dígitos únicos. - Você não precisa lidar com anos bissextos e diferenças de calendários gregoriano x juliano. Você pode supor que os intervalos de datas fornecidos nos casos de teste nunca ultrapassem 28 de fevereiro / 1º de março nos anos divisíveis por 4.
- É garantido que o dígito de entrada está no intervalo , portanto, lidar com não é especificado (retornar uma lista vazia seria mais razoável, mas fornecer um erro ou resultado incorreto também é bom; você venceu tem que lidar com essa entrada).
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 com as regras de E / S padrão , 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 (ou seja, TIO ).
- Além disso, é altamente recomendável adicionar uma explicação para sua resposta.
Casos de teste:
Inputs: [12-11-1991, 02-02-1992], 4
Outputs with leading 0s: [20-11-1991, 23-11-1991, 24-11-1991, 25-11-1991, 26-11-1991, 27-11-1991, 28-11-1991, 30-11-1991, 01-12-1991, 02-12-1991, 09-12-1991, 10-12-1991, 13-12-1991, 14-12-1991, 15-12-1991, 16-12-1991, 17-12-1991, 18-12-1991, 20-12-1991, 23-12-1991, 24-12-1991, 25-12-1991, 26-12-1991, 27-12-1991, 28-12-1991, 31-12-1991, 01-01-1992, 02-01-1992, 09-01-1992, 10-01-1992, 11-01-1992, 12-01-1992, 19-01-1992, 20-01-1992, 21-01-1992, 22-01-1992, 29-01-1992, 01-02-1992, 02-02-1992]
Outputs without leading 0s: [20-11-1991, 23-11-1991, 24-11-1991, 25-11-1991, 26-11-1991, 27-11-1991, 28-11-1991, 30-11-1991, 3-12-1991, 4-12-1991, 5-12-1991, 6-12-1991, 7-12-1991, 8-12-1991, 10-12-1991, 13-12-1991, 14-12-1991, 15-12-1991, 16-12-1991, 17-12-1991, 18-12-1991, 20-12-1991, 23-12-1991, 24-12-1991, 25-12-1991, 26-12-1991, 27-12-1991, 28-12-1991, 31-12-1991, 3-1-1992, 4-1-1992, 5-1-1992, 6-1-1992, 7-1-1992, 8-1-1992, 10-1-1992, 13-1-1992, 14-1-1992, 15-1-1992, 16-1-1992, 17-1-1992, 18-1-1992, 20-1-1992, 23-1-1992, 24-1-1992, 25-1-1992, 26-1-1992, 27-1-1992, 28-1-1992, 31-1-1992]
Inputs: [19-09-2019, 30-09-2019], 5
Outputs (same with and without leading 0s): [23-09-2019, 24-09-2019, 25-09-2019, 26-09-2019, 27-09-2019, 28-09-2019, 30-09-2019]
Inputs: [19-09-2019, 30-09-2019], 8
Output (same with and without leading 0s): []
Inputs: [20-06-1749, 30-06-1749], 8
Outputs with leading 0s: [23-06-1749, 25-06-1749, 28-06-1749]
Outputs without leading 0s: []
Inputs: [10-12-1969, 12-01-1970], 6
Outputs (same with and without leading 0s): [30-12-1969]
Inputs: [10-12-1969, 12-01-1970], 5
Outputs with leading 0s: [10-12-1969, 13-12-1969, 14-12-1969, 15-12-1969, 17-12-1969, 18-12-1969, 20-12-1969, 23-12-1969, 24-12-1969, 25-12-1969, 27-12-1969, 28-12-1969, 31-12-1969, 02-01-1970, 03-01-1970, 04-01-1970, 05-01-1970, 06-01-1970, 08-01-1970, 12-01-1970]
Outputs without leading 0s: [10-12-1969, 13-12-1969, 14-12-1969, 15-12-1969, 17-12-1969, 18-12-1969, 20-12-1969, 23-12-1969, 24-12-1969, 25-12-1969, 27-12-1969, 28-12-1969, 31-12-1969, 2-1-1970, 3-1-1970, 4-1-1970, 5-1-1970, 6-1-1970, 8-1-1970, 12-1-1970]
Inputs: [11-11-1111, 11-11-1111], 1
Output (same with and without leading 0s): [11-11-1111]
YYYY-MM-DDThh:mm:ss.mmm +hh:mm
:, + hh: mm sendo a hora local do seu local de trabalho em relação ao UTC.)Respostas:
Japonês , 23 bytes
Toma as entradas de data como carimbos de data e hora do Unix, produz uma matriz de seqüências de caracteres com formatação e
0
s principais dependendo do seu código do idioma. Seria 1 byte menor no Japt v2, mas parece haver um erro ao converterDate
objetos em strings.Tente
fonte
R , 81 bytes
Experimente online!
Usa o formato de data nativo de R e possui zeros à esquerda no dia e no mês.
fonte
Vermelho , 93 bytes
Experimente online!
Sem 0s iniciais por dias / meses.
Pena que Red converte internamente
09-10-2019
em9-Oct-2019
- é por isso que preciso extrair o dia / mês / ano individualmente.fonte
-=+*<>?!~&
, é por isso que um espaço em branco (ou(...)[...]"..."
) é necessário.Python 3.8 (pré-lançamento) , 84 bytes
-6 bytes graças a Gloweye
Uma função sem nome que retorna uma lista de cadeias (contando / incluindo zeros à esquerda) que aceita três argumentos:
s
, o começo - umdatetime.date
objeto;e
, o fim - umdatetime.date
objeto; en
, o número de dias - umint
objeto.Experimente online!
Nota: Como a função aceita
datetime.date
objetos, eu não contei o código de importação para isso (e trabalhei na importação dodatetime.timedelta
objeto, pois ele é indiretamente acessível via subtração desses objetos de entrada).fonte
type(obj)
é 3 bytes menor queobj.__class__
.__class__
e fiz um comentário rápido. Sempre feliz em ajudar.JavaScript (ES6), 91 bytes
Recebe entrada como
(n)(end)(start)
, onde as datas são esperadas como carimbos de data e hora do Unix em milissegundos. Retorna uma lista de datas separada por espaço no formatoyyyy-mm-dd
.Os 0s principais estão incluídos.
Experimente online!
fonte
PHP , 90 bytes
Experimente online!
Isso ocorre com os principais 0s. As entradas são argumentos de comando (
$argv
) e as datas são carimbos de data e hora do Unix em dias (basicamente segundos padrão / 86400), usei esse formato porque não precisamos do tempo neste desafio e isso me permitiu obter mais um byte. Mantém a adição de um dia para começar até que se atinge o fim e imprime quaisquer datas com$n
dígitos únicas em que, separados por_
emYmd
formato.Também possui uma alternativa de 89 bytes que imprime as datas para saída no mesmo formato da entrada (registros de data e hora do Unix em dias).
fonte
Java (JDK) , 86 bytes
Experimente online!
Eu escolhi usar
0
s principais .Créditos
fonte
datesUntil
por 103 bytes . ;) Boa resposta. Não vejo nada que possa ser jogado pessoalmente..plusDays(1)
e remover a.forEach(System.out::println)
resposta, e é uma resposta muito positiva porque, como você escreveu, as datas podem ser retornadas, pois objetos e fluxos de valor são permitidos. ;-) Eu não tinha ideia de quedatesUntil
existia! Obrigado por isso :-)Rubi
-rdate
, 54 bytesLeva 2 Data objetos e um número como entrada e retorna uma lista de objetos Date como saída. Lida com anos bissextos e usa zeros à esquerda.
Experimente online!
fonte
C # (compilador interativo do Visual C #)
Sem 0s,
104, 103 bytes à esquerdaExperimente online!
Com 0s iniciais,
106105 bytesExperimente online!
fonte
x =>$"
em ambas as versões para -1. :)Kotlin, 119 bytes
Sem 0s iniciais, recebe dois
java.time.LocalDate
e aLong
, retorna aStream
deLocalDate
sfonte
it.toString()
por(it+"")
para salvar alguns bytes? Eu sei que isso é possível em algumas outras linguagens como Java ou .NET C #.