Il s'agit d'une méthode de cryptage simple qui utilise des chiffres PI pour coder un message, la méthode est simple:
La clé est juste un entier positif qui indique où commence la fenêtre puis:
Étant donné une chaîne à chiffrer, ne contenant que des lettres minuscules, pas d'espaces, vous prenez sa longueur, puis vous trouvez le Nième chiffre de PI, puis vous déplacez chaque lettre vers la droite pour le montant indiqué par le chiffre.
Par exemple, si la clé est 2
et que je veux encoder house
, je prends une fenêtre de 5 chiffres à partir du second: 14159
puis ça devient:
h -> i
o -> s
u -> v
s -> x
e -> n
a.- Votre programme / fonction / algorithme recevra deux paramètres, une chaîne composée uniquement de lettres minuscules sans espaces et la clé, qui sera juste un entier positif entre 1 (1 fait référence à 3) et 1000, ce qui pourrait être plus ou moins car je ne sais pas combien de temps faut-il pour calculer PI avec cette précision parce que:
b.- Vous devez calculer PI vous-même dans votre code, voici une page Web soignée à comparer avec: Pi Day . L'entrée ne devrait jamais vous faire calculer PI au-delà des 1000 chiffres, ce qui signifie que la longueur (message) + clé <= 1000.
En calculant Pi, je ne veux pas le coder dans votre code (idiot pour un code golf) ni utiliser aucune constante intégrée dans votre code ni aucune identité trigonométrique (2 * acos (0)) ni aucune référence Web.
c.- La sortie sera juste la chaîne cryptée.
Ceci est une question de code de golf, un code plus court gagne!
J'accepterai la réponse gagnante le 14 juillet 2014.
ArcCos(-1)
?Réponses:
CJam - 51
Exemple d'entrée:
Production:
Cela fonctionne pour (longueur de chaîne) + clé <= 2000, mais est assez lent pour l'interpréteur en ligne (toujours rapide avec l'interpréteur java).
Voici une version qui fonctionne jusqu'à 200 et vous pouvez essayer sur http://cjam.aditsu.net/ sans attendre trop longtemps:
la source
Python - 370
Ok, nice, a finalement obtenu la chose pi travailler avec grâce à link1 et lien2 .
Exemple de sortie:
et un autre:
la source
JavaScript - 167
173176Merci à Michael pour la représentation intelligente des pouvoirs de 16.
Cela peut calculer PI jusqu'au 16ème chiffre.
Le cas de test:
la source
m=1
etm<<=4
au lieu dem='0x1'
etm+=0
? Enregistre 3 octets.Python -
321304288285La plupart de la version golfée est facile à lire et à comprendre. La dernière ligne n'est pas golfée ci-dessous:
EDIT # 1: simplification de l'arithmétique de mon module.
EDIT # 2: refactorisé la formule BBP.
la source
Haskell - 265
267octets (pas d'E / S)p
est une version golfée de l'algorithme qui peut être trouvée à http://rosettacode.org/wiki/Pi#Haskelle
est la fonction d'encodage:Il ne fait pas de boucle si un index est en dehors de l'alphabet minuscule. Cela signifie que d'autres caractères peuvent glisser dans la chaîne codée:
Malheureusement, cela prend plusieurs secondes avec des décalages supérieurs à
10 000
pour calculer la sortie. Heureusement, lorsque vous utilisez le même décalage plusieurs fois, les chiffres ne doivent être calculés que la première fois.Bonus - décodage
Encore une fois si nous testons avec
isvxn
:la source
d 2 "isvsn"
devrait êtred 2 "isvxn"
CoffeeScript - 148 caractères / octets
Mon tout premier Code Golf
Malheureusement, il ne prend pas en charge le wrapping (donc az finirait par être une ponctuation)
Démo sur CSSDeck
Appelé avec:
la source