2014-05-17 32 views
2

如果我有以下數據庫:實例化L到數字列表的Prolog

digit(0). 
digit(1). 
digit(2). 
digit(3). 
digit(4). 
digit(5). 
digit(6). 
digit(7). 
digit(8). 
digit(9). 

我想查詢

digits([X,Y]). 

通過實例X和Y到10 * 10 = 100種不同的成功數字的組合,我將如何去做這件事?

我需要使用這個東西和有限域約束像

L ins 0..9 

預先感謝您

回答

2

你不需要clpfd做到這一點。您可以使用更高階獲得表現的解決方案:

digits(L) :- maplist(digit, L). 

你也可以自己做遞歸:

digits([]) :- []. 
digits([H|T]) :- digit(H), digits(T).