タグ

RubyとSICPに関するkeyesberryのブックマーク (3)

  • Rubyで非決定性計算 - 趣味的にっき

    以前ここで有名なBaker, Cooper…の非決定性計算をRubyで解いてみました。コードはこんな感じです。 #!/usr/bin/env ruby module Enumerable def distinct? table = {} each do |e| return false if table[e] table[e] = true end return true end end solve = [] [1, 2, 3, 4, 5].each do |baker| [1, 2, 3, 4, 5].each do |cooper| [1, 2, 3, 4, 5].each do |fletcher| [1, 2, 3, 4, 5].each do |miller| [1, 2, 3, 4, 5].each do |smith| next unless [baker, cooper,

    Rubyで非決定性計算 - 趣味的にっき
  • Rubyでリストモナドぽい何か - 趣味的にっき

    http://mono.kmc.gr.jp/~oxy/w/hiki.cgi?Non%20Determinismにあるリストモナドで非決定性計算をRubyでHaskellぽく解いてみようと思います。問題はこれです。元はSICPらしいです。 Baker, Cooper, Fletcher, MillerとSmithは五階建てアパートの異なる階に住んでいる。Bakerは最上階に住むのではない。Cooperは最下階に住むのではない。 Fletcherは最上階にも最下階にも住むのではない。MillerはCooperより上の階に住んでいる。SmithはFletcherの隣の階に住むのではない。FletcherはCooperの隣の階に住むのではない。それぞれはどの階に住んでいるか。 Haskellの回答はこちら。リストモナドがおしゃれです。 import Control.Monad.List solve

    Rubyでリストモナドぽい何か - 趣味的にっき
  • 関西オープンソース2005発表, 非決定性計算, KOF宴会 - Journal InTime(2005-10-29)

    _ 関西オープンソース2005発表 発表してきた。 スライド ちょっと会場入りが遅れたせいもあり、進行がぐだぐだになってしまって、 申し訳なかったです。 Tags: ximapd Rast _ 非決定性計算 今回いちばん面白かったのが、Haskell同好会のセッション。 吉田さんのプレゼンで非決定性計算の話が出て来たのだが、 Wikiでも紹介されていたようだ。 「他の言語じゃこんなことできないでしょ」という話だったが、 実はRubyConf2005のChad FowlerとJim Weirichのチュートリアルでも同じようなデモをやっていた。 それを使って書くと、 require "amb" A = Amb.new baker = A.choose(1, 2, 3, 4, 5) cooper = A.choose(1, 2, 3, 4, 5) fletcher = A.choose(1,

  • 1