Non dirlo a nessuno, ma ho intaccato la macchina da viaggio nel tempo di mio zio! Mio zio è ossessionato dai numeri primi, e ciò si vede nella macchina - l'ha programmato in modo che possa solo andare a date che si sommano a un numero primo.
Quindi non può andare a 1947-08-15
perché 1947 + 8 + 15 = 1970, che non è un numero primo. Si può andare a 1947-07-25
, perché 1947 + 7 + 25 = 1979, che è primo. Quindi, se voglio tornare a guardare le celebrazioni per l'indipendenza dell'India, sembra che dovrò andare qualche settimana prima e aspettare quei 20 giorni.
Ho alcune altre date a cui voglio andare e allo stesso modo dovrò andare a una data precedente (o se sono fortunato, uguale a) la mia data target, che si somma a un numero primo. Sono impaziente, però, e non voglio aspettare troppo - quindi voglio trovare la data che posso usare quella più vicina alla mia data target.
Puoi scrivermi un programma che prende la mia data target e mi dà la data che dovrei inserire nella macchina del tempo - la data più vicina prima o uguale alla data indicata le cui parti si sommano a un numero primo?
(Per questa sfida, stiamo usando il proletico calendario gregoriano - il che significa semplicemente che usiamo l'attuale calendario gregoriano anche per i periodi in cui le persone usavano il vecchio calendario giuliano.)
Ingresso
- Una data
- idealmente, qualsiasi data nell'era corrente (AD); praticamente, qualunque sottoinsieme di quella lingua può gestire naturalmente
- in qualsiasi formato leggibile dall'uomo⁺ che ti piace
Produzione
- La data più vicina alla data di input, che è inferiore o uguale all'input e la cui data + mese + anno si somma a un numero primo.
- in qualsiasi formato leggibile dall'uomo⁺ che ti piace
⁺: "leggibile dall'uomo" come nel giorno, nel mese e nell'anno tutti indicati separatamente, in qualunque ordine
Casi test
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
(Grazie a @Shaggy, @PeterTaylor e @Arnauld per l'aiuto con la domanda.)
Fri Jul 25 02:46:39 CEST 1947
)