Introduction:
J'ai des tas de chiffrements différents stockés dans un document que j'ai compilé quand j'étais enfant, j'ai choisi quelques-uns de ceux que je pensais être les mieux adaptés aux défis (pas trop triviaux et pas trop difficiles) et les ai transformés en défis. La plupart d'entre eux sont toujours dans le bac à sable, et je ne sais pas encore si je vais tous les poster, ou seulement quelques-uns. Voici le deuxième (le chiffre informatique a été le premier que j'ai publié).
Pour le chiffre Trifid (sans utiliser de mot clé), l'alphabet (et un caractère générique supplémentaire) est divisé en trois tableaux 3 par 3:
table 1: table 2: table 3:
|1 2 3 |1 2 3 |1 2 3
-+----- -+----- -+-----
1|a b c 1|j k l 1|s t u
2|d e f 2|m n o 2|v w x
3|g h i 3|p q r 3|y z
Un texte que nous voulons chiffrer est le premier caractère par caractère codé en nombres table-ligne-colonne. Par exemple, le texte this is a trifid cipher
devient:
t h i s i s a t r i f i d c i p h e r
table: 3 1 1 3 3 1 3 3 1 3 3 2 1 1 1 1 3 1 1 2 1 1 2
row: 1 3 3 1 3 3 1 3 1 3 1 3 3 2 3 2 3 1 3 3 3 2 3
column: 2 2 3 1 3 3 1 3 1 3 2 3 3 3 3 1 3 3 3 1 2 2 3
Nous avons ensuite tout rangé par rang dans le tableau ci-dessus par groupes de trois:
311 331 331 332 111 131 121 121 331 331 313 133 232 313 332 322 313 313 132 333 313 331 223
Et ceux-ci sont transformés en caractères en utilisant les mêmes tables:
s y y z a g d d y y u i q u z w u u h u y o
Une chose à noter, la longueur d'entrée doit être coprime à 3. Donc, si la longueur est un multiple de 3, nous ajoutons un ou deux espaces de fin pour que la longueur d'entrée ne soit plus un multiple de 3.
Défi:
Étant donné une chaîne sentence_to_encipher
, chiffrez-la comme décrit ci-dessus.
Vous n'avez qu'à chiffrer étant donné le sentence_to_encipher
, donc pas besoin de créer de programme / fonction de déchiffrement également. Cependant, je pourrais faire un défi de partie 2 pour le déchiffrement à l'avenir (même si j'ai le sentiment que c'est trop trivial / similaire au processus de chiffrement).
Règles du défi:
- Vous pouvez supposer que le
sentence_to_encipher
testament ne contiendra que des lettres et des espaces. - Vous pouvez utiliser des minuscules ou des majuscules (veuillez indiquer celui que vous avez utilisé dans votre réponse).
- Vous pouvez choisir d'ajouter un ou deux espaces de fin lorsque la longueur d'entrée est 3 pour ne plus en faire un multiple de 3.
- Les E / S sont flexibles. L'entrée et la sortie peuvent être une chaîne, une liste / un tableau / un flux de caractères, etc.
Règles générales:
- C'est le code-golf , donc la réponse la plus courte en octets l'emporte.
Ne laissez pas les langues de golf de code vous décourager de publier des réponses avec des langues autres que le golf de code. Essayez de trouver une réponse aussi courte que possible pour «n'importe quel» langage de programmation. - Des règles standard s'appliquent à votre réponse avec des règles d'E / S par défaut , vous êtes donc autorisé à utiliser STDIN / STDOUT, des fonctions / méthodes avec les paramètres appropriés et des programmes complets de type retour. Ton appel.
- Les failles par défaut sont interdites.
- Si possible, veuillez ajouter un lien avec un test pour votre code (par exemple TIO ).
- De plus, l'ajout d'une explication à votre réponse est fortement recommandé.
Cas de test:
Input: "this is a trifid cipher"
Output: "syyzagddyyuiquzwuuh uyo"
Input: "test"
Output: "utbk"
Input: "output"
Possible outputs: "rrvgivx" (one space) or "rrzcc lr" (two spaces)
Input: "trifidcipher"
Possible output: "vabbuxlzz utr" (one space) or "vabbyzv rx ie " (two spaces)