Entrada:
Um Data (contendo dd
, MM
e yyyy
). Um objeto de data ou três inteiros separados também são válidos como entrada.
Resultado:
Cada parte ( dd
, MM
e yyyy
) revertida individualmente e depois arredondada para a data válida mais próxima.
Por exemplo (no formato dd-MM-yyyy
):
21-10-2016
torna - se12-01-6102
Regras do desafio:
- Apenas
dd
,MM
,yyyy
é válida, mas a ordem e que separam-símbolos que você usa é a sua própria escolha.
Então, esses são alguns exemplos de formato válidos:dd-MM-yyyy
;MM/dd/yyyy
;yyyy MM dd
;ddMMyyyy
, Etc.
E estes são alguns exemplos de formato inválidos:dd MMM yyyy
;dd-MM-'yy
; etc. - Você também pode optar por inserir apenas um objeto Date se o seu idioma suportar ou três parâmetros inteiros separados, em vez da string que representa uma data.
- Indique qual formato de data você usou! (E a entrada e a saída devem estar no mesmo formato.) Também é permitido gerar um objeto Date, desde que ele possa lidar com todos os casos de teste e a regra de desafio abaixo.
- A transição do calendário juliano para o gregoriano é ignorada para esse desafio. Portanto,
1582
é apenas um ano invertido válido para2851
.
Consulte Informações / dicas do desafio para todos os anos, meses e dias válidos. - Como você não pode ter fevereiro como revertido em qualquer outro mês, não precisa se preocupar com anos bissextos.
Todos os anos, meses e dias revertidos:
- O ano sempre pode ser revertido sem problemas, passando de 0001 (revertido de
1000
) a 9999 (permanece9999
). (Portanto,0000
não é uma entrada válida e também não há casos de teste.) - Os únicos meses que você reverterá são: janeiro (revertido de outubro /
10
); Outubro (revertido de janeiro /01
); Novembro (permanece novembro /11
); e dezembro (revertido a cada dois meses /02
-09
,12
). - Os únicos dias que você terá revertido são: 01 (revertido de
10
), 02 (revertido de20
), 03 (revertido de30
), 10 (revertido de01
), 11 ( revertido de ), 11 (permanece11
), 12 (revertido de21
), 13 (revertido de31
) , 20 (revertido de02
), 21 (revertido de12
), 22 (restante22
), 30 (revertido de03
ou o mesmo que 31 de novembro!), 31 (revertido de04
-09
/13
-19
/23
-29
).
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 declarações de retorno / saída, programas completos. 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 ( dd-MM-yyyy
como formato):
21-07-2016 -> 12-12-6102
12-11-1991 -> 21-11-1991
01-01-2000 -> 10-10-0002
27-08-1875 -> 31-12-5781
18-12-2010 -> 31-12-0102
13-01-1981 -> 31-10-1891
04-11-1671 -> 30-11-1761 // Semi-tricky case, since November has 30 days
28-11-2036 -> 30-11-6302 // Semi-tricky case, since November has 30 days
14-06-1855 -> 31-12-5581
30-10-9999 -> 03-01-9999
01-01-2851 -> 10-10-1582
70
, com o ano aumentando.
10-10-2
saída é válida no terceiro caso?
21-07-2016
é revertido12-70-6102
e arredondado para12-12-6102
. Não tenho certeza como você obter o resultado##-10-6107
..