Ingresso:
Una data (che contiene dd
, MM
e yyyy
). Un oggetto data o tre numeri interi separati sono validi anche come input.
Produzione:
Ciascuna parte ( dd
, MM
e yyyy
) ritornato individualmente e poi arrotondato alla data valida più vicina.
Ad esempio (nel formato dd-MM-yyyy
):
21-10-2016
diventa12-01-6102
Regole della sfida:
- Solo
dd
,MM
,yyyy
è valido, ma l'ordine e quali-simboli separati si utilizza è la vostra scelta.
Quindi questi sono alcuni esempi di formato validi:dd-MM-yyyy
;MM/dd/yyyy
;yyyy MM dd
;ddMMyyyy
, Ecc
E questi sono alcuni esempi formato non valido:dd MMM yyyy
;dd-MM-'yy
; eccetera. - Puoi anche scegliere di inserire un oggetto Date se la tua lingua lo supporta o tre parametri interi separati, invece della stringa che rappresenta una data.
- Si prega di indicare quale formato data hai usato! (E l'input e l'output devono essere nello stesso formato.) È anche consentito l'output di un oggetto Date, purché sia in grado di gestire tutti i casi di test e la seguente regola di verifica.
- La transizione dal calendario giuliano a quello gregoriano viene ignorata per questa sfida. Quindi
1582
è solo un anno inverso valido per2851
.
Consulta le informazioni / i suggerimenti della sfida per tutti gli anni, i mesi e i giorni validi. - Dal momento che non puoi avere febbraio al contrario di qualsiasi altro mese, non devi preoccuparti degli anni bisestili.
Tutti gli anni, i mesi e i giorni invertiti:
- L'anno può sempre essere invertito senza problemi, passando da 0001 (invertito di
1000
) a 9999 (rimane9999
). (Quindi0000
non è un input valido e non ci sono anche casi di test per questo.) - Gli unici mesi che hai invertito sono: gennaio (invertito da ottobre /
10
); Ottobre (invertito da gennaio /01
); Novembre (rimane novembre /11
); e dicembre (invertito da ogni altro mese /02
-09
,12
). - Gli unici giorni che hai invertito sono: 01 (invertito da
10
), 02 (invertito da20
), 03 (invertito da30
), 10 (invertito da01
), 11 (rimane11
), 12 (invertito da21
), 13 (invertito da31
) , 20 (invertito da02
), 21 (invertito da12
), 22 (rimane22
), 30 (invertito03
o uguale a 31 di novembre!), 31 (invertito da04
-09
/13
-19
/23
-29
).
Regole generali:
- Questo è code-golf , quindi vince la risposta più breve in byte.
Non lasciare che le lingue di code-golf ti scoraggino dal pubblicare risposte con lingue non codegolfing. Prova a trovare una risposta il più breve possibile per "qualsiasi" linguaggio di programmazione. - Per la tua risposta valgono regole standard , quindi puoi usare STDIN / STDOUT, funzioni / metodo con i parametri corretti e dichiarazioni / output di ritorno, programmi completi. La tua chiamata.
- Sono vietate le scappatoie predefinite .
- Se possibile, aggiungi un link con un test per il tuo codice.
- Inoltre, si prega di aggiungere una spiegazione, se necessario.
Casi di prova ( dd-MM-yyyy
come 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
, con l'anno in aumento.
10-10-2
output è valido nel terzo caso?
21-07-2016
viene ripristinato12-70-6102
e arrotondato a12-12-6102
. Non sono sicuro di come si ottiene il risultato##-10-6107
..