On 14 Feb, 20:06, "Beej" <[EMAIL PROTECTED]> wrote:
> http://linuxgazette.net/109/pramode.html
Thanks, that's a _really_ interesting link (Oh, I need to learn
Scheme!)
My code now looks like this, which I'm starting to feel much happier
about in a functional sense.
c_rot = lambda c, chars : (chr((ord(c) - ord(chars[0]) +
(len(chars) // 2)) % len(chars) + ord(chars[0])))
c_rot13 = lambda c : (((c, \
c_rot(c, string.ascii_uppercase)) [c in string.ascii_uppercase]),
\
c_rot(c, string.ascii_lowercase)) [c in string.ascii_lowercase]
rot13 = lambda s : string.join([ c_rot13(c) for c in s ],'')
I also considered this, but don't trust it as it relies on the two
sets being mutually disjoint between their inputs and outputs.
qc_rot = lambda c, chars : (c, c_rot(c, chars)) [c in chars]
c_rot13 = lambda c : (qc_rot( qc_rot(c, string.ascii_lowercase),
string.ascii_uppercase))
--
http://mail.python.org/mailman/listinfo/python-list