2016-11-08 3 views
0

각 요소가 0 또는 1 또는 2가 될 수있는 10 개의 요소로 목록을 만들고 싶다고 가정 해 봅시다. 두 개의 List1과 List2는 1과 2의 위치입니다.프롤로그에서 목록을 만드는 방법은 무엇입니까?

construct(List1,List2,L). 

예 :

입력 :

construct([1,3,5],[8],L) 

출력 :

L = [1,0,1,0,1,0,0,2,0,0] 
이와 같은 기능을 이용하여 전체리스트
+0

사실 나는 L의 pos-th 요소를 num로 바꾸고 새 목록을 Lnew에 넣기 위해 replace (L, pos, num, Lnew) 함수를 구현했지만이 함수를 사용하는 방법을 모르겠습니다. 생성 기능을 구현합니다. – Jasmine233

+0

질문에 실제로 관련된 모든 것을 보여줄 필요가 있습니다. –

답변

0

무엇

constructH(Top, Top, _, _, []). 

constructH(Num, Top, L1, L2, [1 | Ho]) :- 
    Num < Top, 
    member(Num, L1), 
    Np1 is Num+1, 
    constructH(Np1, Top, L1, L2, Ho). 

constructH(Num, Top, L1, L2, [2 | Ho]) :- 
    Num < Top, 
    member(Num, L2), 
    Np1 is Num+1, 
    constructH(Np1, Top, L1, L2, Ho). 

constructH(Num, Top, L1, L2, [0 | Ho]) :- 
    Num < Top, 
    \+ member(Num, L1), 
    \+ member(Num, L2), 
    Np1 is Num+1, 
    constructH(Np1, Top, L1, L2, Ho). 


construct(List1, List2, Lout) :- 
    constructH(1, 11, List1, List2, Lout). 

어떻습니까?

+0

대답은 가장 일반적인 검색어 인 '? - construct (As, Bs, Os)'에 이상하게 보입니다. – mat

관련 문제