Entrada:
Um Data (contendo dd, MMe yyyy). Um objeto de data ou três inteiros separados também são válidos como entrada.
Resultado:
Cada parte ( dd, MMe yyyy) revertida individualmente e depois arredondada para a data válida mais próxima.
Por exemplo (no formato dd-MM-yyyy):
21-10-2016torna - 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,0000nã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 de03ou 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-yyyycomo 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-2saída é válida no terceiro caso?
21-07-2016é revertido12-70-6102e arredondado para12-12-6102. Não tenho certeza como você obter o resultado##-10-6107..