Kürzlich habe ich eine bijektive Abbildung f von positiven ganzen Zahlen auf endliche, verschachtelte Sequenzen gefunden. Der Zweck dieser Herausforderung besteht darin, sie in der Sprache Ihrer Wahl zu implementieren.
Das Mapping
Betrachten Sie eine Zahl n mit den Faktoren wo . Dann:
Beispielsweise:
Regeln
- Sie können ein vollständiges Programm oder eine Funktion schreiben, um diese Aufgabe zu erledigen.
- Die Ausgabe kann in jedem Format erfolgen, das als Sequenz erkennbar ist.
- Eingebaute Funktionen für Primfaktorisierung, Primalitätstests usw. sind zulässig .
- Standardlücken sind nicht zulässig.
- Ihr Programm muss den letzten Testfall auf meinem Computer in weniger als 10 Minuten abschließen.
- Das ist Code-Golf, also gewinnt der kürzeste Code!
Testfälle
10
:{{},{{}},{}}
21
:{{{}},{},{{}}}
42
:{{{}},{},{{}},{}}
30030
:{{{}},{{}},{{}},{{}},{{}},{}}
44100
:{{{{}}},{{{}}},{{{}}},{},{}}
16777215
:{{{{}}},{{}},{{}},{},{{}},{{}},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{{}}}
16777213
: Pastebin
Antworten:
Pyth, 29 Bytes
Demonstration
Dies definiert eine Funktion,
'
die das gewünschte Mapping durchführt.Eine Hilfsfunktion
y
führt die Abbildung bei einer Primzerlegung rekursiv durch. Der Basisfall und die Primzerlegung werden in durchgeführt'
.quelle
CJam,
514844424139343331 BytesProbieren Sie es online im CJam-Interpreter aus .
Danke an @ MartinBüttner für das Golfen mit 3 Bytes!
Vielen Dank an @PeterTaylor für das Golfen mit 3 Bytes und den Weg für 1 weiteren!
Zumindest auf meinem Computer dauert das Herunterladen der Datei länger als das Ausführen des Programms ...
I / O
Dies ist eine benannte Funktion, die eine Ganzzahl aus STDIN abruft und ein Array zurückgibt.
Da CJam nicht zwischen leeren Arrays und leeren Zeichenfolgen unterscheidet - eine Zeichenfolge ist einfach eine Liste, die nur Zeichen enthält - sieht die Zeichenfolgendarstellung folgendermaßen aus:
Bezug nehmend auf das folgende, verschachtelte Array
Nachprüfung
Wie es funktioniert
quelle
mf e=
ist viel besser als das, was ich gefunden habe, als ich einen Gesundheitstest durchgeführt habe, während die Frage im Sandkasten war, aber eine Verbesserung, die ich gefunden habe, die Sie nicht verwendet haben, ist das Mapping für die beiden als(0a*+
- dhri{}sa2*{mf_W=){mp},\fe=(0a*+0j\{)j}%*}j
. Und es gibt auch eine viel größere Verbesserung, die ich Ihnen ein paar Stunden Vorsprung verschaffen werde ...{mf_W=)1|{mp},\fe=(0a*+{)J}%}:J
1|
. Danke noch einmal!Mathematica, 88 Bytes
quelle