Hintergrund
Ramanujans Nummer, 1729, wird Taxi-Nummer genannt, weil Hardy (möglicherweise apokryphisch) in ein Taxi stieg, um Ramanujan im Krankenhaus zu besuchen, mit dieser Nummer, die ihm langweilig vorkam.
Es ist seitdem als das bekannteste einer Klasse von Ganzzahlen bekannt, die als "Taxicab-Zahlen" bezeichnet werden und als die Summe von zwei n-ten Potenzen (positiver Ganzzahlen) auf zwei (oder manchmal "k") verschiedene Arten ausgedrückt werden können.
1729 ist die kleinste natürliche Zahl, die als Summe von 2 Würfeln auf zwei verschiedene Arten ausgedrückt werden kann. Damit ist sie die erste Taxizahl "3,2" ("n, k" ist allgemein).
Herausforderung
Entscheiden Sie anhand einer Zahl, ob es sich um eine "3,2" -Nebenstellennummer handelt. Dies bedeutet, dass sie die gleiche Bedingung wie 1729 (2 eindeutige Würfelsummen) erfüllt, jedoch nicht die kleinste solche Ganzzahl der "3" sein muss Klasse 2 (das ist natürlich 1729).
Beispielfälle:
1729 = 10 ^ 3 + 9 ^ 3 = 12 ^ 3 + 1 ^ 3
4104 = 15 ^ 3 + 9 ^ 3 = 16 ^ 3 + 2 ^ 3
13832 = 2 ^ 3 + 24 ^ 3 = 18 ^ 3 + 20 ^ 3
Sowie 20683, 32832, 39312 ...
Wertung
Das ist Code-Golf , also gewinnt die kürzeste Antwort in jeder Sprache.
Grober Matlab-Code, um andere Fälle mit Gewalt zu finden:
for k = 1729:20000
C = sum(round(mod(real((k-[1:ceil(k^(1/3))].^3).^(1/3)),1)*10000)/10000==1);
if C > 1
D = (mod(C,2)==0)*C/2 + (mod(C,2)==1)*((C+1)/2);
disp([num2str(k),' has ',num2str(D),' solns'])
end
end
quelle
Antworten:
05AB1E , 9 Bytes
Code (sehr langsam)
Code (viel schneller), 12 Bytes
Verwendet die 05AB1E- Codierung. Probieren Sie es online!
Erläuterung
quelle
Gelee , 9 Bytes
Dank an Erik den Outgolfer.
Probieren Sie es online!
Dies ist zu langsam, als dass es
1729
online überhaupt nicht funktionieren würde .Viel schneller, 12 Bytes
Dank an Dennis.
Probieren Sie es online!
quelle
Ðf⁸
werden kannfR
. Der zweite⁸
kann entfernt werden.Œċ*3S€ċ>1
.Mathematica, 35 Bytes
Reine Funktion, die eine positive ganze Zahl annimmt und
True
oder zurückgibtFalse
.#^3+#2^3&~Array~{#,#}
tabelliert alle Würfelsummen zweier Ganzzahlen zwischen 1 und der Eingabe. (Dies wäre viel schneller, wenn die zu würfelnden Ganzzahlen sinnvoll gebunden wären, wie die Kubikwurzel der Eingabe. Dies würde jedoch wertvolle Bytes in Anspruch nehmen. Der Code benötigt für die Eingabe ungefähr 30 Sekunden13832
und skaliert mindestens quadratisch in der Eingabe.)Count[...,#,2]
zählt, wie oft die Eingabe in dieser Liste auf Verschachtelungsebene 2 erscheint; Ist diese Zahl größer als2
, handelt es sich bei der Eingabe um eine Semi-Taxicab-Zahl (größer als 2 und nicht größer als 1, da a ^ 3 + b ^ 3 und b ^ 3 + a ^ 3 separat gezählt werden).quelle
Mathematica,
3837 Bytes-1 Byte dank @GregMartin
Wie immer ist in alles eine Mathematica eingebaut.
quelle
Tr[1^...]
funktioniert meiner Meinung nach anstelle vonLength@
.JavaScript (ES7), 63 Byte
Eine relativ schnelle rekursive Funktion, die schließlich einen Booleschen Wert zurückgibt.
Demo
Code-Snippet anzeigen
quelle
Mathematica, 48 Bytes
Eingang
Ausgabe
quelle
#!=1729&&
dass dies nach der Klärung der Spezifikation nicht mehr erforderlich ist.Solve
eher als verwendenReduce
?Length@Solve[x^3+y^3-#==0<x<y,{x,y},Integers]>1&
das das ersetzt wird&&
mit-
und ein bisschen Neuordnung ersetzt wird.Python, 71 Bytes
Probieren Sie es online aus
quelle
MATL (
1615 Bytes) (13idealerweise 12)Probieren Sie es online!
Erläuterung:
Basierend auf der Jelly-Lösung von 'Leaky Nun', die gerade zu MATL konvertiert wurde, wahrscheinlich in einigen Teilen überflüssig ist und verbessert werden kann:
Hinweis: Falsche Ausgaben umfassen 0 und -1, wahrheitsgemäße Ausgabe ist 1. Dank Luis Mendo für das Speichern eines zusätzlichen Bytes, bei dem "s1>" durch "sq" ersetzt wurde.
Idealerweise (
13 bis12 Bytes):... ist genug, aber für größere Zahlen stürzt dies auf der Seite von tio.run ab.
quelle
1>
durchq
. Auch hast duH
stattG
in der Erklärung. Die Tatsache, dass das Programm bei großen Zahlen abstürzt, ist für die Wertung normalerweise unerheblich. Wenn es bei genügend Zeit und genügend Arbeitsspeicher funktioniert, ist das akzeptabel, sofern die Herausforderung nichts anderes angibtRuby , 52 Bytes
Probieren Sie es online!
Da diese Version eine massive n schafft 2 Größe Array, schlägt es auf alle wahren Testfällen höher als
1729
hier ist eine modifizierte Version , die eine kleinere Array - Größe von etwa n 2/3 , die erfolgreich überprüft zumindest bis 31392 auf.Probieren Sie es online! (geändert)
quelle
PHP , 76 Bytes
Probieren Sie es online!
Suche bis 400000 Online testen!
quelle