UWAGA: Ponieważ sam jestem Holendrem, wszystkie daty są w holenderskim dd-MM-yyyy
formacie w opisie wyzwania i przypadkach testowych.
Wyzwanie:
Wejścia:
Data rozpoczecia ; Data zakończenia ; Cyfra
Dane wyjściowe:
wszystkie daty z zakresu (w tym po obu stronach), które zawierają liczby unikalnych cyfr w swojej dacie.
Przykład:
Wejścia: data rozpoczęcia: 12-11-1991
; Data zakończenia: 02-02-1992
; Cyfra:4
Wyjścia:
z wiodącymi zerami dla dni / miesięcy:
[20-11-1991, 23-11-1991, 24-11-1991, 25-11-1991, 26-11-1991, 27-11-1991, 28-11-1991, 30-11-1991, 01-12-1991, 02-12-1991, 09-12-1991, 10-12-1991, 13-12-1991, 14-12-1991, 15-12-1991, 16-12-1991, 17-12-1991, 18-12-1991, 20-12-1991, 23-12-1991, 24-12-1991, 25-12-1991, 26-12-1991, 27-12-1991, 28-12-1991, 31-12-1991, 01-01-1992, 02-01-1992, 09-01-1992, 10-01-1992, 11-01-1992, 12-01-1992, 19-01-1992, 20-01-1992, 21-01-1992, 22-01-1992, 29-01-1992, 01-02-1992, 02-02-1992]
Bez wiodących zer dla dni / miesięcy:
[20-11-1991, 23-11-1991, 24-11-1991, 25-11-1991, 26-11-1991, 27-11-1991, 28-11-1991, 30-11-1991, 3-12-1991, 4-12-1991, 5-12-1991, 6-12-1991, 7-12-1991, 8-12-1991, 10-12-1991, 13-12-1991, 14-12-1991, 15-12-1991, 16-12-1991, 17-12-1991, 18-12-1991, 20-12-1991, 23-12-1991, 24-12-1991, 25-12-1991, 26-12-1991, 27-12-1991, 28-12-1991, 31-12-1991, 3-1-1992, 4-1-1992, 5-1-1992, 6-1-1992, 7-1-1992, 8-1-1992, 10-1-1992, 13-1-1992, 14-1-1992, 15-1-1992, 16-1-1992, 17-1-1992, 18-1-1992, 20-1-1992, 23-1-1992, 24-1-1992, 25-1-1992, 26-1-1992, 27-1-1992, 28-1-1992, 31-1-1992]
Zasady konkursu:
- Daty wejścia i wyjścia mogą być w dowolnym rozsądnym formacie (data-). Może być ciągiem w dowolnym
dMy
formacie (w tym opcjonalnymi separatorami), listą trzech liczb całkowitych, rodzimym obiektem daty języka itp. Dane wyjściowe mogą być listą / tablicą / strumieniem, drukowane do STDOUT, pojedynczym ciągiem ograniczającym itp. - Możesz włączać lub wyłączać wiodące zera dla dni / miesięcy w swoich wynikach. Podaj, którego z nich użyjesz w odpowiedzi , ponieważ spowoduje to różne wyniki. Tj.
1-1-1991
Ma 2 unikalne cyfry, ale01-01-1991
jako 3 niepowtarzalne cyfry. - Nie musisz radzić sobie z latami przestępnymi i różnicami między kalendarzami gregoriańskimi a juliańskimi. Możesz założyć, że zakresy dat podane w przypadkach testowych nigdy nie przekroczą 28 lutego / 1 marca dla lat podzielnych przez 4.
- Cyfra wejściowa ma gwarancję, że mieści się w zakresie , więc radzenie sobie z jest nieokreślone (zwrócenie pustej listy byłoby najbardziej rozsądne, ale podanie błędu lub niepoprawnego wyniku również jest w porządku; wygrałeś nie będę musiał sobie z tym poradzić).
Główne zasady:
- To jest golf golfowy , więc wygrywa najkrótsza odpowiedź w bajtach.
Nie pozwól, aby języki kod-golfowe 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. - Do odpowiedzi mają zastosowanie standardowe reguły z domyślnymi regułami We / Wy , więc możesz używać STDIN / STDOUT, funkcji / metody z odpowiednimi parametrami i typem zwracanych, pełnych programów. Twoja decyzja.
- Domyślne luki są zabronione.
- Jeśli to możliwe, dodaj link z testem kodu (tj. TIO ).
- Zalecane jest również dodanie wyjaśnienia do odpowiedzi.
Przypadki testowe:
Inputs: [12-11-1991, 02-02-1992], 4
Outputs with leading 0s: [20-11-1991, 23-11-1991, 24-11-1991, 25-11-1991, 26-11-1991, 27-11-1991, 28-11-1991, 30-11-1991, 01-12-1991, 02-12-1991, 09-12-1991, 10-12-1991, 13-12-1991, 14-12-1991, 15-12-1991, 16-12-1991, 17-12-1991, 18-12-1991, 20-12-1991, 23-12-1991, 24-12-1991, 25-12-1991, 26-12-1991, 27-12-1991, 28-12-1991, 31-12-1991, 01-01-1992, 02-01-1992, 09-01-1992, 10-01-1992, 11-01-1992, 12-01-1992, 19-01-1992, 20-01-1992, 21-01-1992, 22-01-1992, 29-01-1992, 01-02-1992, 02-02-1992]
Outputs without leading 0s: [20-11-1991, 23-11-1991, 24-11-1991, 25-11-1991, 26-11-1991, 27-11-1991, 28-11-1991, 30-11-1991, 3-12-1991, 4-12-1991, 5-12-1991, 6-12-1991, 7-12-1991, 8-12-1991, 10-12-1991, 13-12-1991, 14-12-1991, 15-12-1991, 16-12-1991, 17-12-1991, 18-12-1991, 20-12-1991, 23-12-1991, 24-12-1991, 25-12-1991, 26-12-1991, 27-12-1991, 28-12-1991, 31-12-1991, 3-1-1992, 4-1-1992, 5-1-1992, 6-1-1992, 7-1-1992, 8-1-1992, 10-1-1992, 13-1-1992, 14-1-1992, 15-1-1992, 16-1-1992, 17-1-1992, 18-1-1992, 20-1-1992, 23-1-1992, 24-1-1992, 25-1-1992, 26-1-1992, 27-1-1992, 28-1-1992, 31-1-1992]
Inputs: [19-09-2019, 30-09-2019], 5
Outputs (same with and without leading 0s): [23-09-2019, 24-09-2019, 25-09-2019, 26-09-2019, 27-09-2019, 28-09-2019, 30-09-2019]
Inputs: [19-09-2019, 30-09-2019], 8
Output (same with and without leading 0s): []
Inputs: [20-06-1749, 30-06-1749], 8
Outputs with leading 0s: [23-06-1749, 25-06-1749, 28-06-1749]
Outputs without leading 0s: []
Inputs: [10-12-1969, 12-01-1970], 6
Outputs (same with and without leading 0s): [30-12-1969]
Inputs: [10-12-1969, 12-01-1970], 5
Outputs with leading 0s: [10-12-1969, 13-12-1969, 14-12-1969, 15-12-1969, 17-12-1969, 18-12-1969, 20-12-1969, 23-12-1969, 24-12-1969, 25-12-1969, 27-12-1969, 28-12-1969, 31-12-1969, 02-01-1970, 03-01-1970, 04-01-1970, 05-01-1970, 06-01-1970, 08-01-1970, 12-01-1970]
Outputs without leading 0s: [10-12-1969, 13-12-1969, 14-12-1969, 15-12-1969, 17-12-1969, 18-12-1969, 20-12-1969, 23-12-1969, 24-12-1969, 25-12-1969, 27-12-1969, 28-12-1969, 31-12-1969, 2-1-1970, 3-1-1970, 4-1-1970, 5-1-1970, 6-1-1970, 8-1-1970, 12-1-1970]
Inputs: [11-11-1111, 11-11-1111], 1
Output (same with and without leading 0s): [11-11-1111]
YYYY-MM-DDThh:mm:ss.mmm +hh:mm
:, + hh: mm to przesunięcie czasu lokalizacji w stosunku do czasu UTC.)Odpowiedzi:
Japt , 23 bajty
Pobiera dane wejściowe jako znaczniki czasu systemu Unix, wyświetla tablicę ciągów znaków z formatowaniem i wiodącymi
0
literami zależnymi od ustawień regionalnych. Byłby o 1 bajt krótszy w Japt v2, ale wydaje się, że występuje błąd podczas konwersjiDate
obiektów na ciągi.Spróbuj
źródło
R , 81 bajtów
Wypróbuj online!
Używa natywnego formatu daty R i ma wiodące zera w dniu i miesiącu.
źródło
Czerwony , 93 bajty
Wypróbuj online!
Bez wiodących zer dla dni / miesięcy.
Szkoda, że Red przetwarza wewnętrznie
09-10-2019
do9-Oct-2019
- Dlatego trzeba wyodrębnić dzień / miesiąc / rok indywidualnie.źródło
-=+*<>?!~&
, dlatego(...)[...]"..."
potrzebne są białe znaki (lub ).Python 3.8 (wersja wstępna) , 84 bajtów
-6 bajtów dzięki Gloweye
Nienazwana funkcja, która zwraca listę ciągów (zliczających / włączając zera wiodące), która akceptuje trzy argumenty:
s
, początek -datetime.date
obiekt;e
, koniec -datetime.date
obiekt; in
, liczba dni -int
obiekt.Wypróbuj online!
Uwaga: Ponieważ funkcja akceptuje
datetime.date
obiekty, nie policzyłem do tego kodu importu (i pracowałem nad importowaniemdatetime.timedelta
obiektu, ponieważ jest on pośrednio dostępny poprzez odjęcie tych obiektów wejściowych).źródło
type(obj)
jest o 3 bajty krótszy niżobj.__class__
.__class__
i szybko skomentowałem. Zawsze chętnie pomogę.JavaScript (ES6), 91 bajtów
Pobiera dane wejściowe jako
(n)(end)(start)
, gdzie daty są oczekiwane jako uniksowe znaczniki czasu w milisekundach. Zwraca rozdzieloną spacjami listę dat w formacieyyyy-mm-dd
.Wiodące zera są uwzględnione.
Wypróbuj online!
źródło
PHP , 90 bajtów
Wypróbuj online!
Dotyczy to wiodących zer. Dane wejściowe to argumenty poleceń (
$argv
), a daty to uniksowe znaczniki czasu w dniach (w zasadzie standardowe sekundy / 86400), użyłem tego formatu, ponieważ nie potrzebujemy czasu na to wyzwanie i pozwoliło mi to zagrać o 1 bajt więcej. Utrzymuje dodanie dzień, by zacząć, dopóki nie dojdzie do końca i drukuje żadnych dat z$n
unikalnych cyfr w nim, rozdzielonych_
wYmd
formacie.Mają także 89-bajtową alternatywę, która drukuje daty do wydrukowania w tym samym formacie co dane wejściowe (znaczniki czasu Unix w dniach).
źródło
Java (JDK) , 86 bajtów
Wypróbuj online!
Zdecydowałem się użyć wiodących
0
s.Kredyty
źródło
datesUntil
dla 103 bajtów . ;) Niezła odpowiedź. Nie widzę niczego, co można by osobiście zagrać w golfa..plusDays(1)
i usunąć.forEach(System.out::println)
i jest to bardzo golfowa odpowiedź, ponieważ jak napisałeś, daty mogą być zwracane, ponieważ dozwolone są obiekty wartości i strumienie. ;-) Nie miałem pojęcia, że wdatesUntil
ogóle istnieje! Dziękuję za to :-)Rubinowy
-rdate
, 54 bajtyPobiera 2 obiekty Data i liczbę jako dane wejściowe i zwraca listę obiektów Data jako dane wyjściowe. Obsługuje lata przestępne i używa wiodących zer.
Wypróbuj online!
źródło
C # (interaktywny kompilator Visual C #)
Bez początkowych zer,
104, 103 bajtówWypróbuj online!
Z wiodącymi zerami,
106105 bajtówWypróbuj online!
źródło
x =>$"
w obu wersjach dla -1. :)Kotlin, 119 bajtów
Bez wiodących zer, przyjmuje dwa
java.time.LocalDate
i aLong
, zwraca aStream
zLocalDate
sźródło
it.toString()
z(it+"")
zaoszczędzić kilka bajtów? Wiem, że jest to możliwe w niektórych innych językach, takich jak Java lub .NET C #.