Daty palindromiczne to daty, które pojawiają się jako palindromy: ciąg cyfr można odczytać w ten sam sposób wstecz i do przodu. W przypadku formatu daty w Ameryce Północnej (MM / DD / RRRR) następnych kilka dat palindromicznych to:
02/02/2020
12/02/2021
03/02/2030
Wyzwanie
Utwórz funkcję, która zwraca wszystkie daty palindromiczne w spójnym, wspólnym formacie dat (wybranym przez Ciebie), które mieszczą się w zakresie dat ( edytuj: w tym sam zakres ).
Zasady
- Aby zakwalifikować się jako palindrom, należy sprawdzić tylko znaki numeryczne daty.
- Data może mieć dowolny wspólny format (
MM/DD/YYYY
,DD-MM-YYYY
), pod warunkiem, że używa dwóch cyfr dla miesiąca i dnia oraz czterech dla roku i używa znaku do oddzielenia części daty. Wyjście musi zachować rozdzielając znaki (/
,-
, itd.). Twoja funkcja musi obsługiwać tylko jeden odrębny format daty. Podaj format w swojej odpowiedzi. - Jeśli zwrócono więcej niż jedną datę, należy je oddzielić przecinkiem lub znakiem nowej linii.
- Najkrótsza odpowiedź wygrywa!
Przykład
date_palindrome('05/02/2050', '12/12/2060')
>>>['05/02/2050', '06/02/2060']
code-golf
date
palindrome
atlasolog
źródło
źródło
DATE
unikającto_date()
lub muszę użyć mniej golfaVARCHAR2
?Odpowiedzi:
MATL,
2423 bajtyAkceptuje dane wejściowe w postaci tablicy ciągów, w
{lower, upper}
których format daty to'MM/DD/YYYY'
. Dane wyjściowe mają również formatMM/DD/YYYY
.Wypróbuj online
Wyjaśnienie
źródło
Narzędzia Bash + GNU,
11684Wymaga 64-bitowej wersji daty dla danej skrzynki testowej.
I / O ma
YYYY-MM-DD
format. Dane wejściowe są pobierane z dwóch wierszy standardowego wejścia, npWyjaśnienie
set
zapisuje szablon polecenia daty, aby można było uzyskać do niego dostęp za pomocą$@
parametrudate -uf- +%s
konwertuje daty punktów końcowych na liczbę sekund od epoki Uniksajot
interpoluje to, aby uzyskać listę sekund od epoki, po jednej na dzień, każdy z prefiksem@
date -uf- +%F
formatuje każdą pozycję listy jakoYYYY-MM-DD
sed
sprawdza palindromy:h
zapisz linię wejściową w buforze wstrzymania:
zdefiniuj etykietę „bez nazwy”s/-|^(.)(.*)\1$/\2/
jeśli znaleziono myślnik, usuń go lub jeśli pierwszy i ostatni znak pasują, usuń jet
jeśli powyżej było dopasowanie, wróć do nienazwanej etykiety/./d
jeśli pozostały jakieś znaki, linia nie jest palindromem - usuń ją i przejdź do następnej liniig
jeśli tu dotarliśmy, to nie nastąpiło usunięcie linii, więc linia musiała być palindromem. Pobierz linię z bufora wstrzymania i domyślnie ją wyświetl.źródło
Python 2, 197 bajtów
Jeden bajt zapisany dzięki @cat!
Wypróbuj tutaj!
Format wejściowy i wyjściowy to
YYYY-MM-DD
. Pierwszy poziom intencji to spacje, drugi to tabulatory.Nie dzieje się tu nic specjalnego. Wykorzystuje pewne
exec
nadużycia, aby przekonwertować dane wejściowe nadate
obiekty, dzieląc ciąg daty-
i umieszczając listę wdate
konstruktorze. Następnie po prostu iterujemy wszystkie daty w ich obejmującym zakresie i drukujemy te, które są palindromiczne.źródło
from datetime import*
pierwszą linię, aby zapisać bajt`a+timedelta(d)`
to samo costr(a+timedelta(d))
?repr
zwykle jest to odpowiednik tylkostr
dla prymitywnych typów danych. Na przykładdate
dostaję przedmiotydatetime.date(2012, 12, 12)
.PowerShell v2 +, 127 bajtów
Pobiera dane wejściowe jako argumenty wiersza polecenia
$args
wMM/DD/YYYY
formacie (lub podobnym) i przekształca jako[datetime]
tablicę, przechowuje je w$a
i$b
. To jest krok konfiguracjifor
pętli. Warunek jest tak długi, że$a
jest mniejszy lub równy$b
.W każdej iteracji ustalamy
$c
równy-f
ormatowany ciągyyyyMMdd
stylów, na podstawie$a
. Następnie porównujemy, czy jest-eq
to$c
odwrócone (za pomocą sztuczki łączenia tablic). Jeśli tak, wysyłamy dane wyjściowe$a
w odpowiednim formacie. Tak czy inaczej, my zwiększamy$a
ze.AddDays(1)
aby przejść do następnego dnia.Przykład
źródło
Julia, 132 bajty
Jest to funkcja, która akceptuje dwa ciągi i zwraca tablicę ciągów.
Nie golfowany:
Wypróbuj online!
źródło
JavaScript (ES6),
159154 bajtówI / O w formacie ISO. Nie golfowany:
źródło
TSQL, 88 bajtów
Korzystanie z formatu ISO8601 dla daty (rrrr-mm-dd)
Skrzypce
źródło
Java 7,
436435416 bajtów * westchnienie *Format wejściowy i wyjściowy:
dd-MM-yyyy
Kod niepoznany i testowy:
Wypróbuj tutaj.
Wynik:
źródło
Oracle 11: SQL: 246 bajtów (hej, przynajmniej pobiłem Java: P lol)
Wynik:
W czytelnym formacie:
Wyjaśniono:
Dowiedziałem się dzisiaj o funkcji ODWRÓCENIA :)
źródło
C #,
9794 bajtówC # lambda (X
Action
), w którym dane wejściowe sąDateTime
a wyjście jest drukowany za pomocą.Dump()
sposobu (na @ EvilFonti podstęp ).C #,
115112 bajtówC # lambda (
Func
) gdzie dane wejściowe są,DateTime
a dane wyjściowe to astring
.Kod:
Wypróbuj je online!
źródło
VBA,
240193 bajtówTo wszystko w zrozumiałym formacie. Przypadek testowy:
Bez tak dużej redundancji:
źródło
JavaScript (przy użyciu zewnętrznej biblioteki) (158 bajtów)
Link do lib: https://github.com/mvegh1/Enumerable
Wyjaśnienie kodu: Ok, w końcu raz użyłem tutaj prawdziwego golfa. Zatem dane wejściowe a, b są obiektami daty. Utwórz zakres liczb całkowitych od a do b, gdzie a i b są wymuszone na liczby całkowite, a odległość między wartościami w tym zakresie wynosi 86400000, tj. Liczba tyknięć w ciągu jednego dnia. Odwzoruj każdą wartość w zakresie na obiekt daty. Filtruj ten zakres według predykatu reprezentującego daty palindromiczne. Logika określania tego jest prosta ... rzutuj reprezentację ciągu JSON obiektu bieżącej daty na tablicę znaków przy użyciu biblioteki i odfiltruj wpisy nienumeryczne i weź tylko 8 pierwszych wartości (ponieważ byłoby to rrrrMMdd ) i zapisz to w zmiennej z, a następnie sprawdź, czy z jest równoważne z Odwrócone. Na koniec wróć do natywnej tablicy JS
Edycja: Ogolono 2 bajty, usuwając niepotrzebne części.
źródło
Java, 269 bajtów
Nie golfowany:
źródło