are_different(List1,List2):-
nth0(0,List1,Slot1),
nth0(0,List2,Slot2),
Slot1\==Slot2.
fillSchedule([30,_,_,_,_,_,__],S).
fillSchedule([H|T],[H1|T1]):-
are_different(H,H1),
H1 = H,
fillSchedule(T,T1).
fillSchedule([H|T],L):-
fillSchedule(T,L).
大4170元素列表内的列表是以下形式我有一个包含4170个元素的列表列表,我想将它们分成139个列表,每个列表包含30个不同的元素?
[1,A,B,C,D,E,F],[1,A1,B1,C1,D1,F1].......[5,_,_,_,_,_,_].....[30,_,..]
每个列表是从以某种方式或另一其他列表不同,但不neccasrily所述第一元件(1),(2 )等等,这是最重要的因素。我想要作为一个可能的解决方案填充调度谓词从第一个大列表中提取的30个元素列表,如[[1,...],[2,...],[3,...] etc till 30
,谓词的下一个解决方案应该包含另一个包含30元素,但每一个不同于前30选择等等,直到我们没有更多的元素可以选择原来的4170元素
步骤2中的小问题应该使用findall来获得30个列表吗?然后在步骤3中使用结果列表? – 2012-04-25 19:47:30
您可以使用findall来实现步骤1中描述的谓词,调用它30次以制作30个列表,然后将它们传递给fillSchedule。 – 2012-04-25 20:21:49
非常感谢 – 2012-04-25 21:34:53