日記
ダメだ猛烈に眠い。
ご飯を食べて9時まで寝て起きて目覚ましをセットして10時まで寝て起きて目覚ましをセットして11時まで寝て11時15分まで寝て、さすがにやばくて飛び起きて椅子の上でねむねむ。13時からミーティング…。うーん。
あっ、そうだ、栄養ドリンクがあったんだ。
すごい、「カフェインが含まれた栄養ドリンクを飲んだ」という意識のせいで一気にエネルギーがわいてきた(気のせい)
__ @早稲田研究開発センター。 ミーティング終了。 さて、ここから一番近い、生産性を発揮できる場所はどこだ? ふむ、秋葉原まで16分か。
__ @秋葉原の喫茶ルノワール。 個々の文章は西尾泰和のブログ: logに移動。
__ 秋葉原から西船橋駅の電車に乗ったら、運良く目の前の人が降りて座れたので ここぞとばかりにBrainf*ck(ぇ
Python onelinerのことをpo、Python oneliner compressedのことをpocと呼ぶことにします。
"bf2po.py"は下のようになります。
bf = file("primes.txt").read()
po = "import sys; from itertools import ifilter, count;"
po += "globals().__setitem__('p', 0)"
for c in bf:
if c == "+":
po += " or globals().__setitem__(p, (globals().get(p, 0) + 1) % 256)"
elif c == "-":
po += " or globals().__setitem__(p, (globals().get(p, 0) + 255) % 256)"
elif c == ">":
po += " or globals().__setitem__('p', p + 1)"
elif c == "<":
po += " or globals().__setitem__('p', p - 1)"
elif c == ".":
po += " or sys.stdout.write(chr(globals().get(p, 0)))"
elif c == ",":
po += " or globals().__setitem__(p, ord(raw_input('>')[0]))"
elif c == "[":
po += " or (ifilter(bool, (globals().get(p, 0) == 0"
elif c == "]":
po += " for x in count())).next() and 0)"
exec(po)
なんかえらい簡単に動いちゃいましたよ、竹迫さんの100までの素数を列記するプログラムは。テスト用にもっとBrainf*ckのコードを集めてきた方がよさそうだけど、でも間違える余地はあんまり残ってないですよ。まだ新小岩ですよ。 うーん。bf2poc.pyを作るか、それともbf2po.poを作るか…。
exec("import sys; from itertools import ifilter, count; globals().__setitem__('p', 0)"
+ " ".join({
"+":
"or globals().__setitem__(p, (globals().get(p, 0) + 1) % 256)",
"-":
"or globals().__setitem__(p, (globals().get(p, 0) + 255) % 256)",
">":
"or globals().__setitem__('p', p + 1)",
"<":
"or globals().__setitem__('p', p - 1)",
".":
"or sys.stdout.write(chr(globals().get(p, 0)))",
",":
"or globals().__setitem__(p, ord(raw_input('>')[0]))",
"[":
"or (ifilter(bool, (globals().get(p, 0) == 0",
"]":
"for x in count())).next() and 0)"}[c] for c in file("primes.txt").read())
)
bf2po.poがほぼ完成。unixコマンドっぽくするにはexecの代わりにprintを使って、頭でimport sysしてファイル名をsys.argv[1]にすればいいかと。 あー、でもunixコマンドっぽいというと、ファイルを引数で渡すだけじゃなくて標準入力からも読めた方がいいですね。うーん。Windows使いなので標準入力から読むプログラム作ったことがありません。
もうすぐ終点。次は何をしたら面白いかなぁ。
__ 9時半だけど超眠い。今、会場に一番近い駅に12:30に着く電車を調べたら8時半発だったorz バスもあるらしいけど、もうないんだろうなぁ。ささださんが昨日の時点でバス取れなかったって書いてるし…。 とりあえず眠いんだから寝よう。そして5時ぐらいに起きて頑張ろう。