問題4.61 – SICP(計算機プログラムの構造と解釈)その234
2009年08月03日
問題4.61
最初の規則(rule)だけでは先頭からの2つの要素の隣接関係しか見つけられない。
2番目の規則(rule)によって連続する要素を再帰的に調べていく。
; 調査対象リストの最初の 1, 2 番目の要素を next-to 関係とする。 (assert! (rule (?x next-to ?y in (?x ?y . ?u)))) ; 調査対象リストの内、2番目の要素以降のリストを調べる。 (assert! (rule (?x next-to ?y in (?v . ?z)) (?x next-to ?y in ?z)))
実行結果
;;; Query input: (?x next-to ?y in (1 (2 3) 4)) ;;; Query results: ((2 3) next-to 4 in (1 (2 3) 4)) (1 next-to (2 3) in (1 (2 3) 4)) ;;; Query input: (?x next-to 1 in (2 1 3 1)) ;;; Query results: (3 next-to 1 in (2 1 3 1)) (2 next-to 1 in (2 1 3 1))
1番目の規則(rule)のみを定義した場合の実行結果。
先頭からの2つの要素しか調べていないことがわかる。
;;; Query input: (?x next-to ?y in (1 (2 3) 4)) ;;; Query results: (1 next-to (2 3) in (1 (2 3) 4)) ;;; Query input: (?x next-to 1 in (2 1 3 1)) ;;; Query results: (2 next-to 1 in (2 1 3 1))
計算機プログラムの構造と解釈
posted with amazlet at 08.11.07
ジェラルド・ジェイ サスマン ジュリー サスマン ハロルド エイブルソン
ピアソンエデュケーション
売り上げランキング: 6542
ピアソンエデュケーション
売り上げランキング: 6542