述語listtran(L、R)の書き方、
Lは[0,1,2,3,4,5,6,7,8,9,10]、
Rは[zero、one、...、10 ]
例:
?- listtran([0,4,5], L).
L = [zero, four, five].
?- listtran(L, [two, ten, two]).
L = [2, 10, 2].
述語listtran(L、R)の書き方、
Lは[0,1,2,3,4,5,6,7,8,9,10]、
Rは[zero、one、...、10 ]
例:
?- listtran([0,4,5], L).
L = [zero, four, five].
?- listtran(L, [two, ten, two]).
L = [2, 10, 2].
0 から 10 までの範囲だけでよい場合は、数値をテキスト名に変換する述語の作成を開始することは間違いありません。
num(0,zero).
num(1,one).
num(2,two).
num(3,three).
num(4,four).
num(5,five).
num(6,six).
num(7,seven).
num(8,eight).
num(9,nine).
num(10,ten).
listtran 述語でそれらを使用するのは簡単です。
listtran(IntLst,TxtLst) :-
maplist(num,IntLst,TxtLst).
ヘルパー maplist 述語なしでこれをより明確な方法で構築するには、これを試してください。
listtran([],[]). %base rule
listtran([Int|IntRest], [Txt|TxtRest]) :-
num(Int,Txt),
listtran(IntRest,TxtRest).
ペアリング ドメインを形成し、次PairDom = [0-zero, 1-one, 2-two, ...]
を使用しますmember( X1-Y1, PairDom)
。
pair(A,B,A-B).
listtran(L,R):-
maplist(pair,[0,1,2,3, ...,10],[zero,one, ...,ten],PairDom),
maplist(pair,L,R, ...),
maplist(member, ...).
これがどのように機能するかを感じるために、試してみてください:
?- PairDom=[0-zero, 1-one, 2-two], member(1-Y1,PairDom).
Y1 = one
?- PairDom=[0-zero, 1-one, 2-two], member(X1-three,PairDom).
No.