A ordem de formatação das datas é uma das questões mais complexas e divisivas que o mundo enfrenta atualmente. Alguns de nós argumentam veementemente que Mês / Dia / Ano é apropriado, considerando que é assim que dizemos datas em voz alta. Outros proclamam em voz alta que Dia / Mês / Ano é o melhor, porque coloca os termos em ordem crescente da duração que representam.
Já é suficiente. Os computadores podem resolver essa disputa de maneira simples e justa. Seu código, uma função ou programa completo, terá uma sequência de datas delimitada por barras, por exemplo 12/1/2015
. Observe que este é o formato exato, sem zeros à esquerda e com um ano de quatro dígitos no final.
- Se for definitivamente Mês / Dia / Ano, por exemplo
10/31/1998
, produza uma representação de texto dessa data neste formato exato, com o nome completo do mês, dia e ano:October 31, 1998
- Se é definitivamente Dia / Mês / Ano, por exemplo
25/12/1989
, a saída do mesmo tipo de representação de texto:December 25, 1989
. - Se for ambíguo, seja Mês / Dia / Ano ou Dia / Mês / Ano, produza uma data que resolva a ambiguidade combinando as duas datas possíveis da seguinte maneira:
- Criar um novo nome do mês, tendo a primeira metade do nome do anteriormente mês e anexar a segunda metade da tarde mês. Por meses com duração ímpar, a primeira metade recebe a letra extra. Para ser explícito, as primeiras metades dos meses são
Janu
,Febr
,Mar
,Apr
,Ma
,Ju
,Ju
,Aug
,Septe
,Octo
,Nove
, eDece
e as segundas metades são, portantoary
,uary
,ch
,il
,y
,ne
,ly
,ust
,mber
,ber
,mber
, ember
. - Calcule o dia calculando a média dos dois dias possíveis, tomando a palavra quando a média não for um número inteiro.
- Emita a representação de texto desta data, por exemplo
10/8/2011
, para , saídaAugber 9, 2011
.
- Criar um novo nome do mês, tendo a primeira metade do nome do anteriormente mês e anexar a segunda metade da tarde mês. Por meses com duração ímpar, a primeira metade recebe a letra extra. Para ser explícito, as primeiras metades dos meses são
Se a data de entrada não puder ser Mês / Dia / Ano ou Dia / Mês / Ano (por exemplo, 13/13/2013
ou mesmo 2/30/2002
), qualquer comportamento é aceitável. Este código de golfe, o código mais curto vence!
Casos de teste:
10/31/1998
dá October 31, 1998
25/12/1989
dá December 25, 1989
10/8/2011
dá Augber 9, 2011
8/5/1957
dá Maust 6, 1957
9/12/2012
(por incrível que pareça) September 10, 2012
1/1/2000
dá January 1, 2000
without leading zeroes and with a four-digit year at the end
implicayear >= 1000