CogModel

問題文

3つの滑車(滑車A・滑車B・滑車C)、2つのおもり(おもりA・おもりB)、何本かのひもがあります。

それらは次のように配置されています。

  • おもりAは滑車Aの上側を通るロープの左端に結ばれています。このロープの右側はおもりBに繋がっており、それを部分的に支えています。
  • 滑車Aを支えるロープは滑車Bの上側をとおった後、滑車Cの下側を通ります。滑車Bは天井からぶら下がっています。滑車Cの下側を通るロープの右側は天井に繋がっています。
  • 滑車CはおもりBに繋がっており、最初のロープとともにそれを支えています。

おもりBとおもりAの比率を答えなさい。ただし、滑車やひもの重さ、滑車の摩擦を考えないものとします。

kassya.jpg

ワーキングメモリ

#Statement 1
- (Support RopeP WeightA)
- (Support PulleyA RopeP)
- (Support PulleyA RopeQ)
- (Support RopeQ WeightB)
#Statement 2
- (Support RopeX PulleyA)
- (Support PulleyB RopeX)
- (Support PulleyB RopeY)
- (Support RopeY PulleyC)
- (Support Ceil PulleyB)
- (Support RopeZ PulleyC)
- (Support Ceil RopeZ)
#Statement 3
- (Support RopeS WeightB)
- (Support PulleyC RopeS)
#Problem
- (Value WeightA 1)
- (Value WeightB Empty)
- (Value RopeP Empty)
- (Value RopeQ Empty)
- (Value RopeX Empty)
- (Value RopeT Empty)
- (Value RopeS Empty)
- (Value RopeY Empty)
- (Value RopeZ Empty)

ルール

- name: Problem-Solved
  if:
  - (Value WeightB ?n)
  - (*test-not-equal ?n Empty)
  then:
  - (*halt)
- name: Ropes[Value/Empty]-Pulley
  if:
  - (Support ?Rope1 ?Pulley)
  - (Support ?Rope2 ?Pulley)
  - (*test-not-equal ?Rope1 ?Rope2)
  - (Value ?Rope1 ?n1)
  - (*test-not-equal ?n1 Empty)
  - (Value ?Rope2 Empty)
  - (Support ?Pulley ?Rope3)
  then:
  - (*delete (Value ?Rope2 Empty))
  - (*deposit (Value ?Rope2 ?n1))
- name: Ropes[Value/Value]-Pulley-Rope[Empty]
  if:
  - (Support ?Pulley ?Rope3)
  - (Value ?Rope3 Empty)
  - (Support ?Rope1 ?Pulley)
  - (Value ?Rope1 ?n1)
  - (*test-not-equal ?n1 Empty)
  - (Support ?Rope2 ?Pulley)
  - (Value ?Rope2 ?n2)
  - (*test-not-equal ?n2 Empty)
  - (*test-not-equal ?Rope1 ?Rope2)
  then:
  - (*delete (Value ?Rope3 Empty))
  - (*deposit (Value ?Rope3 (*addition ?n1 ?n2)))
- name: Ropes[Empty/Empty]-Pulley-Rope[Value]
  if:
  - (Support ?Pulley ?Rope3)
  - (Value ?Rope3 ?n1)
  - (*test-not-equal ?n1 Empty)
  - (Support ?Rope1 ?Pulley)
  - (Value ?Rope1 Empty)
  - (Support ?Rope2 ?Pulley)
  - (Value ?Rope2 ?n2)
  - (*test-not-equal ?Rope1 ?Rope2)
  then:
  - (*delete (Value ?Rope1 Empty))
  - (*deposit (Value ?Rope1 (*divide ?n1 2)))
  - (*delete (Value ?Rope2 ?n2))
  - (*deposit (Value ?Rope2 (*divide ?n1 2)))
- name: Pulley-Ropes[Value/Empty]
  if:
  - (Support ?Pulley ?Rope1)
  - (Support ?Pulley ?Rope2)
  - (*test-not-equal ?Rope1 ?Rope2)
  - (Value ?Rope2 Empty)
  - (Value ?Rope1 ?n)
  - (*test-not-equal ?n Empty)
  then:
  - (*delete (Value ?Rope2 Empty))
  - (*deposit (Value ?Rope2 ?n))
- name: Rope[Empty]-Pulley-Ropes[Value/Value]
  if:
  - (Support ?Pulley ?Rope1)
  - (Support ?Pulley ?Rope2)
  - (*test-not-equal ?Rope1 ?Rope2)
  - (Support ?Rope3 ?Pulley)
  - (Value ?Rope1 ?a)
  - (*test-not-equal ?a Empty)
  - (Value ?Rope2 ?b)
  - (*test-not-equal ?b Empty)
  - (Value ?Rope3 Empty)
  then:
  - (*delete (Value ?Rope3 Empty))
  - (*deposit (Value ?Rope3 (*addition ?a ?b)))
- name: Rope[Value]-Pulley-Ropes[Empty/Empty]
  if:
  - (Support ?Pulley ?Rope1)
  - (Support ?Pulley ?Rope2)
  - (*test-not-equal ?Rope1 ?Rope2)
  - (Support ?Rope3 ?Pulley)
  - (Value ?Rope1 Empty)
  - (Value ?Rope2 ?b)
  - (Value ?Rope3 ?c)
  - (*test-not-equal ?c Empty)
  then:
  - (*delete (Value ?Rope1 Empty))
  - (*deposit (Value ?Rope1 (*divide ?c 2)))
  - (*delete (Value ?Rope2 ?b))
  - (*deposit (Value ?Rope2 (*divide ?c 2)))
- name: Ropes[Value/Value]-Weight[Empty]
  if:
  - (Value ?Weight Empty)
  - (Support ?Rope1 ?Weight)
  - (Value ?Rope1 ?a)
  - (*test-not-equal ?a Empty)
  - (Support ?Rope2 ?Weight)
  - (Value ?Rope2 ?b)
  - (*test-not-equal ?b Empty)
  - (*test-not-equal ?Rope2 ?Rope1)
  then:
  - (*delete (Value ?Weight Empty))
  - (*deposit (Value ?Weight (*addition ?a ?b)))
- name: Rope[Empty]-Weight[Value]
  if:
  - (Value ?Weight ?a)
  - (*test-not-equal ?a Empty)
  - (Value ?Rope Empty)
  - (Support ?Rope ?Weight)
  then:
  - (*delete (Value ?Rope Empty))
  - (*deposit (Value ?Rope ?a))
- name: Rope[Value]-Weight[Empty]
  if:
  - (Value ?Weight Empty)
  - (Value ?Rope ?a)
  - (*test-not-equal ?a Empty)
  - (Support ?Rope ?Weight)
  then:
  - (*delete (Value ?Weight Empty))
  - (*deposit (Value ?Weight ?a))

メモ

プーリーシステムという考え方に気がつかず、重力に基づいて考えてしまった

セレンディピティにつながる可能性があるときは、

  • 予期せぬルールが発火するとき(プーリーとおもりの同型性に気づく)
  • 発火させようと思ったルールではないルールが発火するとき
     プーリーC-ロープY-ロープzとW2-ロープQ-ロープsの同型

プロセスをどう捉えるか

  • 予期せぬ発見(どのルールを発火させようとしているのか)
  • エラーの分類(どれぐらいのエラーが余計な詳細化によるものか)

Irrelavant Specification

  • スペルミス
  • マッチング形式によるもの(マッチング数が多いため発火しない)

添付ファイル: filekassya.jpg 465件 [詳細]

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2009-02-10 (火) 17:24:23 (5556d)