tottoma / holmes2021

0 stars 0 forks source link

魔足根のルール追加 #10

Closed AmiYamamot0 closed 2 years ago

AmiYamamot0 commented 2 years ago

魔足根について以下のルールを追加しました.

kd:Magic_foot kgc:is kd:Drug.
kd:Magic_foot kgc:canKill kd:Human.
kd:Poison_label kgc:is kd:Magic_foot. # コメントアウト有
# IF-THENで同じkgcを使う場面がありましたが,動かなくなりそうなのでコメントアウトしています.

kd:Standale kgc:know kd:How_to_use_Magic_foot.
kd:Mortimer kgc:know kd:How_to_use_Magic_foot.
kd:Standale kgc:have kd:Magic_foot.
kd:Mortimer kgc:know kd:Where_Magic_foot.
kd:Mortimer kgc:isInterestedIn kd:Magic_foot.
kd:Mortimer kgc:have kd:Magic_foot.

kd:Mortimer kgc:canMurder kd:Brenda.
kd:Standale kgc:canMurder kd:Brenda. # これは考慮から抜けていたのですが,
# 推論上入ってしまうルールなのと,スタンデールにも殺す手段はあると思ったのでそのままにしています.

確認したいこと

特に,kd:Mortimer kgc:know kd:Where_Magic_foot. 339-361行の部分が微妙かなと思うので意見聞きたいです.

問題点

今回実装したルールは,canMurderのルール以外は動作確認できています.

また,新しいDB上で全てのルールをチェックしたところ, ?x kgc:cannotMurder kd:Brenda. で何も出力されなくなってしまいました.

問題を起こしていそうな部分など,思うところがありましたらアドバイスお願いします..

yujingu commented 2 years ago

263行目 魔足根が人を殺せるだけで方法の内容を加味しないのなら、?x kgc:weapon ?b みたいにしたほうが妥当と感じた。必須の修正ではない。

339-361の違和感は分からんではないが、作ったルールを使いたいという意味ではやむを得ない気がする

動かないところについては見てみたけどわかりそうにないm(__)m

AmiYamamot0 commented 2 years ago

確認ありがとうございます! 一つ目,?x kgc:weapon ?bについてはなるほどと思ったけど,?を増やすと変にバグることがあるので一旦保留にさせてください🙏

tottoma commented 2 years ago

エラー箇所を変更し、can・cannotどちらも出るように変更できました。 変更箇所まとめます...!

tottoma commented 2 years ago

以下が変更点になります。よろしくお願いします。

オーウェンとジョージはブレンダを殺す手段がない

# オーウェンとジョージは動けなかった
?x kgc:cannot kd:Move.
# オーウェンとジョージは薬物を摂取した
?x2 kgc:take kd:Drug.
filter(?x = ?x2)

魔足根は薬物である

242行: ?idkd:432に変更

紙包みは魔足根である

282,286行: ?akd:Paper_packageに変更

モーティマーは魔足根のありかを知っている

350,354行: ?akd:rare_object_of_Africaに変更

スタンデールはブレンダを殺すことができる

IF { 
   {
     # ブレンダの死因は中毒死である
     kd:Brenda kgc:die kd:poisoning.
     # モーティマーは魔足根を持っている
     ?y kgc:have ?a.
   }union{
     ?y kgc:have ?a.
     # 魔足根は人を殺せる
     ?a kgc:canKill kd:Human.
   }
     } THEN { 
     ?y kgc:canMurder kd:Brenda.
     } 
 """.
AmiYamamot0 commented 2 years ago

ありがとうございます!!😭 自分の方でも修正して動作確認しました.

canMurderでkd:Standaleしかヒットしないのは仕様ですか? unionの意味がわかっていなくて,IFの内容で検索するとkd:Mortimerもヒットするのですが...

tottoma commented 2 years ago

unionが検索結果の結合をしています 本来ならcanMurderでkd:Mortimerもヒットする必要があります... 原因が何か確認してみます

AmiYamamot0 commented 2 years ago

動作確認できました!

tottoma commented 2 years ago

ありがとうございます!