2

Sicstus プロローグでラベリングの問題を扱ってからかなり時間が経ちました。長さ 7 の配列を作成したいと思います。ここで、各項目は再び 4 つの整数の配列です。次のコードを試しましたが、機能せず、インスタンス化エラーが発生します。

:- use_module(library(clpfd)).

schedule(Ss) :-    
    length(Ss, 7),
    Ss = [[A, B, C, D]|T],
    solve_days(Ss),
    labeling([], Ss).

solve_days([]).
solve_days([[A, B, C, D]|T]):-
    A in 1..3,
    B in 4..7,
    C in 7..9,
    D in 6..10,
   solve_days(T).        

誰かがそれを解決する方法を教えてもらえますか? どうもありがとう!

4

2 に答える 2

1

この種の煩わしさを解決するためによく見られるアプローチは、term_variables/2ラベル付けを呼び出す前に述語を使用することです。

述語は、 Corr.2term_variables/2以降の ISO コア述語であり、項内の変数のリストを決定します。

現在の場合、1つは交換します

labeling([], Ss) 

term_variables(Ss, Vars), labeling([], Vars)
于 2016-12-13T11:32:50.373 に答える