問題4.57 – SICP(計算機プログラムの構造と解釈)その230
2009年07月30日
問題4.57
問題文が非常に解りにくい…
"person-1 が person-2 と同じ担当である" というのはすぐ理解できるが、その次の条件がよく解らない。
(assert! (rule (same ?x ?x))) (assert! (rule (replace ?person-1 ?person-2) (and (or (and (job ?person-1 ?job) (job ?person-2 ?job)) (and (job ?person-1 ?job-1) (job ?person-2 ?job-2) (can-do-job ?job-2 ?job-1))) (not (same ?person-1 ?person-2)))))
a. Cy D. Fect に代われる人すべて
(replace (Fect Cy D) ?who)
実行結果
;;; Query input: (replace (Fect Cy D) ?who) ;;; Query results: (replace (Fect Cy D) (Bitdiddle Ben)) (replace (Fect Cy D) (Hacker Alyssa P))
ここで、仮に person-1 を Cy D. Fect にして、person-1 の仕事をする誰かというのを同じ computer programmer の Alyssa P. Hacker とする。
Alyssa P. Hacker は can-do-job
の表明(assertion)により、監督をしている computer programmer trainee の Louis Reasoner の仕事ができるので、person-2 を Louis Reasoner とすることができる。
したがって、Cy D. Fect (person-1) は Louis Reasoner (person-2) に代わることができる。
;;; Query input: (replace (Reasoner Louis) ?who) ;;; Query results: (replace (Reasoner Louis) (Fect Cy D)) (replace (Reasoner Louis) (Hacker Alyssa P))
b. 誰かに代われて、その誰かの方が多くの給料を貰っている人すべてと、両者の給料
(and (salary ?person ?salary) (salary ?substitution ?salary-sub) (replace ?person ?substitution) (lisp-value < ?salary ?salary-sub))
実行結果
;;; Query input: (and (salary ?person ?salary) (salary ?substitution ?salary-sub) (replace ?person ?substitution) (lisp-value < ?salary ?salary-sub)) ;;; Query results: (and (salary (Reasoner Louis) 30000) (salary (Fect Cy D) 35000) (replace (Reasoner Louis) (Fect Cy D)) (lisp-value < 30000 35000)) (and (salary (Reasoner Louis) 30000) (salary (Hacker Alyssa P) 40000) (replace (Reasoner Louis) (Hacker Alyssa P)) (lisp-value < 30000 40000)) (and (salary (Tweakit Lem E) 25000) (salary (Bitdiddle Ben) 60000) (replace (Tweakit Lem E) (Bitdiddle Ben)) (lisp-value < 25000 60000)) (and (salary (Fect Cy D) 35000) (salary (Hacker Alyssa P) 40000) (replace (Fect Cy D) (Hacker Alyssa P)) (lisp-value < 35000 40000)) (and (salary (Fect Cy D) 35000) (salary (Bitdiddle Ben) 60000) (replace (Fect Cy D) (Bitdiddle Ben)) (lisp-value < 35000 60000)) (and (salary (Hacker Alyssa P) 40000) (salary (Bitdiddle Ben) 60000) (replace (Hacker Alyssa P) (Bitdiddle Ben)) (lisp-value < 40000 60000))
計算機プログラムの構造と解釈
posted with amazlet at 08.11.07
ジェラルド・ジェイ サスマン ジュリー サスマン ハロルド エイブルソン
ピアソンエデュケーション
売り上げランキング: 6542
ピアソンエデュケーション
売り上げランキング: 6542