第137回 素人くさいSICP読書会(at 三田某所)

  • 会場提供ありがとうございました。
  • 2008年最後の回
  • 自分、やる気なし
  • 酒飲みたいと騒いでたら、なぜか冷蔵庫から缶チューハイが出てきた。ありがとうございました
  • 問題4.58
  • とりあえずホワイトボードで
  • naoya_tさんが動く処理系のコードをwikiにアップしてくれたのでありがたく使うことに

最初に書いたコード。これだと社長しかひっかからなかった

(rule (big-shot ?person)
      (and (job ?person (?section . ?type1))
           (or (not (supervisor ?person ?boss))
               (not (job ?boss (?section . ?type2))))))


hisaさんの答え。略しすぎで×

(rule (big-shot ?person)
      (and (job ?person (?sec . ?t1))
           (job ?boss (?sec . ?t2))
           (not (supervisor ?person ?boss))
           (not (same ?person ?boss))))


で、なぜか最初の答えのor-notをnot-andにしたらうまく動いた。これが正解っぽい。なぜ最初のが動かないのが謎。notの挙動のせいか?

(rule (big-shot ?person)
      (and (job ?person (?section . ?type1))
           (not (and (supervisor ?person ?boss)
                     (job ?boss (?section . ?type2))))))