2007-01-01から1年間の記事一覧

Re: ambってCでも書けるのかな

ref: http://mono.kmc.gr.jp/~yhara/d/?date=20071229#p01 C + setjmp + longjmp で amb が実装できるかという話題。CPS 変換すればできそうですけど、CPS 変換すれば setjmp + longjmp がなくてもできそう *1 で面白くないので、無理矢理以下が動くように書…

ゆとり

IRC の %ruby で「ゆとり」と言われました。1981 年生 26 歳のおじさん *1 だから違う、と思ったんですが、wikipedia の解説によると広義のゆとり世代みたいですね。1980 年から段階的に施行しているらしいので。狭義のゆとり世代は 1987 年以降生まれのよう…

大晦日

今年のまとめ。 ウォーキングを始めた。最初に歩いたのは山手線で、その理由は「夜 7 時から渋谷で飲み会があるから、朝 7 時に行って一周しよう (?)」という話になったからです。実際には朝起きれなくて 9 時頃スタートになった上、飲み会にも 5 分ほど遅刻…

東と西のどっちがどっちかわからなくなる病

以前 left と right のどっちがどっちかわからなくなる病患者であることをカミングアウトしましたが、実はこっちの病気でもあります。この病気の原因も考えてみたのですが、これは間違いなく「みぎ」と「ひだり」との音の類似のせいに違いないです。ローマ字…

都営浅草線徒歩

先週の土曜日はあまり天気がよくなかったので、期待度が低くて短めの地下鉄から都営浅草線を選んで歩きました。西馬込から、泉岳寺や新橋、銀座、浅草を通って押上まで。線路の距離で 18.4 km 、歩行距離で 23.3 km 。所要時間は 9 時から 17 時までの 8 時…

OCaml-Nagoya の人たちと飲み会

もう 1 週間も前の話ですが、OCaml-Nagoya の人たちや ocaml.jp の管理人などと飲み会でした。内容が秘密情報なのか公開情報なのか確認しなかったのでどこまで語って良いのかわかりませんが、とりあえず近いうちに日本の OCaml コミュニティが加速するような…

pointer-free な C 言語はチューリング完全か

C

ポインタのない C 言語 *1 はチューリング完全でしょうか。昨日は酒井さんとの話で では pointer-free な C 言語はどうか、と聞いてみましたが、union でなんとかできそうとの返事。 と書きましたが、union は型変換ができるだけでポインタを取り出すことは…

malloc-free な C 言語はチューリング完全かの続き

C

酒井さんがbrainfuck を実装してくれました。ありがとうございます。では pointer-free な C 言語はどうか、と聞いてみましたが、union でなんとかできそうとの返事。そっかー。ちなみに元記事で再帰と書いた時は、「lambda 計算をエンコードできるかなー」…

FlashPlayer バグ報告の続きの続き

swf

FlashPlayer をスタックオーバーフローさせることができる仕様 (?) が未だに直りません。Adobe に報告してもう半年近くになります。しょうがないので 10 月末に IPA のセキュリティセンターに報告してみたのですが、1 ヶ月半待たされたあげく、「スタックオ…

上野懸垂線徒歩

ついでに、前回運休で乗れなかった上野動物園のモノレールに行きました。14 時 25 分に上野動物園西園駅を出発し、オオアリクイやエミューをみつつ、14 時 34 分に上野動物園東園駅到着。線路の距離で 331.42 m (0.3 km) 、道のりでは多分 400 m 弱だと思い…

京急本線徒歩 (後編)

昨日は京急本線を最後まで歩きました。京急川崎から品川、ついでに泉岳寺まで、線路の距離で 13.0 km 、歩行距離で 16.0 km 。所要時間は朝 7 時から昼 12 時までの約 5 時間。風邪の病み上がりなので少なめ。見所は大森海岸駅近くの鈴ヶ森刑場遺跡と、とこ…

京急本線徒歩 (中編)

今日は京急本線の続きを歩きました。金沢八景から京急川崎まで、線路の距離で 29.1 km 、歩行距離で 35.8 km 。所要時間は朝 8 時から夜 6 時までの約 10 時間。京急は駅間が短いので、今日だけで 25 駅に着きました。特に横浜より北が顕著で、徒歩 10 分か…

malloc-free な C 言語はチューリング完全か

C

今日の疑問。C 言語から malloc や calloc など動的にメモリを確保する手段を省いても、チューリング完全性は保たれるのでしょうか。再帰をうまく使えばできるのかな。

Re: 無限オブ無限

順番はどう変えてもいいから、とにかく『どの要素もいつかは出てくる(有限ステップ以内には出てくる)』ように列挙したリストを返す関数を作ってみてください。 無限オブ無限 何か設問に裏の意図がありそうな気配を感じますが、あっさり釣られます。無限リ…

フィボナッチ数とひまわり

最近何かと話題のフィボナッチ数計算の高速化ですが、 F(n) = (fib(n+1), fib(n)) (2次元の縦ベクトルだが表記の都合で横に書く) A = ((1, 1), (1, 0)) (第1行が(1, 1)で第2行が(1, 0)の行列) すると,F(n) = A F(n-1) = A A F(n-2) = A A A F(n-3) = ..…

