Prolog:创建已知列表的新列表结构

时间:2016-11-17 18:22:29

标签: list prolog

我正在尝试获取一个列表并创建一个具有其他结构的新列表

<小时/> 我的第一个列表是这样的:

List 1 out of X:
[[4,2,5,1,1,7,4],
[1,0,2,1,5,4,4],
[2,8,0,2,2,6,2],
[8,9,2,0,1,6,2],
[6,2,0,3,0,2,2],
[3,6,6,3,0,2,9],
[6,2,1,4,3,3,9]]

我目前的代码是:

oneMap(V,[_,_,V]).
listMap([],[]).
listMap([H|T],[H1|T1]):-
listMap(T,T1),oneMap(H,H1).

这里的问题是我在新列表中的列表中得到了每一行,但我希望该行内的值。

目前部分输出:

[[_G21217,_G21220,[4,2,5,1,1,7,4]],[_G21202,_G21205,[1,0,2,1,5,4,4]],...

寻找类似的内容:

[[_G21217,_G21220,4],[_G21202,_G21205,2],[_G21202,_G21205,5],...

1 个答案:

答案 0 :(得分:0)

解决方案:

好吧,经过一段时间我发现了一些帮助我解决双重问题的问题:

oneMap(V,[_,_,V]). 

listMap1([],[]).
listMap2([],[]).

listMap1([H|T],[H1|T1]):-
listMap1(T,T1),listMap2(H,H1).

listMap2([H|T],[H1|T1]):-
listMap2(T,T1), oneMap(V,H1).

如果有人有更聪明的解决方案,我希望听到它。