[[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 - スペルミス - マッチング形式によるもの(マッチング数が多いため発火しない)