好的,所以我有一個叫做CuFrog的難題,它包括在每個位置用一個數字填充一個3x3x3的立方體,但是在從一個位置跳到另一個位置時跳過一個位置。例如,考慮一個扁平立方體,第一面(1,1)右邊的有效位置是(3,1)在第一面。使用CLPFD解決CuFrog
所以我在Prolog中使用約束來做到這一點,我已經給出了每個變量的域(1到54),我已經說過它們必須是不同的,並且對於每個位置,設置的右下角中的一個位置必須是當前的這個位置的值+1。
另外,我已經給出了一個謎題的入口點,這意味着我已經在第一個位置上放置了數字1。
事情是,當我給變量添加標籤時,SICStus沒有找到答案。 :(看來我必須某處缺少限制或者也許我做錯了什麼。誰能幫助?
感謝。
使用'asserta(clpfd:full_answer))'。然後輸入沒有標籤的查詢!你絕對沒有錯過一個限制,而是相反:你限制太多! – false
對不起,但我應該如何在我的代碼中使用它? 是否這樣? (Vars,54), domain(Vars,1,54), restriction_predicate(), asserta(clpfd:full_answer)。 %標籤([min],Vars) - 這就是我在做的。' – Sidner
在頂層輸入它。 – false