Récemment, j'ai trouvé un mappage bijectif f d'entiers positifs à des séquences imbriquées finies. Le but de ce challenge est de le mettre en œuvre dans la langue de votre choix.
La cartographie
Considérons un nombre n avec les facteurs où . Alors:
Par exemple:
Règles
- Vous pouvez écrire un programme complet ou une fonction pour effectuer cette tâche.
- La sortie peut être dans n'importe quel format reconnaissable comme une séquence.
- Les fonctions intégrées pour la factorisation principale, les tests de primalité, etc. sont autorisées .
- Les failles standard ne sont pas autorisées.
- Votre programme doit terminer le dernier cas de test en moins de 10 minutes sur ma machine.
- C'est le code-golf, donc le code le plus court gagne!
Cas de test
10
:{{},{{}},{}}
21
:{{{}},{},{{}}}
42
:{{{}},{},{{}},{}}
30030
:{{{}},{{}},{{}},{{}},{{}},{}}
44100
:{{{{}}},{{{}}},{{{}}},{},{}}
16777215
:{{{{}}},{{}},{{}},{},{{}},{{}},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{{}}}
16777213
: pastebin
Réponses:
Pyth, 29 octets
Manifestation
Cela définit une fonction,
'
qui effectue le mappage souhaité.Une fonction d'aide,,
y
effectue le mappage récursivement en fonction d'une décomposition principale. Le cas de base et la décomposition principale sont effectués dans'
.la source
CJam,
514844424139343331 octetsEssayez-le en ligne dans l' interpréteur CJam .
Merci à @ MartinBüttner pour avoir joué au golf sur 3 octets!
Merci à @PeterTaylor pour avoir joué au golf sur 3 octets et ouvert la voie à 1 autre!
Au moins sur mon ordinateur, le téléchargement du fichier prend plus de temps que l'exécution du programme ...
E / S
Il s'agit d'une fonction nommée qui apparaît et entier à partir de STDIN et pousse un tableau en retour.
Étant donné que CJam ne fait pas de distinction entre les tableaux vides et les chaînes vides - une chaîne est simplement une liste qui ne contient que des caractères -, la représentation de la chaîne ressemblera à ceci:
se référant au tableau imbriqué suivant
Vérification
Comment ça fonctionne
la source
mf e=
est beaucoup mieux que ce que j'avais trouvé quand j'ai fait un test de santé mentale alors que la question était dans le bac à sable, mais une amélioration que j'ai trouvée que vous n'avez pas utilisée est de faire le mappage pour les deux comme(0a*+
- c'est-à-direri{}sa2*{mf_W=){mp},\fe=(0a*+0j\{)j}%*}j
. Et il y a aussi une amélioration beaucoup plus importante sur laquelle je vais vous donner quelques heures d'avance ...{mf_W=)1|{mp},\fe=(0a*+{)J}%}:J
1|
. Merci encore!Mathematica, 88 octets
la source