Nikomu nie mów, ale naciągnąłem maszynę podróży w czasie mojego wuja! Mój wujek ma jednak obsesję na punkcie liczb pierwszych, co widać na maszynie - zaprogramował ją tak, aby mogła przechodzić tylko do dat, które sumują się do liczby pierwszej.
Tak więc nie można tego zrobić, 1947-08-15
ponieważ 1947 + 8 + 15 = 1970, co nie jest liczbą pierwszą. To może iść do 1947-07-25
, bo 1947 + 7 + 25 = 1979, co jest pierwsze. Więc jeśli chcę wrócić, by obejrzeć uroczystości niepodległości Indii, wygląda na to, że będę musiał pójść kilka tygodni wcześniej i czekać 20 dni.
Mam inne daty, na które chcę iść, i podobnie muszę iść na randkę przed (lub, jeśli mam szczęście, równą) mojej docelowej dacie, co sumuje się do liczby pierwszej. Jestem jednak niecierpliwy i nie chcę zbyt długo czekać - chcę więc znaleźć datę, której mogę użyć, najbliższą mojej docelowej dacie.
Czy możesz napisać mi program, który przyjmuje moją datę docelową i podaje datę, którą powinienem wprowadzić do wehikułu czasu - najbliższą datę przed lub równą podanej dacie, której części składają się na liczbę pierwszą?
(Do tego wyzwania używamy proleptycznego kalendarza gregoriańskiego - co oznacza po prostu, że używamy bieżącego kalendarza gregoriańskiego nawet w okresach, gdy ludzie używali wtedy starszego kalendarza juliańskiego.)
Wkład
- Randka
- idealnie, każda data w obecnej erze (AD); praktycznie każdy podzbiór tego języka może naturalnie sobie poradzić
- w dowolnym formacie czytelnym dla człowieka like lubisz
Wydajność
- Data najbliższa wejściu, która jest mniejsza lub równa wprowadzeniu i której data + miesiąc + rok sumuje się do liczby pierwszej.
- w dowolnym formacie czytelnym dla człowieka like lubisz
⁺: „czytelny dla człowieka” jak w dniu, miesiącu i roku, wszystkie oddzielnie, w dowolnej kolejności
Przypadki testowe
1947-08-15
=> 1947-07-25
1957-10-04
=> 1957-09-27
1776-07-04
=> 1776-07-04
999-12-12
=> 0999-12-10
2018-06-20
=> 2018-06-15
1999-01-02
=> 1998-12-29
1319-12-29
=> 1319-07-01
(Podziękowania dla @Shaggy, @PeterTaylor i @Arnauld za pomoc przy pytaniu.)
Fri Jul 25 02:46:39 CEST 1947
)