Hintergrund
Die Nummer 1729 ist die Hardy-Ramanujan-Nummer. Eine erstaunliche Eigenschaft davon wurde von S. Ramanujan (der weithin als der größte indische Mathematiker 1 gilt ) entdeckt, als GH Hardy ihn in einem Krankenhaus besuchte. In Hardys eigenen Worten:
Ich erinnere mich, dass ich ihn einmal besucht habe, als er in Putney krank war. Ich war mit dem Taxi Nummer 1729 gefahren und bemerkte, dass die Nummer mir ziemlich langweilig erschien und ich hoffte, dass es kein ungünstiges Omen war. "Nein", antwortete er, "es ist eine sehr interessante Zahl; es ist die kleinste Zahl, die auf zwei verschiedene Arten als Summe von zwei Würfeln ausgedrückt werden kann."
Abgesehen davon hat es viele andere erstaunliche Eigenschaften. Eine solche Eigenschaft ist, dass es sich um eine Harshad-Zahl handelt, dh die Summe ihrer Ziffern (1 + 7 + 2 + 9 = 19) ist ein Faktor dafür. Auch das ist etwas Besonderes. Wie Masahiko Fujiwara gezeigt hat, ist 1729 eine positive ganze Zahl, die, wenn ihre Ziffern addiert werden, eine Summe ergibt, die bei Multiplikation mit ihrer Umkehrung die ursprüngliche Zahl ergibt:
1 + 7 + 2 + 9 = 19
19 × 91 = 1729
Eine positive ganze Zahl mit einer solchen Eigenschaft ist das, was ich für den Zweck dieses Beitrags als Hardy-Ramanujan- ish- Harshad-Zahl definiere . (Es könnte einen Fachbegriff dafür geben, aber ich konnte ihn nicht finden, es sei denn, er ist Mitglied von A110921. )
Die Aufgabe
Bei einer positiven Ganzzahl n
als Eingabe wird ein Wahrheits- oder Falschwert ausgegeben, der davon abhängt, ob es sich bei der Eingabe n
um eine Hardy-Ramanujan- ish- Harshad-Zahl handelt. Ausgabe wahrheitsgetreu, wenn es ist. Andernfalls wird falsey ausgegeben.
Beachten Sie, dass nur vier Hardy-Ramanujan- ish Harshad Zahlen existieren ( 1
, 81
, 1458
und 1729
), und man kann mit ihnen Code, der prüft , ob die Gleichwertigkeit schreiben. Aber ich denke nicht, dass das Spaß machen wird.
Eingang
Ihr Programm sollte eine positive ganze Zahl haben (mit anderen Worten eine natürliche Zahl). Es kann in irgendeiner Weise verwendet werden, außer dass angenommen wird, dass es in einer Variablen vorhanden ist. Das Lesen aus einem modalen Fenster, einem Eingabefeld, einer Befehlszeile, einer Datei usw. ist zulässig. Eingaben als Funktionsargument sind ebenfalls zulässig.
Ausgabe
Ihr Programm sollte einen Wahrheitswert oder einen falschen Wert ausgeben. Sie müssen nicht konsistent sein. Ihr Programm kann auf irgendeine Weise ausgeben, außer die Ausgabe in eine Variable zu schreiben. Schreiben auf Bildschirm, Kommandozeile, Datei usw. ist erlaubt. Die Ausgabe mit Funktion return
ist ebenfalls erlaubt.
Zusätzliche Regeln
Sie müssen kein eingebautes Programm verwenden, um die Aufgabe zu erledigen (ich frage mich, dass eine Sprache ein solches eingebautes Programm haben wird, aber dann Mathematica ... )
Es gelten Standard-Regelungslücken .
Testfälle
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
Gewinnkriterium
Das ist Code-Golf , also gewinnt der kürzeste Code in Bytes!
1 Jedes Jahr am 22. nd Dezember Geburtstag von Srinivasa Ramanujan, Nationalen Tag der Mathematik ist in Indien beobachtet. Seine Kollegen in Cambridge verglichen ihn mit Jacobi, Euler und sogar Newton. Abgesehen davon, dass er so großartig war, hatte er fast keine formale Ausbildung in reiner Mathematik , aber dennoch leistete er wichtige Beiträge zur mathematischen Analyse , zur Zahlentheorie , zu unendlichen Reihen und zu weiteren Brüchen . Leider starb er im frühen Alter von 32 Jahren mit Tausenden mathematischen Entdeckungen im Kopf. Es wurde auch ein Film über ihn gedreht, der auf seiner Biografie beruhte .Der Mann, der die Unendlichkeit wusste .
Antworten:
Neim , 5 Bytes
Erläuterung:
Versuch es!
quelle
ArnoldC, 888 Bytes
Ich weiß, ich überprüfe nur die Gleichheit, aber das sollte nicht der spaßige Teil des Programms sein.
Viel Spaß beim Lesen. :)
Es wurden einige neue Zeilen hinzugefügt, um die Lesbarkeit zu verbessern:
Probieren Sie es online aus
quelle
x86-Assembly,
55353331 Byte:Nimmt ein ABI an, bei dem der Rückgabewert in EAX ist und Parameter auf dem Stack abgelegt werden ... also fast alle.
quelle
Brachylog , 8 Bytes
Probieren Sie es online!
quelle
Haskell ,
56-55BytesProbieren Sie es online!
Punktfrei: (56 Bytes)
Probieren Sie es online!
Langweilig: (24 Bytes)
Probieren Sie es online!
quelle
JavaScript ES6,
5957 BytesProbieren Sie es online!
+
Teilt sich im Wesentlichen in ein Ziffernarray und verbindet sich mit diesem Ausdruck und wertet ihn aus, um die Ziffern im Wesentlichen zu summieren.string*string
wandelt automatisch Zeichenketten in Ints um. Übernimmt die Eingabe als Zeichenfolgequelle
Mathematica, 42 Bytes
quelle
Rubin, 69 Bytes
Versuchen Sie zuerst, mit Integer als Eingabe:
Zweiter Versuch, mit String als Eingabe:
quelle
.split('')
kann gemacht werden.chars
Batch, 164 Bytes
Druckt 1 bei Erfolg, keine Ausgabe bei Fehler.
quelle
JavaScript (ES6), 72 Byte
Dies ist eine gültige ES6-Vorlage. Addiere
f=
zu Beginn und rufe like auff(arg)
.Testschnipsel:
quelle
Kotlin,
111108 BytesProbieren Sie es online!
Wie es für statisch kompilierte JVM-Lösungen typisch ist, gehen viele Bytes nur bei der Deklaration der Hauptfunktion und dem Aufruf von print () verloren. Das Fleisch der Funktion ist 60ish Bytes, was für eine statisch typisierte Allzwecksprache wie Kotlin überhaupt nicht schlecht ist.
Kotlin, langweilige Lösung, 69 Bytes
Probieren Sie es online!
quelle
05AB1E , 5 Bytes
Probieren Sie es online!
quelle
DSODR*Q
war das, was ich vorher gesehen hatte.D
.Python 2 , 55 Bytes
Probieren Sie es online!
Erläuterung
Eine
eval()
Lösung istetwas2 Bytes länger ...Alternative
(ungültige?)Lösung,4229 BytesDiese Lösung prüft die Gleichheit mit allen Zahlen.
Probieren Sie es online!
quelle
[1,81,1458,1729].__contains__
Cheddar , 60 Bytes
Probieren Sie es online!
quelle
NewStack , 16 Bytes
Die Panne:
Am Beispiel von 1729
Gibt bei false nichts und bei true die ursprüngliche Eingabe aus.
quelle
¹
besteht der Stack aus[1]
. Und da wir Ihre Eingabe definiertf
oderf(x)
gleichgesetzt haben, ersetzt das Multiplizieren jedes Elements im Stapel mit der Funktionf
im Wesentlichen das1
durch unsere Eingabe. (Weil[1] * f(x)
=[f]
)MATL , 11 Bytes
Probieren Sie es online!
t
- Eingaben nehmen und duplizierenV!U
- Teilen Sie es in einzelne Ziffern aufs
- Summiere diese Ziffernt
- Duplizieren Sie diese SummeVP
- Machen Sie daraus eine Schnur, drehen Sie sie von links nach rechtsU
- Machen Sie daraus eine Zahl*
- Multipliziere die letzten beiden Werte (die Ziffernsumme und ihre von links nach rechts gespiegelte Version)=
- Überprüfen Sie, ob dies mit der ursprünglichen Eingabe übereinstimmt (die der einzige andere Wert im Stapel ist).quelle
Japt, 8 Bytes
Führen Sie es online aus
quelle
Gelee , 8 Bytes
Probieren Sie es online!
quelle
DS×Ṛ$Ḍ=
Speichert ein Byte.Perl 6 , 30 Bytes
quelle
PHP , 52 Bytes
Probieren Sie es online!
PHP , 36 Bytes
Probieren Sie es online!
quelle
APL (Dyalog) , 18 Bytes
Probieren Sie es online!
quelle
Pari / GP ,
5652 BytesProbieren Sie es online!
quelle
MathGolf , 5 Bytes
Probieren Sie es online!
Ziemlich genau wie die Neim-Lösung Byte für Byte.
quelle