[英]PROLOG Asignation problems
我必須解決一個涉及 WWESupercard 游戲的問題。 這個想法是拿 2 張牌讓他們戰斗,單獨比較每個統計數據和每個組合,總共進行 10 次比較。 如果一名戰士獲得超過 50% 的戰斗 (6/10),則它獲勝。
我遇到的問題是“是”語句對我不起作用。
這是我迄今為止嘗試過的一些“解決方案”,僅使用基本統計數據而不使用組合來進行更快的測試,但沒有一個能按我的預期工作:
leGana(X,Y) :- T is 0,
((A is 0, (pwr(X,Y) -> A1 is A+1));
(B is 0, (tgh(X,Y) -> B1 is B+1));
(C is 0, (spd(X,Y) -> C1 is C+1));
(D is 0, (cha(X,Y) -> D1 is D+1))),
T1 is T+A1+B1+C1+D1, T1 > 2.
leGana(X,Y) :- T is 0,
((pwr(X,Y) -> T is T+1);
(tgh(X,Y) -> T is T+1);
(spd(X,Y) -> T is T+1);
(cha(X,Y) -> T is T+1)),
T1 > 2.
我嘗試了其他方法,但大多數時候我總是遇到同樣的 2 個錯誤:
另外,如果我寫代碼的方式不正確,這是我第一次在這里尋求幫助,所以歡迎任何建議。
Prolog 是一種聲明式語言,這意味着一個變量只能有一個值。
如果你這樣做:
X is 1, X is 2.
它會失敗,因為你試圖說X
具有值1
和值2
,這是不可能的......那is
賦值而是一種評估右側的相等性。
相似地
X = 1, X = 2.
將失敗。
如果你想做相當於 Python 的
def f(x):
result = 1
if x == 0:
result += 1
return result
那么你需要做這樣的事情:
f(X, Result) :-
Result1 = 1,
( X = 0
-> Result is Result1 + 1
; Result = Result1
).
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.