Subscribed unsubscribe Subscribe Subscribe

SE Can't Code

A Tokyo based Software Engineer. Not System Engineer :(

サクっとRot13を実装する

Frontend Python

ノロウイルスが治り、3日遅れながらも今年初出社いたしました。 病み上がりなので、GAEとPythonでROT13ストレッチをします。

ROT13(rotate by 13 places)

文字を任意の個数ずらすシーザー暗号の一種で、暗号化と復号化が同じ仕組でできる。 13字ずらす方式であり、アルファベットが26字なので13字ずらすことを2回やると元に戻る。

"ABC".encode('rot13')
'NOP'

実装


結果

これが..

f:id:fixxman:20150109035053p:plain


こうなる!

f:id:fixxman:20150109035057p:plain


ポチポチすると綺麗に13字ずれたり戻ったりするので楽しいです。
ROT13ですがいろいろな処理の組み方があります。上記実装では、PythonのencodeでROT13を指定すると組み込まれるので楽な形となります(しかしPython3系では使えないようです)。自分で頑張って実装してみた場合は以下になります。


def rot13(s):
    chars = "abcdefghijklmnopqrstuvwxyz"
    trans = chars[13:]+chars[:13]
    rot_char = lambda c: trans[chars.find(c)] if chars.find(c)>-1 else c
    return ''.join( rot_char(c) for c in s ) 


会社から帰ってからコード書いてると時間を忘れて深夜になりますね。
現在、深夜4時、、睡眠不足はいけません。

Remove all ads