[[CogModel]]

*問題文 [#ne082958]
3つの滑車(滑車A・滑車B・滑車C)、2つのおもり(おもりA・おもりB)、何本かのひもがあります。

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

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

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

#ref(kassya.jpg)

*ワーキングメモリ [#qef611d0]
 #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)

*ルール [#w17d18fc]
 - 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))


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

セレンディピティにつながる可能性があるときは、
- 予期せぬルールが発火するとき(プーリーとおもりの同型性に気づく)
- 発火させようと思ったルールではないルールが発火するとき&br;
 プーリーC-ロープY-ロープzとW2-ロープQ-ロープsの同型

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

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

トップ   編集 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS