2

私は Sicstus Prolog を使用しており、ドミノ パズルを解こうとしています。

ドメインを設定する必要があるトリプレットのリストがあります。単一変数または単一変数のリストのドメインを設定する方法は知っていますが、リストにトリプレットがあり、トリプルの各要素が異なるドメインを持っている場合、どうすればよいでしょうか?

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)

各変数を明示的に指定せずにこれを行うにはどうすればよいですか?

4

1 に答える 1

3

1 つの要素のドメインを記述します。

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

と:

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

を使用してlibrary(maplist)

または、次を使用しlibrary(lambda)ます。

..., maplist(
        \ (R-C-D) ^ (  domain(R, 1, 4),
                       domain(C, 1, 4),
                       domain(D, 0, 1) ), RCDs), ...
于 2016-12-16T13:31:31.147 に答える