Ingresso:
Una data (che contiene dd, MMe yyyy). Un oggetto data o tre numeri interi separati sono validi anche come input.
Produzione:
Ciascuna parte ( dd, MMe yyyy) ritornato individualmente e poi arrotondato alla data valida più vicina.
Ad esempio (nel formato dd-MM-yyyy):
21-10-2016diventa12-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). (Quindi0000non è 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 (invertito03o 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-yyyycome 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-2output è valido nel terzo caso?
21-07-2016viene ripristinato12-70-6102e arrotondato a12-12-6102. Non sono sicuro di come si ottiene il risultato##-10-6107..