Introduction:
J'ai des tas de chiffrements différents stockés dans un document que j'ai compilé une fois 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 troisième et le plus simple (après le chiffre informatique et le chiffre Trifid que j'ai posté plus tôt).
Avec un chiffrement d'horloge, nous utilisons l'image suivante pour chiffrer le texte:
Donc une phrase comme ça this is a clock cipher
deviendrait:
t h i s i s a c l o c k c i p h e r (without additional spaces of course, but added as clarification)
19:7:8:18:00:8:18:00:AM:00:2:11:14:2:10:00:2:8:15:7:4:17
Défi:
Étant donné une chaîne sentence_to_encipher
, chiffrez-la comme décrit ci-dessus.
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 n'êtes pas autorisé à ajouter des zéros en tête pour les lettres cryptes un chiffre
b
parj
, mais deux zéros00
sont obligatoires pour les espaces. - Vous devez utiliser
:
comme séparateur, et un début ou une fin supplémentaire:
n'est pas autorisé. - Vous êtes autorisé à utiliser des minuscules
am
etpm
au lieu de majusculesAM
etPM
, tant qu'il est cohérent.
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 non-golfeur 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 clock cipher"
Output: "19:7:8:18:00:8:18:00:AM:00:2:11:14:2:10:00:2:8:15:7:4:17"
Input: "test"
Output: "19:4:18:19"
Input: "what time is it"
Output: "22:7:AM:19:00:19:8:12:4:00:8:18:00:8:19"
Input: "acegikmoqsuwy bdfhjlnprtvxz"
Output: "AM:2:4:6:8:10:12:14:16:18:20:22:24:00:1:3:5:7:9:11:13:15:17:19:21:23:PM"
Input: "easy peazy"
Output: "4:AM:18:24:00:15:4:AM:PM:24"
[7, ":", 8, ":", "00", ":", 1, ":", 14, ":", 1]
pourhi bob
, ou doit-on joindre le résultat? Au fait, chiffrement soigné!['7', ':', '8', ':', '0', '0', ':', '1', ':', '1', '4', ':', '1']
).Réponses:
Python 2 ,
7472 octetsEssayez-le en ligne!
Prend l'entrée en minuscules
la source
05AB1E ,
2221 octetsEssayez-le en ligne! ou comme suite de tests
Quelques solutions alternatives de 21 octets:
la source
ª
avait changé :)Perl 6 , 47 octets
Essayez-le en ligne!
Anonyme Quel que soit lambda qui prend une chaîne dans les deux cas et renvoie la chaîne chiffrée.
Explication:
la source
Pyth, 25 octets
Essayez-le en ligne ici ou vérifiez tous les cas de test en même temps ici .
la source
JavaScript (Node.js) , 72 octets
Prend l'entrée en minuscules.
Essayez-le en ligne!
la source
Java (JDK) , 95 octets
Essayez-le en ligne!
Crédits
la source
char
àvar
. :)C # (Visual C # Interactive Compiler) , 70 octets
Prend l'entrée comme une chaîne de lettres minuscules. Vérifiez d'abord si le caractère est un espace, et si c'est le cas, convertissez-le en
00
. Ensuite, il vérifie si le caractère est un A et le convertit enAM
. Il vérifie à nouveau Z et le convertitPM
si c'est le cas. Enfin, si le personnage réussit tous les contrôles, il est converti dans son ordre alphabétique-1.-2 octets grâce à @dana
Essayez-le en ligne!
la source
Rubis , 49 octets
Essayez-le en ligne!
Réponse de Port of Jo King's Perl . Prend l'entrée comme un tableau de caractères, renvoie une chaîne avec AM / PM en majuscules.
la source
Rouge ,
124121110109 octetsEssayez-le en ligne!
la source
05AB1E , 20 octets
Très inspiré par les 22 octets de @ Mr.Xcoder dans le commentaire de la réponse 05AB1E existante par @Emigna .
Prend l'entrée comme une liste de caractères minuscules (serait de 21 octets avec un interligne
S
si je prends l'entrée comme une chaîne).Essayez-le en ligne ou vérifiez tous les cas de test .
Explication:
la source
Tcl , 100 octets
Essayez-le en ligne!
la source
C # (Visual C # Interactive Compiler) , 98 octets
Prend l'entrée comme un tableau de caractères (en minuscules). Essayez-le en ligne!
la source
s=>string.Join(':',s.Select(c=>new[]{c-97+"","AM","PM","00"}["az ".IndexOf(c)+1]))
.Fusain , 26 octets
Essayez-le en ligne! Le lien est vers la version détaillée du code. Prend l'entrée en minuscules (peut être trivialement changé en majuscules). Explication:
Définissez le caractère d'arrière-plan sur
:
. Cela comble les écarts entre les valeurs de sortie créées par le bon mouvement.Faites une boucle sur chaque personnage, en laissant un espace à chaque fois. (Le premier mouvement n'a aucun effet car le canevas est encore vide à ce stade.)
Allumez le caractère et si son espace,
a
ouz
sortie , alors le code approprié. J'utilise×0²
au lieu d'00
ici car ce dernier coûterait deux octets dans des séparateurs supplémentaires.Sinon, affichez la position indexée 0 de la lettre dans l'alphabet minuscule sous forme de chaîne.
la source
Gelée , 24 octets
Essayez-le en ligne!
la source