Rozważ datę sformatowaną w YYYY-MM-DD
. Możesz użyć jokera *
na końcu ciągu daty. Np. 2016-07-2*
Opisuje wszystkie daty od 2016-07-20
do 2016-07-29
.
Teraz rozważ okres reprezentowany przez datę początkową i końcową.
Algorytm musi znaleźć najmniejszą możliwą listę dat reprezentujących okres.
Użyjmy przykładu. Na następujący okres:
- Data rozpoczęcia:
2014-11-29
- Data końcowa:
2016-10-13
Algorytm musi zwrócić tablicę zawierającą następującą listę dat:
2014-11-29
2014-11-30
2014-12-*
2015-*
2016-0*
2016-10-0*
2016-10-10
2016-10-11
2016-10-12
2016-10-13
Odpowiedzi:
PHP,
541343 bajtówChciałem przede wszystkim uruchomić algorytm; ale gra w golfa była o wiele przyjemniejsza niż się spodziewałem (zwłaszcza przeglądanie obsługiwanych formatów daty i godziny ).
Trzy główne działania pozwoliły zaoszczędzić około 130 bajtów; ale 70 bajtów z mniejszych gier w golfa
(które również sprawiły, że jeden z dużych kroków stał się przestarzały) niosło dużo zabawy.
pobiera dane wejściowe z argumentów wiersza poleceń. Uruchom go
-nr
lub przetestuj online .notatki
Y-m-3*
dlaY-m-30
; dodaj 7 bajtów do naprawy: wstaw|$a==$t
po777600))
.+$p
się+!$p
.ale poczekam chwilę, aby sprawdzić, czy ktoś inny się podda, zanim zepsuję.
źródło