Derniers journaux de linuxcode :
- [06/12@21:14] Micro-SDRAM pour l'intégration dans microprocesseurs
- [21/06@22:20] 2.6.7 out
- [15/06@15:35] Développeur cherche le PieD de linuxfr désespérément
- [09/05@21:13] Comment arriver à devenir fou avec des penny ? (ou l'histoire d'IPv6 ;) )
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"
text = raw_input("Type your text : ")
print "The result : " + rot13(text)
-8<--------------------------------------------------------------------------------------
En espérant que les geeks aimeront :)
> Lire le journal (5 commentaires, moyenne: 3,6).
oupppsss
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).
A remplacer par chiffres
A little bit more pythonic version
Il me semble...
def rot13_v2_1(c):
C = c.upper()
d = ord(c)-ord(C)
if 'A' <= C <= 'Z':
return chr(((ord(C) - ord('A') + 13) % 26 + ord('A')) + d)
elif '0'<=C <='9':
return chr(((ord(C) - ord('0') + 5) % 10 + ord('0')))
else:
return c
def rot13_v2(chaine):
return "".join( map(rot13_v2_1, chaine) )
if __name__=="__main__":
print "ROT13 DECODER/ENCODER"
print
text = raw_input("Type your text : ")
print "The result : " + rot13_v2(text)
-
[^]Re: A little bit more pythonic version
Posté par alexissoft (Jabber id, page perso, ) le 11/12/2004 à 20:20. (lien). Évalué à 0.C'est vrai, seulement j'ai codé ça à l'arrache, juste pour montrer les capacités de python à quelqu'un a qui j'apprend python.
Merci, ça permet d'alléger et d'accélerer le code :)
Allez je vous écrase tous ;-)
>>> import codecs
>>> 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 () le 13/12/2004 à 16:02. (lien). Évalué à 2.oui, mais non. Le monsieur a dit rot13v2, qui pourrait être quelque chose comme ça:
>>> 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 ...
Les journaux sont destinés à des informations qui ne sont pas suffisamment intéressantes
pour être validées en dépêche (sinon n'hésitez pas à proposer votre information en
dépêche), qui sont sans rapport avec Linux ou le libre, ou simplement pour donner votre
avis. Si vous désirez poser une question, merci d'utiliser 

Cette discussion est archivée, il n'est plus possible de laisser des commentaires.
Note : les commentaires appartiennent à ceux qui les ont postés. Nous n'en sommes pas responsables.