Une permutation d'un ensemble est une bijective fonction . Par exemple, si alors la fonction est une permutation:
Nous pouvons également avoir des permutations sur des ensembles infinis, prenons comme exemple: La fonction est une permutation, permutant l'impair et même entiers par blocs de deux. Les premiers éléments sont les suivants:
Défi
Votre tâche pour ce défi est d'écrire une fonction / programme mettant en oeuvre une 1 permutation sur les nombres naturels positifs. Le score de votre solution est la somme des points de code après leur mise en correspondance avec la permutation implémentée.
Exemple
Supposons que nous prenions la permutation ci-dessus implémentée avec Python:
def pi(x):
return x - 1 + 2*(x % 2)
Le caractère d
a un point de code , . Si nous faisons cela pour chaque personnage, nous obtenons:
La somme de tous ces caractères mappés est , ce serait le score de cette fonction.
Règles
Vous allez implémenter une permutation en tant que fonction ou programme
- étant donné un nombre naturel , retour / sortie
- aux fins de ce défi ne contient pas
- la permutation doit permuter non trivialement un sous-ensemble infini de
- votre fonction / programme n'est pas autorisé à lire sa propre source
Notation
Le score est donné par la somme de tous les points de code (zéro octet peut ne pas faire partie du code source) sous cette permutation (les points de code dépendent de votre langue 2 , vous êtes libre d'utiliser SBCS, UTF-8, etc. tant que votre langue le prend en charge).
La soumission avec le score le plus bas gagne, les égalités sont rompues par la soumission la plus ancienne.
À l'exception des permutations qui ne permutent qu'un sous-ensemble fini de , ce qui signifie que l'ensemble doit être infini.
Si cela améliore votre score, vous pouvez par exemple utiliser une soumission Jelly encodée en UTF-8 au lieu du SBCS habituel.
Réponses:
Jelly , score
288 250 212199-38 merci à Erik l'Outgolfer!
Échange même avec impair.
Le score est de67+45+44+43=199 - voir auto-score ici .
Essayez-le en ligne!
la source
-*ạ
a un score de 300 ... cependant,-*_@
a un score de 250. Peut-être que je devrais l'afficher comme le mien, bien que ce soit la même permutation.-*N+
marque 212C-*+
sonner comme une future variation deC++
.JavaScript (ES6), score =
276268Essayez-le en ligne!
la source
54^54
est0
Perl 6 , score: 201
Essayez-le en ligne!
Réponse du port d' Arnauld . Cela profite de xor (
+^
) ayant la même priorité que-
et+
, et de l'utilisation d'un lambda Quel que soit pour réduire les caractères globaux. En dehors de cela, je n'ai pas pu trouver un moyen de le représenter différemment qui a obtenu un meilleur score.Perl 6 , score
804702Essayez-le en ligne!
La première réponse de type quine-y ici, et je pense qu'elle réussit assez bien.
Cela produit la séquence23,22,25,24... partir du corps de la question avec la plage 1,2,3,4...21 insérée aux index des points de code triés uniques du code. Par exemple, les 30ème à 35ème éléments de la séquence sont 50,53,52,1,55,54 puisque le 33ème point de code est
!
et c'est le point de code le plus bas de mon code.la source
Score Python 2 :
742698694 pointsEssayez-le en ligne!
-44 points grâce à Ørjan Johansen; -4 points thx à xnor.
la source
96
par~~
.Retina 0.8.2 , 6 octets, score 260
Essayez-le en ligne! Le lien inclut un pied de page auto-scorant. Échange simplement les chiffres
1
et9
et3
et7
dans les représentations décimales, de sorte que les nombres qui ne contiennent pas de chiffres coprime vers ne10
soient pas affectés.la source
C # (Visual C # Interactive Compiler) , 22 octets, score
247245Essayez-le en ligne!
Simple, s'il est inférieur à 66, renvoie 66 moins d'entrée, sinon utilisez la formule de la question qui permute les nombres pairs et impairs.
la source
A=>A<66?66-A:A
?TI-BASIC, 9 octets, score
108810511000Échange même avec impair. Cartes
Ans-1
paires et cartes impairesAns+1
.TI-BASIC est tokenisé, donc ce programme aura les valeurs hexadécimales suivantes:
Ainsi, le score est:113 + 114 + 195 + 171 + 49 + 185 + 49 + 11 + 113 = 1000
Programme de test de sortie:
Quelles sorties:
Remarques:
Les valeurs des jetons de TI-BASIC peuvent être trouvées ici .
Pause
est utilisé dans le programme de sortie pour mieux voir la permutation, car la calculatrice n'a que 8 lignes. Appuyez sur [ENTER] pour afficher la permutation suivante.la source
Fusain , 13 octets, score 681
Essayez-le en ligne! Le lien est vers une version à auto-évaluation avec en-tête pour mapper sur un tableau de codes d'octets. (Le charbon de bois a une page de codes personnalisée, j'ai donc inséré manuellement les codes d'octets corrects dans l'entrée.) Fonctionne en inversant les plages de 233 nombres, de sorte que 117, 350, 583 ... restent inchangés. Explication:
la source
Haskell, score 985
Essayez-le en ligne!
la source
a*200
n'a aucun effet modulo 200, donca
peu importe.sum[1|...]
plusif..then..else
devrait aider.05AB1E , score: 488 dans la page de codes de 05AB1E
Échange impair et même comme la fonction d'exemple.
J'essaierai d'améliorer le score d'ici.
Essayez-le en ligne avec une entrée dans la gamme
[1, 100]
ou essayez-le en ligne avec les points de code.Explication:
la source
Brainfuck, 47 octets, score 2988
Essayez-le en ligne!
J'ai utilisé la permutation donnée dans l'introduction. Comme il s'agit d'une bijection, vous pouvez l'utiliser comme un simple chiffrement symétrique similaire à ROT13 ou Atbash. Ma solution fonctionne sur des cellules illimitées. Cependant, en vous limitant aux cellules 8 bits, vous pourriez économiser 2 points en les remplaçant
[-]
par[+]
.la source