Choisissez cinq caractères que votre langue prend en charge. Il y en a 5! = 5 × 4 × 3 × 2 × 1 = 120 façons de les organiser en une chaîne de 5 caractères contenant chaque caractère une fois; 120 permutations .
Choisissez vos caractères de telle sorte que, lorsque chacune des 120 chaînes est exécutée dans votre langue, les 120 sorties générées seront autant d'entiers uniques que possible, allant de 1 à 120 inclus.
Autrement dit, pour chacune des 120 permutations de vos 5 caractères produisant du code exécutable produisant un seul nombre, vous voulez que l'ensemble de tous ces nombres corresponde autant que possible à l'ensemble des entiers compris entre 1 et 120.
Donc, idéalement, votre première permutation produirait 1
, la suivante 2
, la suivante 3
, jusqu’à 120
. Mais cet idéal est probablement impossible pour la plupart des langues et des personnages.
Les chaînes de 5 caractères peuvent être exécutées comme suit:
- un programme sans entrée
- une fonction sans argument
- une commande REPL
Différentes chaînes peuvent être exécutées de différentes manières si vous le souhaitez
Pour que la sortie compte, il doit s'agir d'une sortie entière unique de manière normale , telle que:
- en cours d'impression sur la sortie standard
- retourné par la fonction
- le résultat de l'expression REPL
Le code doit se terminer normalement (ce qui peut impliquer une erreur tant que le numéro a été sorti en premier). Le code qui ne fonctionne pas du tout va bien, juste la sortie (inexistante) ne compte pas. La sortie numérique doit être en décimal, sauf si une base différente est la norme pour votre langue.
La soumission qui génère les nombres les plus distincts de 1 à 120 gagne. La soumission précédente l'emporte en cas d'égalité.
Remarques
- Vos 5 caractères ne doivent pas tous être différents, mais le fait de dupliquer les caractères réduit bien entendu le nombre de permutations.
- Les sorties float telles que
32.0
count et plain32
. (Mais32.01
ne serait pas.) - Les zéros non significatifs tels que
032
count et plain32
. - Les sorties valides doivent être déterministes et invariantes dans le temps.
- Nous traitons avec des caractères , pas des octets.
Exemple
Les caractères 123+*
sont un premier choix raisonnable pour le REPL de Python (ou de nombreux langages). Les 120 permutations et sorties résultantes sont:
123+* n/a
123*+ n/a
12+3* n/a
12+*3 n/a
12*3+ n/a
12*+3 36
132+* n/a
132*+ n/a
13+2* n/a
13+*2 n/a
13*2+ n/a
13*+2 26
1+23* n/a
1+2*3 7
1+32* n/a
1+3*2 7
1+*23 n/a
1+*32 n/a
1*23+ n/a
1*2+3 5
1*32+ n/a
1*3+2 5
1*+23 23
1*+32 32
213+* n/a
213*+ n/a
21+3* n/a
21+*3 n/a
21*3+ n/a
21*+3 63
231+* n/a
231*+ n/a
23+1* n/a
23+*1 n/a
23*1+ n/a
23*+1 23
2+13* n/a
2+1*3 5
2+31* n/a
2+3*1 5
2+*13 n/a
2+*31 n/a
2*13+ n/a
2*1+3 5
2*31+ n/a
2*3+1 7
2*+13 26
2*+31 62
312+* n/a
312*+ n/a
31+2* n/a
31+*2 n/a
31*2+ n/a
31*+2 62
321+* n/a
321*+ n/a
32+1* n/a
32+*1 n/a
32*1+ n/a
32*+1 32
3+12* n/a
3+1*2 5
3+21* n/a
3+2*1 5
3+*12 n/a
3+*21 n/a
3*12+ n/a
3*1+2 5
3*21+ n/a
3*2+1 7
3*+12 36
3*+21 63
+123* n/a
+12*3 36
+132* n/a
+13*2 26
+1*23 23
+1*32 32
+213* n/a
+21*3 63
+231* n/a
+23*1 23
+2*13 26
+2*31 62
+312* n/a
+31*2 62
+321* n/a
+32*1 32
+3*12 36
+3*21 63
+*123 n/a
+*132 n/a
+*213 n/a
+*231 n/a
+*312 n/a
+*321 n/a
*123+ n/a
*12+3 n/a
*132+ n/a
*13+2 n/a
*1+23 n/a
*1+32 n/a
*213+ n/a
*21+3 n/a
*231+ n/a
*23+1 n/a
*2+13 n/a
*2+31 n/a
*312+ n/a
*31+2 n/a
*321+ n/a
*32+1 n/a
*3+12 n/a
*3+21 n/a
*+123 n/a
*+132 n/a
*+213 n/a
*+231 n/a
*+312 n/a
*+321 n/a
Il y a 36 numéros générés, tous heureusement entre 1 et 120:
36, 26, 7, 7, 5, 5, 23, 32, 63, 23, 5, 5, 5, 7, 26, 62, 62, 32, 5, 5, 5, 7, 36, 63, 36, 26, 23, 32, 63, 23, 26, 62, 62, 32, 36, 63
Cependant, seuls 8 d'entre eux sont uniques:
36, 26, 7, 5, 23, 32, 63, 62
Donc, une telle soumission ne marquerait que 8 sur un maximum de 120.
c
langages similaires !!!