2016-12-16 3 views
1

私はSicstus Prologを使用しています。私はDomino Puzzleを解決しようとしています。Sicstus PrologでCSPのペア変数のドメインを設定する方法

私には、トリプレットのリストがあります。これは、ドメインを設定する必要があります。私は単一の変数のドメインまたは単一の変数のリストを設定する方法を知っていますが、私のリストに三つ組があり、三つ組の要素のそれぞれが異なるドメインを持っているなら、どうすればいいですか?私が何をしたいか

DV = [R1-C1-D1, R2-C2-D2, ... , R15-C15-D15] 

はこれです:

domain(R1, 1, 4) 
domain(C1, 1, 4) 
domain(D1, 0, 1) 
domain(R2, 1, 4) 
domain(C2, 1, 4) 
domain(D2, 0, 1) 
.... 
domain(R15, 1, 4) 
domain(C15, 1, 4) 
domain(D15, 0, 1) 

は、どのように私は明示的に変数のそれぞれを述べることなく、これを行うことができますか?

答えて

2

一つの要素のためのドメイン説明:library(maplist)を使用して

..., maplist(eldoms, RCDs), ... 

eldoms(R-C-D) :- 
    domain(R, 1, 4), 
    domain(C, 1, 4), 
    domain(D, 0, 1). 

とします。 library(lambda)使用

また、:

..., maplist(
     \ (R-C-D)^( domain(R, 1, 4), 
         domain(C, 1, 4), 
         domain(D, 0, 1)), RCDs), ... 
+0

ねえ!私はドミノパズルin(sicstus)プロローグ(制約ロジックのみを使用)を実装しようとしています。私は論理を説明するかなり詳細なガイドを見つけましたが、実際にそれを実装するのに問題があります。あなたが私を助けてくれるかどうか疑問に思っていたのですか? – Tirafesi

+0

[This](http://www.hakank.org/sicstus/)があなたにとって興味深いかもしれません! – false

関連する問題