sfondo
Il numero 1729 è il numero Hardy-Ramanujan. Una straordinaria proprietà fu scoperta da S. Ramanujan (che è ampiamente considerato come il più grande matematico indiano 1 ), quando GH Hardy lo visitò in un ospedale. Nelle stesse parole di Hardy:
Ricordo che una volta lo avrei visto quando era malato a Putney. Avevo guidato sul taxi numero 1729 e ho osservato che il numero mi sembrava piuttosto noioso e che speravo non fosse un presagio sfavorevole. "No", rispose, "è un numero molto interessante; è il numero più piccolo esprimibile come la somma di due cubi in due modi diversi."
Oltre a ciò, ha molte altre incredibili proprietà. Una di queste proprietà è che è un numero di Harshad, cioè la somma delle sue cifre (1 + 7 + 2 + 9 = 19) ne è un fattore. Anche quello, uno speciale. Come ha mostrato Masahiko Fujiwara, il 1729 è un numero intero positivo che, sommando le sue cifre, produce una somma che, moltiplicata per l'inversione, produce il numero originale:
1 + 7 + 2 + 9 = 19
19 × 91 = 1729
Un numero intero positivo con tale proprietà è ciò che definisco Hardy-Ramanujan- ish Harshad Number, ai fini di questo post. (Potrebbe esserci un termine tecnico per questo, ma non sono riuscito a trovarlo, a meno che non sia membro dell'A110921 )
L'obiettivo
Dato un intero positivo ncome ingresso, uscita un valore truthy o falsey a seconda che l'ingresso nè un Hardy-Ramanujan- ish numero Harshad. Uscita veritiera, se lo è. Altrimenti, output falso.
Si noti che solo quattro Hardy-Ramanujan- ish esistono numero di harshad ( 1, 81, 1458e 1729), ed è possibile scrivere codice che verifica l'equivalenza con loro. Ma non penso che sarà divertente.
Ingresso
Il tuo programma dovrebbe assumere un numero intero positivo (un numero naturale, in altre parole). Può prenderlo in qualsiasi modo, tranne supponendo che sia presente in una variabile. È consentita la lettura da finestra modale, casella di input, riga di comando, file ecc. È consentito anche prendere input come argomento di funzione.
Produzione
Il tuo programma dovrebbe generare un valore di verità o falsità. Non devono essere coerenti. Il tuo programma può produrre in qualsiasi modo tranne che scrivere l'output in una variabile. È consentita la scrittura su schermo, riga di comando, file ecc. Anche l'output con funzione returnè consentito.
Regole aggiuntive
Non devi usare un built-in per eseguire l'operazione (mi chiedo che qualsiasi lingua abbia tale built-in, ma poi Mathematica ... )
Si applicano scappatoie standard .
Casi test
Input Output
1 Truthy (because 1 × 1 (reverse of 1) = 1)
2 Falsey
3 Falsey
4 Falsey
5 Falsey
81 Truthy (because 9 (8 + 1) × 9 (reverse of 9) = 81)
1458 Truthy (because 18 (1 + 4 + 5 + 8) × 81 (reverse of 18) = 1458)
1729 Truthy (because 19 (1 + 7 + 2 + 9) × 91 (reverse of 19) = 1729)
1730 Falsey
2017 Falsey
Criterio vincente
Questo è code-golf , quindi vince il codice più corto in byte!
1 Ogni anno, il 22 ° dicembre, il compleanno di Srinivasa Ramanujan, Nazionale Matematica Day viene osservato in India. I suoi colleghi, quelli di Cambridge, lo paragonarono a Jacobi, Euler e persino a Newton. Oltre ad essere così bravo, non aveva quasi nessuna formazione formale in Matematica pura , ma ha comunque dato importanti contributi all'analisi matematica , alla teoria dei numeri , alle serie infinite e alle continue frazioni . Sfortunatamente, è morto in giovane età di 32 anni con migliaia di scoperte matematiche nella sua mente. È stato anche girato un film su di lui, basato sulla sua biografia ,L'uomo che sapeva l'infinito .