Je suis censé déchiffrer le chiffre de César. Je dois déclarer une fonction crack : int * int -> int
de sorte que si (k, c)
sont du type int
, où k
est le texte déchiffré et c
le texte crypté, appelant crack(k, c)
retournera la clé (mod 10) n
, qui est nécessaire pour obtenir c
-k
. Un exemple serait que l'appel crack(20458790, 64892134)
retournerait 4.Crack le chiffrement césar en utilisant SML
Si c
est pas un codage correctement de k
, la fonction ne doit pas fonctionner réellement.
J'espère que je suis assez clair ici. Je comprends l'affectation réelle ici (j'ai k et c, j'ai besoin de n), mais je ne sais pas comment le montrer dans mon code.
J'ai oublié d'ajouter que, désolé. Si le second nombre (c) n'est pas un codage correct du premier, la fonction ne doit pas réellement fonctionner. J'ai essayé ce que vous avez suggéré, mais pour une raison quelconque, il retourne 6 au lieu de 4 lorsque je saisis les numéros ci-dessus. Une idée de pourquoi ça ferait ça? Merci! – GeorgeWChubby
Merci beaucoup! Je pense que j'ai finalement compris. Je devais juste dire (c mod 10 - k mod 10) mod 10 à la place. Je ne sais pas pourquoi, mais ça fonctionne. – GeorgeWChubby
@George: Oups, oui, j'ai changé les noms des variables. Cela fonctionne parce que c'est simplement en soustrayant le dernier chiffre de k du dernier chiffre de c. Donc, si vous ajoutez cette différence au dernier chiffre de c, vous obtenez le dernier chiffre de k. Et il en va de même pour tous les autres chiffres car tous les chiffres ont la même différence. – sepp2k