Enumerator とブロックの省略の続き

現在のイテレータの回数を返す組み込み変数とかの方が嬉しそうです。 を試しに実装してみました。 3.times { p $# } %w(a b c).each {|x| p [x, $#] } $ ./ruby foo.rb 0 1 2 ["a", 0] ["b", 1] ["c", 2]3.times do i = $# 3.times { p [i, $#] } end $ ./ru…

上野懸垂線徒歩 (未完)

金曜日に、東京都交通局上野懸垂線を歩きに行ってきました。平たく言うと上野動物園のモノレールです。wikipedia のエントリによると、正式な鉄道らしいです。上野動物園西園駅から上野動物園東園駅まで。14 時 13 分から 14 時 18 分までの約 5 分。線路の…

Enumerator とブロックの省略

1.9 では Enumerator が組み込みになり、大きく拡張されています。ついでにブロックの省略に対する考え方にも影響があります。結構重大な変更のわりに、この話はあまり議論や周知がされていないような気がしたので、現状の Enumerator について、その機能と…

条件範囲式の使い方

大きめのコンソールで実行してください。 W, H = 44, 54 c = 7 + 42 * W a = [0] * W * H g = d = 0 f = proc do |n| a[c] += 1 o = a.map {|z| " :#"[z, 1] * 2 }.join.scan(/.{#{W * 2}}/) puts "\f" + o.map {|l| l.rstrip }.join("\n") sleep 0.005 d +=…

PEG の実装

PEG 意見交換会に参加できなくて悔しいので、Ruby で書いた PEG の実装を晒します。http://dame.dyndns.org/misc/misc/rpeg-20071125.zip 入力は Pappy 風の言語です。下は PEG のパーサを PEG で書いたもの (rpeg.rpeg) です。 parser RPegParser: { requir…

【楽●天】テクノロジーカンファレンス2007

http://www.rakuten.co.jp/event/10th/tech/conference/index.html を覗いてきました。今回は第一回と言うことで、微妙な点はありました。技術職向けの発表と営業職向けの発表が混ざっていて聴講しにくかったとか、質疑応答がなくて残念とか。でも、楽天の人…

五日市線徒歩、青梅線徒歩 (後編)

今日は青梅線の続きと、五日市線を歩いてきました。ついでに五日市線の廃線部分も歩きました。廃線部分は (元) 武蔵岩井駅から大久野駅経由で武蔵五日市駅までで、8 時半過ぎから 9 時過ぎまでの約 30 分。当時の線路の距離は 2.7 km ですが、分岐部分は後回…

head と tail の由来

前回 Array#tail を提案したとき、「頭(head)以外は全部尻尾(tail)ってのは、名前が。」と言われて初めて、tail という名前が不自然なことに何の疑問も持っていなかった自分に気がつきました。リストの先頭と先頭以外を head/tail と言うのはいつごろからな…

青梅線徒歩 (前編)

紅葉の季節なので、土曜日に奥多摩に行ってきました。そのついでに青梅線を歩いてきました。奥多摩から小作まで、線路の距離で 23.1 km 、道のりで 27.2 km でした。朝 9 時半から夜 18 時半まで約 9 時間。全部下りなので体力的な問題はなかったのですが、…

Array#tail

ary.drop(1) でええやんという衝撃的結末。お騒がせしました。ところで take/drop って名前はどうなんでしょうね。drop は「頭を」落とすとはわからないし、落とした頭を返すのか、落とされた体を返すのか、曖昧な感じ。あとなんとなく破壊的メソッドの印象…

はてなリンク元簡略化ブックマークレット

はてなのリンク元一覧って Google とかのリンクをほぼそのまま晒してて見にくいなーと思ったので、ブックマークレットを書きました。 編集画面を開いて実行すると Google と Yahoo とはてなからのリンク元を短く表示します。例えば、「http://www.google.co.…

left と right のどっちがどっちかわからなくなる病

僕はこの病気の末期患者です。left と right がどっちがどっちか考え出すと数秒フリーズします。日本語の右と左ではそこまでひどくない (でも慢性的に軽度の症状はある) のですが、英語になると特に重篤です。例えば 数年前の ICFP Contest では、アリの向き…

たたみすぎる Array#flatten

Array#flatten は配列をたたむメソッドです。 ary = [ [1], [2, [3], 4], [5] ] p ary.flatten #=> [1, 2, 3, 4, 5] このメソッドは便利に見えて、非常にはまりやすいメソッドです。このメソッドはたたみすぎるんです。上で言うと、[1, 2, [3], 4, 5] を返し…

メソッド呼び出し代入演算子

i = i + 1 を i += 1 と書けるのだから x = x.add(1) を x .= add(1) と書けてもいいのではないか (反語) 。むしろ operator= が導入されたみたいに見えるかな。

【楽●天】テクノロジーカンファレンス2007

http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-list/44186 を覗きに行きます。楽天とか全く知らないのに (笑)