Der Titel von Numberphiles neuestem Video, 13532385396179 , ist ein Fixpunkt der folgenden Funktion f auf den positiven ganzen Zahlen:
Sei n eine positive ganze Zahl. Schreiben Sie die Primfaktorisierung wie gewohnt, zB 60 = 2 2 · 3 · 5, wobei die Primzahlen in aufsteigender Reihenfolge geschrieben werden und Exponenten von 1 weggelassen werden. Bringen Sie dann die Exponenten auf die Linie und lassen Sie alle Multiplikationszeichen weg, um eine Zahl f (n) zu erhalten. [...] zum Beispiel ist f (60) = f (2 2 · 3 · 5) = 2235.
(Die obige Definition stammt aus Aufgabe 5 von fünf 1.000-Dollar-Problemen - John H. Conway )
Man beachte , dass f (13532385396179) = f (13 · 53 2 · 3853 · 96179) = 13532385396179.
Aufgabe
Nehmen Sie eine positive zusammengesetzte Ganzzahl n
als Eingabe und Ausgabe f(n)
.
Ein anderes Beispiel
48 = 2 4 · 3, also f (48) = 243.
Testfälle
Weitere Testfälle finden Sie hier .
4 -> 22
6 -> 23
8 -> 23
48 -> 243
52 -> 2213
60 -> 2235
999 -> 3337
9999 -> 3211101
quelle
Antworten:
Python,
166162159 BytesIhr seid viel besser. Das habe ich benutzt! (Der Algorithmus, der das gelöst hat, nennt das)
quelle
Brachylog , 8 Bytes
Probieren Sie es online!
Erläuterung
Sie können
ℕ₂ˢ
( wählen Sie alle ganzen Zahlen größer oder gleich 2 aus ) anstelle von verwenden;1x
, was wahrscheinlich besser lesbar und eher im Sinne von Brachylog ist.quelle
Gelee , 6 Bytes
Probieren Sie es online!
Erläuterung
quelle
V
= "Zu einer Zeichenfolge verketten und als JellyḌ
(Konvertieren von Dezimal in Ganzzahl)?FḌ
in der Vergangenheit verwendet - das ist ein guter Tipp!Mathematica,
4336 BytesProbieren Sie es online!
quelle
DeleteCases
ist lang, können Sie verwenden/.1->""
oder/.1->##&[]
(alternative Form von/.1->Nothing
1
, um zu verhindern, dass es als syntaktisch analysiert wird... / (0.1)
.CJam , 8 Bytes
Probieren Sie es online!
Erläuterung
quelle
e_
abgeflacht, weil es das ist, wofür es da ist, aber es ändert nichts an der Punktzahl.e_
nur für eine tiefe Abflachung zu gehen und sie zu verwenden,:~
wenn es nur eine einzige Ebene ist.05AB1E , 10 Bytes
Probieren Sie es online!
quelle
05AB1E ,
1211 BytesProbieren Sie es online!
Erläuterung
quelle
48
.Pyth, 12 Bytes
Versuch es!
alternativ 12 Bytes
Versuch das!
Erläuterung
quelle
Pyth, 11 Bytes
Versuch es hier
quelle
Python 2 , 99 Bytes
Probieren Sie es online!
Wenn die Eingaben auf weniger als 6 beschränkt sind
2147483659
, können beidestr(...)
durch`...`
Speichern von 6 Bytes ersetzt werden (dieses Programm ist für betroffene Nummern ohnehin sehr langsam!).quelle
Ohm , 11 Bytes
Probieren Sie es online!
Erläuterung
quelle
Japt , 19 Bytes
Testen Sie es online!
Erläuterung
quelle
PHP , 88 Bytes
Probieren Sie es online!
quelle
C #,
206100 BytesVoll / Formatierte Version:
quelle
Javascript - 91 Bytes
Erläuterung
quelle
Java 8, 103 Zeichen
Ziemlich einfache Lösung.
Ungolfed:
quelle
Oktave , 69 Bytes
Probieren Sie es online!
Hat sich als ziemlich lang erwiesen, erzeugt aber die gewünschte Ausgabe.
Im Wesentlichen verwenden wir die Histogrammfunktion, um die Anzahl der Vorkommen der eindeutigen Werte in der Primfaktorisierung des Eingabewerts zu zählen.
factor()
Funktion gibt die Primfaktoren in aufsteigender Reihenfolge anunique()
Werte in diesem Arrayhist()
Gibt die Anzahl der Vorkommen zurückSobald wir die beiden Arrays haben (eines für eindeutige Faktoren, eines für Zählungen), verknüpfen wir die Arrays vertikal (übereinander) und reduzieren sie dann. Dies verschachtelt die Faktoren mit Zählungen.
Schließlich zeigen wir das Ergebnis als Zeichenfolge an, um sicherzustellen, dass keine Einsen im endgültigen Array übersprungen werden. Die einzige Zeit, zu der Einsen auftreten können, ist, wenn die Zählung 1 war, da 1 niemals ein Hauptfaktor sein wird. Diese Eliminierung erfolgt vor der Konvertierung in einen String, sodass Dinge wie die Zahl 10 davon nicht betroffen sind.
quelle
Ruby , 45 + 7 Bytes
Benötigt die Flagge
-rprime
.Probieren Sie es online!
quelle
Pyth - 16 Bytes
Versuch es
Eine andere Lösung:
quelle
FN
durchV
.r8
(Lauflängencodierung) scheint nützlich zu sein.R , 72 Bytes
Benötigt das
pracma
Paket, das nicht auf TIO installiert ist.quelle