L'ordine di formattazione delle date è una delle questioni più complesse e di divisione che il mondo deve affrontare oggi. Alcuni di noi sostengono con veemenza che il mese / giorno / anno è appropriato, considerando che è così che diciamo ad alta voce. Altri proclamano a gran voce che il giorno / mese / anno è il migliore, perché mette i termini in ordine crescente della durata che rappresentano.
Quando è troppo è troppo. I computer possono risolvere questa controversia in modo semplice ed equo. Il tuo codice, una funzione o un programma completo, prenderà una stringa di data delimitata da barre, ad es 12/1/2015. Nota che questo è il formato esatto, senza zeri iniziali e con un anno di quattro cifre alla fine.
- Se è sicuramente mese / giorno / anno, ad esempio
10/31/1998, genera una rappresentazione testuale di quella data in questo formato esatto, con il nome completo del mese, il giorno e l'anno:October 31, 1998 - Se è sicuramente Giorno / mese / anno, per esempio
25/12/1989, in uscita lo stesso tipo di rappresentazione del testo:December 25, 1989. - Se è ambiguo che si tratti di Mese / Giorno / Anno o Giorno / Mese / Anno, genera una data che risolva l'ambiguità combinando le due possibili date come segue:
- Crea un nuovo nome di mese prendendo la prima metà del nome del mese precedente e aggiungi la seconda metà del mese successivo . Per mesi di durata dispari, la prima metà ottiene la lettera aggiuntiva. Essere esplicito, la prima metà dei mesi sono
Janu,Febr,Mar,Apr,Ma,Ju,Ju,Aug,Septe,Octo,Nove, eDecee seconda metà sono quindiary,uary,ch,il,y,ne,ly,ust,mber,ber,mber, ember. - Calcola il giorno facendo la media dei due giorni possibili, prendendo la parola quando la media non è un numero intero.
- Stampa la rappresentazione testuale di questa data, ad es. Per
10/8/2011outputAugber 9, 2011.
- Crea un nuovo nome di mese prendendo la prima metà del nome del mese precedente e aggiungi la seconda metà del mese successivo . Per mesi di durata dispari, la prima metà ottiene la lettera aggiuntiva. Essere esplicito, la prima metà dei mesi sono
Se la data di inserimento non può essere Mese / Giorno / Anno o Giorno / Mese / Anno (es. 13/13/2013O pari 2/30/2002), qualsiasi comportamento è accettabile. Questo codice golf, il codice più corto vince!
Casi test:
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 (stranamente) dà September 10, 2012
1/1/2000 dà January 1, 2000
without leading zeroes and with a four-digit year at the endimplicayear >= 1000
