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