Voilà alors j'ai eu l'idée, rot13 marchant que sur les caractères, il fallait donc encrypter les caractères, alors très simple puisque 13+13=26 donc A + 26 = N + 26 (voilà comment marche rot13), il suffit de faire 1 + 5 = 6 + 5 (en gros hein, parce qu'ensuite on fout un modulo).
Du coup ROT13v2 donne : EBG68i7
Alors voilà l'implémentation en python, version masterisée et remixée de http://www.miranda.org/~jkominek/rot13/python/rot13.py(...)
-8<--------------------------------------------------------------------------------------
#!/usr/bin/python
# -*- coding: iso-8859-15 -*-
def rot13(chaine):
result = ""
for x in range(len(chaine)):
byte = ord(chaine[x])
cap = (byte & 32)
byte = (byte & (~cap))
if (chaine[x] == ' '):
result = result + ' '
elif (byte >= ord('A')) and (byte <= ord('Z')):
byte = ((byte - ord('A') + 13) % 26 + ord('A'))
byte = (byte | cap)
result = result + chr(byte)
elif (byte >= 16) and (byte <= 25):
byte = ((byte - 16 + 5) % 10 + 16)
byte = (byte | cap)
result = result + chr(byte)
else:
result = result + chr(byte | cap)
return result
print "ROT13 DECODER/ENCODER"
print
text = raw_input("Type your text : ")
print "The result : " + rot13(text)
-8<--------------------------------------------------------------------------------------
En espérant que les geeks aimeront :)
# oupppsss
Posté par alexissoft . Évalué à 3.
A remplacer par chiffres
# A little bit more pythonic version
Posté par David Douard . Évalué à 9.
[^] # Re: A little bit more pythonic version
Posté par alexissoft . Évalué à 0.
Merci, ça permet d'alléger et d'accélerer le code :)
# Allez je vous écrase tous ;-)
Posté par Boa Treize (site web personnel) . Évalué à 4.
>>> rot13 = codecs.getencoder('rot13')
>>> rot13('Deux lignes de code seulement ! ;-)')[0]
'Qrhk yvtarf qr pbqr frhyrzrag ! ;-)'
[^] # Re: Allez je vous écrase tous ;-)
Posté par syntaxerror . Évalué à 2.
>>> def rot13v2(chaine) :
... import codecs
... import string
... rot13=codecs.getencoder('rot13')
... return rot13(chaine)[0].translate(string.maketrans("","").replace("0123456789","5678901234"))
...
>>> rot13v2("ROT13v2")
'EBG68i7'
Je suppose que c'est mieux de définir son propre codec, mais franchement j'ai la flemme ...
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.