2013-02-13 17 views
5

मैं अपूर्ण सूचियों को अंतर सूची में बदलना चाहता हूं और इसके विपरीत।अंतर सूची में अधूरा

यह अंतर करने के लिए नियमित रूप से सूची कन्वर्ट करने के लिए कोड है:

reg2diff(L,X-Y):-append(L,Y,X). 

मैं दूसरी दिशा कैसे जाते हैं?

+0

के रूप में यह प्रयोग करें आप उस कोड कहाँ मिला? मुझे नकली लगता है। – CapelliC

+1

मान लीजिए कि "अपूर्ण सूची" से ** ** आंशिक सूची ** जैसे '[1,2,3 | _]' है, तो कोई अंतर सूची आंशिक रूप से आंशिक सूची का प्रतिनिधित्व नहीं कर सकती है। कृपया ध्यान न दें कि एक अंतर सूची प्रत्यक्ष अवधि नहीं है, इसलिए यह डेटा संरचना नहीं बल्कि एक ऐसा सम्मेलन है जो केवल कुछ मामलों के लिए काम करता है। – false

+0

आप पहले बताते हैं कि आप * अपूर्ण * सूचियों को डीएल में परिवर्तित करते हैं, फिर आप * नियमित * सूची को डीएल में कनवर्ट करने के बारे में बात करते हैं। जो यह है? मैं अधूरा मानता हूं कि आपका मतलब गैर-तत्काल पूंछ वाली सूची है, जैसे '[1,2, .... | एक्स], var (एक्स) '। –

उत्तर

1

अंतर सूची अपूर्ण:

inc2diff(L,Z):- 
    ( nonvar(L) 
    -> (L=[_|T] -> inc2diff(T,Z) ; L=[] -> Z=[]) 
    ; L=Z 
). 

23 ?- L=[1,2,3|_],inc2diff(L,X). 
L = [1, 2, 3|X]. 

24 ?- L=[1,2,3|Z],inc2diff(L,X). 
L = [1, 2, 3|X], 
Z = X. 

25 ?- L=[1,2,3],inc2diff(L,X). 
L = [1, 2, 3], 
X = []. 
-1
| ?- listing(dl_list),dl_list([a,b,c,d|X]-X,L). 

% file: ...util.pg 

dl_list(A - [], A). 

L = [a,b,c,d] 
X = [] 

yes 
संबंधित मुद्दे