OneLiner何かの拍子にこの記事を見かけてしまい、衝撃を受けた。兼雑記Perlってこんな変態プログラムが書けてしまうのか...!!と。記号だけでプログラムが書けてしまうとは全然知らなかった。拡張正規表現の構文を利用して任意のコードを実行させる文字列は文字列同士の排他的論理和をとることで生成できるということらしい。「どの文字とどの文字の排他的論理和がどの文字になるか」を把握していれば、そこから文字列を生成することができるわけで、自分でもこうした記号プログラムが書けるのではないか?と思って、作ってみた。任意のワンライナーを記号で表現しなおすためのスクリプト。qq|("$lhs"^"$rhs")|;}正規表現がイマイチ使いこなせず、かなり苦労している...orzいちおう、これを使えば、ワンライナーを記号化できる、はず。このスクリプトで作成している辞書をDumpしてみれば分かる通り、'()*+,-./0123456789:'の文字は記号同士の排他的論理和では作成することが出来ない。'+-*/'とかはそのまま出力すればいいんだけど、数字が作れないのには困ってしまう。排他的論理和じゃなくて論理積を使えば8と9だけは作れるようになるけど、それはそれで他のアルファベットなどが作れなくなってしまうし。いまのところこのスクリプトではそこは未解決なので数字はそのまま使われてしまう。'""!~("(?{".("],@@]^@.^"^"-^).)~)@*")."(".("/!@@^"^"]@.\$~")."6)".("^"^"~")."+".("@"^"`")."1,".("}^}@}"^"]|!._")."})")'6と1がそのまま使われてしまう...この場合どうすればいいんだろう。入力のワンライナー側で数字を使わないようにするしか。利用して文字列の長さや論理否定で数字を作る荒技。!$[<<!$[というカンジで置き換えてやる、というのが今のところ思いつく方法。他に何か良い手はないかなぁ。いう記事を書...2009-12-312009年を振り返る。参加してきた毎度参加させていただきありがとうございます。