2chのトリップを生成する
2ちゃんねるのトリップをPythonで生成するにはどうしたらいいだろう? Perl版のコードならwikipediaにある。
トリップ (電子掲示板) - Wikipedia
そのまま変換するとこうなるか。
import re from crypt import crypt from string import maketrans tripkey = '#istrip' tripkey = tripkey[1:] salt = (tripkey + 'H.')[1:3] salt = re.sub('[^\.-z]', '.', salt) salt = salt.translate(maketrans(':;<=>?@[\\]^_`', 'ABCDEFGabcdef')) trip = crypt(tripkey, salt) trip = trip[-10:] trip = '◆' + trip print trip
Windows用のPythonにはcryptライブラリが入っていないので、代わりに fcrypt を使わせてもらおう。 http://home.clear.net.nz/pages/c.evans/sw/
例によって、そのまま移植すると効率が悪くなる。何回も実行する場合、正規表現や変換テーブルは事前に作っておいた方がいい。いや、むしろ正規表現なんか使わず、全部translate、もしくは辞書で変換したほうが早いのかな。
あと、Pythonの文字列は普遍性を持つので、文字列の足し算やスライシングは効率が悪いらしい。デフォルトの塩を取り出す部分は IndexError をキャッチした方がいいかも。
適当に書いてもかなりの速度が出るPerlのインタプリタ(コンパイラ?)はすごい。