use*_*185 3 if-statement prolog
我是一个 C# 人,对 prolog 非常陌生。我需要为以下场景编写一个 prolog 程序。任何人都可以帮助实现它。
两个人共用一个抽屉。胸部有 4 个抽屉,抽屉 1 和 2 属于 Person1,抽屉 3 和 4 属于 Person2。
他们把手机、钱包和书放在抽屉里。Person2 在抽屉里丢了手机。他检查了属于他的抽屉 3 和 4,但找不到他的手机。然后他检查了抽屉 1 和 2,在抽屉 2 中找到了它。我需要为此场景编写 prolog 代码。
person(person1).
person(person2).
drawers(drawer1).
drawers(drawer2).
drawers(drawer3).
drawers(drawer4).
belongs_to(drawer1, person1).
belongs_to(drawer2, person1).
belongs_to(drawer3, person2).
belongs_to(drawer4, person2).
item(phone2).
phone_in(drawer).
phone_in(drawer2).
Run Code Online (Sandbox Code Playgroud)
要运行的命令及其结果
?- phone_in(drawer4).
false.
?- phone_in(drawer3).
false.
?- phone_in(drawer1).
false.
?- phone_in(drawer2).
true.
Run Code Online (Sandbox Code Playgroud)
我正在尝试编写如下条件。
?- phone_in(drawer2).
true.
Run Code Online (Sandbox Code Playgroud)
想要根据上述查询的结果(真/假)运行条件。
if(false)
write("phone not found!");
else if(true)
write("please found in your search area");
Run Code Online (Sandbox Code Playgroud)
请建议我改进我的代码。
小智 5
语法是这样的
( condition -> then_clause ; else_clause )
Run Code Online (Sandbox Code Playgroud)
可以这样写
( phone_in(drawer2) =:= true ->
write('phone found in your search area'),
fail
; phone_in(drawer2) =\= false ->
; write('phone not found!'),nl
)
Run Code Online (Sandbox Code Playgroud)