Niedawno powiedziano mi, żebym przeczytał cały podręcznik fizyki do nowego roku (prawdziwa historia, niestety). Potrzebuję twojej pomocy w ustaleniu, które rozdziały powinienem czytać każdego dnia. Właśnie tam wchodzisz.
Wejście
- Dwie daty, w dowolnym formacie. Druga data zawsze będzie późniejsza niż pierwsza.
- Lista numerów rozdziałów. Ta lista oddzielona przecinkami może zawierać pojedyncze rozdziały (
12
) lub zakresy włącznie (1-3
). Dawny.1-3,5,6,10-13
. - Lista dni tygodnia (reprezentowana przez dwie pierwsze litery nazwy
Monday -> Mo
:) do wykluczenia z harmonogramu. Dawny.Mo,Tu,Fr
.
Wynik
Wyjściem będzie rozdzielona nowym wierszem lista dat i numerów rozdziałów (patrz format poniżej). Rozdziały powinny być równomiernie rozmieszczone we wszystkich dniach w zakresie, z wyłączeniem przewidzianych dni tygodnia. Jeśli rozdziały nie rozkładają się równomiernie, należy mieć dni z niższą liczbą rozdziałów na koniec okresu. Daty wyjściowe mogą mieć inny format niż wejściowy. Dni bez rozdziałów można pominąć lub po prostu nie zawierać żadnych rozdziałów.
Przykład:
Wejście: 9/17/2015 9/27/2015 1-15 Tu
Wynik:
9/17/2015: 1 2
9/18/2015: 3 4
9/19/2015: 5 6
9/20/2015: 7 8
9/21/2015: 9 10
9/23/2015: 11
9/24/2015: 12
9/25/2015: 13
9/26/2015: 14
9/27/2015: 15
Odpowiedzi:
PowerShell v4,
367357323313308307305277 bajtówEdytuj - golfowano 28 bajtów przy użyciu jawnego formatowania wejściowego.
Wyjaśniono:
Stosowanie
Oczekuje, że daty będą w
DateTime
formacie .NET . Oczekuje, że „pominięte” dni będą w tablicy (odpowiednik listy programu PowerShell).źródło
$
... To naprawdę całkiem średnia dla golfa PowerShell, który wydaje się być około 10% do 15% (na podstawie moich nieformalnych obliczeń odpowiedzi, które opublikowałem).JavaScript (ES6),
317310291 bajtówStosowanie
Wyjaśnienie
źródło
Python 2 -
338317308304300Idziemy, żeby piłka się toczyła ...
Przykładowe dane wejściowe:
Przykładowe dane wyjściowe:
źródło