我正在學習Prolog。我正在做一項任務。我已經制作了一些代碼,這部分代碼是部分工作的。但是,不知何故,它給出了多個重複的答案。 的問題是: % Every letter represents a Digit (0,...,9).
% Leading digits (S and M) can not be 0.
% S E N D
% + M O R E
% ---------
% M
因此,我設法爲Prolog編寫了SEND + MORE = MONEY程序,並且在標記結果時遇到了麻煩。任何想法如何做到這一點?我一直使用標籤功能,但它仍然無法正常工作。我迷失在這裏。 :- lib(ic).
puzzle(List) :-
List = [S, E, N, D, M, O, R, Y],
List :: 0..9,
diff_list(List)
我在ECLiPSe下有我的CSP問題。我希望通過2 [eclipse 11]: test(Xs).
instantiation fault in (_268{[1..4]}*100 + _200{[0..9]}*10 + _302{[0..9]}*1) mod 2#=0
Abort
感謝您的幫助,以添加約束到我的密碼這需要由兩個代表的數整除。 我的代碼: /*
T W O
編輯:我得到了我的程序現在工作,但仍需要一些澄清的「其他如果(400 * T + 40 * O + 4 * O == 1000 * G + 100 * O + 10 * O + D)「是解決這個難題的關鍵。我只是想完全理解程序的每一點,謝謝。 這僅用於審查目的,我花了幾個小時試圖弄清楚。我要麼爲變量獲得全零,要麼是無限循環。這是一個問題,因爲它寫在書中: 「在cryptarithmetic puz
我正在計劃一個C++程序,它需要3個代表加密算法難題的字符串。例如,假定二,二,四,程序會發現每個字母數字替代,使得數學表達式 TWO
+ TWO
------
FOUR
是真實的,與輸入假設爲右對齊。一種解決這個問題的方法當然是強制它,用嵌套循環爲每個字母分配每個可能的替換,重複嘗試總和等,直到最終找到答案。 我的想法是,雖然這是非常低效的,但底層的循環檢查可能是一種可行的(或