clpfd

    2熱度

    1回答

    我正在使用Clojure的core.logic CLP(FD)庫(core.logic版本0.8.3)的樸素平方包裝算法。 正方形表示像這樣: [[[x11 y11] [x12 y12]] [[x21 y21] [x22 y22] ...]] 與表示爲它的左上角和右下角的座標的每個正方形。 座標是FD變量,在一定的時間間隔內。 我想定義一個解決方案,到原點的最近和最遠的正方形的右上角和右下角

    2熱度

    1回答

    我開始與SICStus Prolog的,我想定義一個變量,說StartingTimes,有通過列表[1, 5, 10] 我該怎麼辦定義域它在SICStus Prolog中? 我會做這樣的事情: domain(StartingTimes, 1, 10) StartingTimes #= 1 #\/ StartingTimes #= 5 #\/ StartingTimes #= 10 但是,這是

    16熱度

    4回答

    一個奇怪的問題如下: 我正在做一個解決問題的比賽@我的學校,他們讓我們用電腦。由於我是競爭對手中唯一知道如何編碼的人,因此我使用C和Pascal程序更快地解決問題。我用僞碼到代碼練習,算法,Collat​​z猜想驗證等來完成。 現在,昨天我正在接受下一個挑戰(4月18日)的訓練,並且我看到了Young young的練習。它被這樣描述(我會盡我所能從意大利語翻譯): 「Ferrers圖是N盒分佈在一

    3熱度

    4回答

    如何限制列表中數字的重複? 以下代碼示例中適合的約束條件是什麼? limit(X) :- length(X,10), domain(X,1,4), % WANTED CONSTRAINT: maximum repetition of each number is 5 times. labeling([],X). 一些樣本查詢和期望答案: ?- limit

    11熱度

    3回答

    我正在嘗試編寫一個Prolog(CLP)謂詞來構建約束兩個列表不等式的約束。 更正式的,有兩個名單A=[A1,...,AN], B=[B1,...,BN]約束被定義爲(A1 #\= B1) #\/ (A2 #\= B2) #\/ ... #\/ (AN #\= BN)。 我不確定如何建立這個約束給出兩個任意長度的列表。這是我的嘗試。我明白爲什麼它不起作用,但無法修復它。 any_different

    3熱度

    6回答

    列表我想寫一個謂詞,整數和數字的列表,並取得成功,如果位數包含在正確的順序整數的數字,即: ?-digit_lists(Num, [1,2,3,4]). [Num == 1234]. 以下是我迄今爲止: my_digits(0, []). my_digits(N,[A|As]) :- N1 is floor(N/10), A is N mod 10, my_digits(N1, As).

    2熱度

    4回答

    編寫一個謂詞,其輸入整數列表L,並生成兩個列表:包含來自L的偶數元素的列表以及來自L的奇數元素列表。 ?- separate_parity([1,2,3,4,5,6], Es, Os). Es = [2,4,6], Os = [1,3,5] ? ; no

    3熱度

    1回答

    好的,所以我有一個叫做CuFrog的難題,它包括在每個位置用一個數字填充一個3x3x3的立方體,但是在從一個位置跳到另一個位置時跳過一個位置。例如,考慮一個扁平立方體,第一面(1,1)右邊的有效位置是(3,1)在第一面。 所以我在Prolog中使用約束來做到這一點,我已經給出了每個變量的域(1到54),我已經說過它們必須是不同的,並且對於每個位置,設置的右下角中的一個位置必須是當前的這個位置的值+

    3熱度

    3回答

    我試圖寫序言程序找到大小N的拉丁方 我現在有這個權利:使用SWI-Prolog的庫 delete(X, [X|T], T). delete(X, [H|T], [H|S]) :- delete(X, T, S). permutation([], []). permutation([H|T], R) :- permutation(T, X), delete(H,

    4熱度

    3回答

    我嘗試使用下面的函數來計算Fibonacci series: fib(0,A,_,A). fib(N,A,B,F) :- N1 is N-1, Sum is A+B, fib(N1, B, Sum, F). fib(N, F) :- fib(N, 0, 1, F). 這是爲了工作原理是這樣: | ?- fib(20,Result). Result = 6765 ? 但是當