Utiliser le module pour simplifier la saisie
Cela pourrait être trop simple d'une astuce, donc si c'est le cas, je vais juste le remplacer ou le supprimer.
Supposons que vous souhaitiez saisir deux caractères, "a" et "b" et renvoyer respectivement 1 et 2. Vous utiliseriez probablement des conditions pour cela, car cela a le plus de sens, et j'utiliserai une forme plus condensée pour cet exemple spécifique.
i:"a")+1+n
Cela vérifie si l'entrée est supérieure à "a" et ajoute 1. Puisque "a" renverra 0 et "b" 1, cela donnera 1 et 2. Cela fait assez bien le travail, mais dans le cas de notre entrées, nous pourrions aller encore plus loin.
i:3%n
Dans le module 3, 97, qui est l'équivalent numérique de "a", devient 1, et 98, qui est "b", devient 2. Pour deux nombres différents, il est garanti un mod qui donne des résultats uniques pour les deux. Pour plus de deux, il existe un mod qui donne des résultats uniques, mais je n'ai pas la prouesse mathématique de trouver le plus petit de manière simple (par exemple, si vous avez l'ensemble {100,101,102,103}, le mod 104 donnerait des résultats uniques pour chaque valeur en elle mais pas d'une manière très utile). Cependant, dans la plupart des cas, l'entrée étant limitée à quelques caractères alphabétiques, vous pouvez souvent trouver un mod qui fonctionne.
Pour trouver le plus petit module qui donne des résultats uniques pour deux nombres, a et b, procédez comme suit. Prenez la valeur absolue de la différence de a et b ( |a - b|
) et trouvez le plus petit nombre, n, qui ne le divise pas. par exemple pour 97 et 98, |98 - 97| = 1
et donc 2 serait le plus petit mod (mais pour notre programme de test, cela donne 1 pour 97 et 0 pour 98, donc le mod 3 est meilleur).