Wejście:
A Data (zawierającą dd
, MM
i yyyy
). Obiekt daty lub trzy oddzielne liczby całkowite są również ważne jako dane wejściowe.
Wynik:
Każda część ( dd
, MM
i yyyy
) indywidualnie cofnięta i zaokrąglona do najbliższej ważnej daty.
Na przykład (w formacie dd-MM-yyyy
):
21-10-2016
staje się12-01-6102
Zasady konkursu:
- Tylko
dd
,MM
,yyyy
jest ważny, ale kolejność i który oddzielny symbole używasz jest twój własny wybór.
To są niektóre ważne przykłady formatów:dd-MM-yyyy
;MM/dd/yyyy
;yyyy MM dd
;ddMMyyyy
, Itd.
A oto kilka przykładów Nieprawidłowy format:dd MMM yyyy
;dd-MM-'yy
; itp. - Możesz także wybrać wprowadzenie obiektu daty, jeśli Twój język go obsługuje lub trzy oddzielne parametry liczb całkowitych zamiast ciągu reprezentującego datę.
- Podaj używany format daty! (A dane wejściowe i wyjściowe muszą być w tym samym formacie.) Dozwolone jest również generowanie obiektu Date, o ile może on obsłużyć wszystkie przypadki testowe i regułę wyzwania poniżej.
- Przejście kalendarza juliańskiego do kalendarza gregoriańskiego jest ignorowane w przypadku tego wyzwania.
1582
Jest to więc tylko ważny odwrócony rok2851
.
Zobacz informacje / wskazówki dotyczące wyzwań dla wszystkich ważnych lat, miesięcy i dni. - Ponieważ nie możesz mieć lutego w odwrotnym kierunku niż jakikolwiek inny miesiąc, nie musisz się martwić o lata przestępne.
Wszystkie odwrócone lata, miesiące i dni:
- Rok można zawsze bez problemu cofnąć, sięgając od 0001 (cofnięty z
1000
) do 9999 (pozostały9999
). (Więc0000
nie jest to poprawny wpis i nie ma też dla niego przypadków testowych). - Jedyne miesiące, które cofniesz to: styczeń (odwrócony od października /
10
); Październik (odwrócony od stycznia /01
); Listopad (pozostaje listopad /11
); i grudzień (odwrócone co drugi miesiąc /02
-09
,12
). - Jedyne dni, które cofniesz to: 01 (odwrócony od
10
), 02 (odwrócony od20
), 03 (odwrócony od30
), 10 (odwrócony od01
), 11 (pozostanie11
), 12 (odwrócony od21
), 13 (odwrócony od31
) , 20 (odwrócone od02
), 21 (odwrócone od12
), 22 (pozostaje22
), 30 (odwrócone od03
lub to samo co 31 w listopadzie!), 31 (odwrócone od04
-09
/13
-19
/23
-29
).
Główne zasady:
- To jest golf golfowy , więc wygrywa najkrótsza odpowiedź w bajtach.
Nie pozwól, aby języki gry w golfa zniechęcały Cię do publikowania odpowiedzi w językach niekodujących golfa. Spróbuj znaleźć możliwie najkrótszą odpowiedź na „dowolny” język programowania. - Odpowiedzi dotyczą standardowe reguły , więc możesz używać STDIN / STDOUT, funkcji / metody z odpowiednimi parametrami i instrukcji return / output, pełnych programów. Twoja decyzja.
- Domyślne luki są zabronione.
- Jeśli to możliwe, dodaj link z testem swojego kodu.
- W razie potrzeby dodaj również wyjaśnienie.
Przypadki testowe ( dd-MM-yyyy
jako format):
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
21-07-2016
jest cofane,12-70-6102
co jest zaokrąglane do12-12-6102
. Nie jestem pewien, jak uzyskać wynik##-10-6107
.70
.10-10-2
ważne jest wyjście w trzecim przypadku?Odpowiedzi:
Wypukły , 23 bajty
Liczba bajtów zakłada kodowanie CP-1252.
Format wejścia / wyjścia to
dd mm yyyy
.Wypróbuj online!
To jest bezpośredni port mojej odpowiedzi CJam . Wypukły jest w dużej mierze oparty na CJam, a zatem jedyną różnicą jest użycie
¶
operatora Convex, który otacza dwa górne elementy stosu na liście, oszczędzając bajt[...]
.źródło
CJam, 24 bajty
Format wejścia / wyjścia to
dd mm yyyy
.Wypróbuj online!
Ta sama liczba bajtów, format we / wy
mm dd yyyy
:Wypróbuj online!
Wyjaśnienie
Druga wersja działa podobnie, z tym że zaczynamy od liczby całkowitej
1230
lub1231
przed konwersją na["12" "30"]
lub["12" "31"]
.źródło
1=
pobiera odwrócony miesiąc,:=
sprawdza, czy jego cyfry są równe, i^
xor wyniku na 31, dając 30 dla miesiąca11
i 31 dla wszystkiego innego.Pyth,
5553464341 bajtówgdzie
❤❤
były dwa niedrukowalne, odpowiednio U + 001C i U + 001F.Zestaw testowy.
źródło
Python 3, 82 bajty
Anonimowa funkcja, która pobiera za pomocą argumentu datę jako listę ciągów formularza
['dd', 'mm', 'yyyy']
i zwraca sprawdzoną odwróconą datę w tym samym formacie.Jak to działa
Python porównuje znaki i łańcuchy według ich punktów kodowych Unicode. Oznacza to, że każde porównanie dwóch lub więcej liczb całkowitych zwraca to samo, co porównanie tych liczb całkowitych jako ciągów. Dlatego wywołanie
min
dwóch liczb całkowitych jako ciągów zwraca najmniejszą liczbę całkowitą jako ciąg; przyjmując odwróconą część daty jako jeden argument, a maksymalną wartość jako drugą, dzień i miesiąc zostają ograniczone do żądanego zakresu. Części daty są odwracane przez indeksowanie krokami-1
([::-1]
), a maksymalna wartość dla miesiąca jest zmieniana z'31'
na'30'
jeżeli miesiącem jest listopad, poprzez indeksowanie do listy z wynikiem logicznym warunku.Wypróbuj na Ideone
źródło
Dyalog APL ,
3233 bajtyI / O to lista trzech ciągów (
'dd' 'mm' 'yyyy'
).TryAPL , ale należy pamiętać, że
⎕
(monit o wprowadzenie) został zastąpiony,⍵
a cała linia zawarta w{
... w}
celu umożliwienia testowania online, a⍎
(wykonanie wyrażenia) zostało zastąpione2⊃⎕VFI
(weryfikacja i naprawa danych wejściowych), ponieważ wykonanie dowolnego kodu jest zablokowane .źródło
C #
314305299249232223 bajtówDzięki @KevinCruijssen za zwrócenie uwagi na to, że mogę skrócić moją deklarację zmiennej, dzięki czemu łańcuch aliasingu może również zapisać niektóre bajty.
Zapisano 50 bajtów przechowujących funkcję cofania do ponownego użycia i kolejne 13, robiąc to samo dla zaokrąglania i usuwania deklaracji zmiennych.
Ostatnia aktualizacja powoduje, że łańcuch aliasingu nie jest już wygaszaczem bajtów.
Wersja bez golfa:
Sprawdź to tutaj
źródło
using System.Linq;
i funkcję, więc to -1 bajt. Ponadto,var n=...;var e=...;
można golfed przez 1 bajt używając zamiast tego:string n=...,e=...;
To nie jest dużo, ale nadal -2 bajtów. ;)JavaScript,
10610594 bajtówZestaw testowy (rev. 3)
Wyjaśnienie
Dzięki @KevinCruijssen do zapisywania 1 bajt do
b==1
celub<2
. Dzięki @Neil za oszczędność 11 bajtów, sugerując literał szablonu ES6 i,
separator.źródło
b==1
można grać w golfa,b<2
aby zaoszczędzić bajt? To nie może być już 0, ponieważ już sprawdziłeś to w!b?
części kodu. Wygląda na to, że działa w twoim pakiecie testowym, kiedy go zmieniam.join``
zamiastjoin('')
na przykład - ale możesz zaoszczędzić nieco więcej, używając,
jako separatora, co pozwala+''
na połączenie trzech wartości razem.,
separator na wejściu?Ruby,
9284 + 1 (-p
flaga) =9385 bajtówSłuży
-
jako separator.źródło
Pyke, 29 bajtów
Wypróbuj tutaj!
Zdecydowanie widzę, że to gra w golfa
źródło
Python 2, 154 bajty
Traktuje dane wejściowe jako ciąg znaków, dlatego w danych wejściowych należy podać cudzysłowy, np. „11-04-2016”.
źródło
z=[x[::-1]for x in z];z[1]=min(z[1],'12');z[0]=min(z[0],['31','30'][z[1]=='11']);print"-".join(z)
. Zasadniczo nie musisz wcale używaćr
imin
osiągasz wiele rzeczy, które chcesz robić.05AB1E , 24 bajty
Port odpowiedzi CJam @MartinEnder , a więc także wejścia i wyjścia w postaci łańcucha w formacie
dd MM yyyy
.Wypróbuj online lub sprawdź wszystkie przypadki testowe .
Wyjaśnienie:
źródło