विशेष रूप से, मैं बस यह सुनिश्चित करना चाहता हूं कि दो सूचियों में एक ही तत्व हैं,क्या दो सूचियों की सामग्री की तुलना करने के लिए एक सामान्य LISP फ़ंक्शन है?
उत्तर
स्टील के मुताबिक "सेट-फर्क सूची 1 के तत्वों की एक सूची देता है जो सूची 2 में प्रकट नहीं होते हैं। यह ऑपरेशन विनाशकारी नहीं है।"
तो अगर सेट अंतर खाली है और लंबाई एक ही रहे हैं ...
http://www.cs.cmu.edu/Groups/AI/html/cltl/clm/node152.html#SECTION001950000000000000000
यदि ऑर्डर महत्वपूर्ण नहीं है, तो आप बराबर का उपयोग कर सकते हैं। उदाहरण के लिए,
(equal (list 1 2) (list 1 2))
सत्य है। इस प्रकार ऐसा करने का एक तरीका सूची (क्रमबद्ध) करना होगा और फिर बराबर का उपयोग करना होगा। ध्यान दें कि सॉर्ट विनाशकारी है इसलिए यदि आदेश महत्वपूर्ण है, तो आप इसे पहले कॉपी करना चाहेंगे।
इससे कोई फर्क नहीं पड़ता कि आदेश महत्वपूर्ण है या नहीं - SORT नष्ट कर सकते हैं मूल सूची (! यथा-स्थान को क्रमबद्ध नहीं), इसलिए नकल है किसी भी मामले में एक अच्छा विचार है। –
यदि आदेश महत्वपूर्ण था, तो सॉर्टिंग (और इस प्रकार प्रतिलिपि) अनावश्यक होगी; (बराबर एक्स वाई) पर्याप्त होगा। मुझे लगता है कि यह मुद्दा था। – Kevin
यदि दोहराने वाले आइटम महत्वपूर्ण नहीं हैं तो SET-EXCLUSIVE-OR देखें।
(defun same-bag-p (bag1 bag2 &key (test #'eql))
(let ((table (make-hash-table :test test)))
(loop for key in bag1 do (incf (gethash key table 0)))
(loop for key in bag2 do (decf (gethash key table 0)))
(loop for val being each hash-value of table always (= val 0))))
+1। –
क्रमबद्ध दोनों सूचियों, तो तुलना:
(equal (sort l1 #'<) (sort l2 #'<))
वास्तव में प्रासंगिक नहीं है लेकिन सावधान रहें कि सॉर्ट मूल सूची को नष्ट कर देगा, इसलिए यह कोड खराब दिखता है क्योंकि ज्यादातर मामलों में आपको पहले से एक प्रतिलिपि बनाना चाहिए। '(क्रमबद्ध करें (प्रतिलिपि सूची l1) # '<)' या आपको क्रमशः एल 1 और एल 2 के परिणाम को स्टोर करना चाहिए। इसके अलावा इस दृष्टिकोण को क्रमबद्ध तत्वों की आवश्यकता होती है (हैश तालिका एक नहीं है)। – 6502
हेड-अप के लिए धन्यवाद। जब मैंने यह लिखा तो मैं शुद्ध-कार्य-भूमि में बंद था। –
हैं ऑर्डर महत्वपूर्ण नहीं है आप "बराबर-सेट" का उपयोग कर सकते हैं:
(बराबर सेट (1 2)
(1 2)) -> टी
(बराबर सेट (1 2)
(2 1)) -> टी
(बराबर सेट (1 2 5)
(1 2)) -> शून्य
(बराबर सेट (1 2)
(1 5 2)) -> शून्य
मुझे यह फ़ंक्शन विनिर्देशों में नहीं मिल रहा है। क्या आप इससे लिंक कर सकते हैं? – tsikov
- 1. शब्दकोशों की सूचियों की तुलना
- 2. दो टीस्ट्रीम की सामग्री की तुलना में डेल्फी फ़ंक्शन?
- 3. मतभेदों के लिए दो सूचियों की तुलना करें
- 4. LINQ दो सूचियों की तुलना करें और
- 5. सामान्य वस्तुओं को खोजने के लिए दो सूचियों की तुलना करें
- 6. दो डेटासेट्स की तुलना करने की प्रक्रिया
- 7. दो जेनेरिक सूचियों की तुलना करें और डुप्लीकेट
- 8. सी #: दो आईनेमरेबल्स की सामग्री की तुलना करें
- 9. दो .ear फ़ाइलों की तुलना करने के लिए एक उपकरण की आवश्यकता है
- 10. दो सूची-जैसी वस्तुओं की सामग्री की तुलना करने के सर्वोत्तम तरीके क्या हैं?
- 11. आइटम की तुलना करते समय दो सूचियों पर पाइथन पुनरावृत्त
- 12. दो सरणी की सामग्री की तुलना कैसे करें?
- 13. दो साइट संरचनाओं की तुलना करने के लिए उपकरण
- 14. मैं दो डीएलएस की सामग्री की तुलना कैसे करूं?
- 15. चींटी: दो फ़ाइलों की सामग्री की तुलना कैसे करें
- 16. बाइटबफर सामग्री की तुलना करें?
- 17. दो वस्तुओं की तुलना।
- 18. LINQ दो सूचियों की तुलना करना - नया जोड़ें, पुराना हटाएं, सामान्य को
- 19. स्ट्रिंगबफर सामग्री की तुलना
- 20. दो ऑब्जेक्ट्स की तुलना
- 21. जावा सूचियों के साथ स्कैला सूचियों की तुलना
- 22. 2 सूचियों के बीच सामान्य तत्व तुलना
- 23. असेंबली दो संख्याओं की तुलना करने के लिए
- 24. दो सीजीआरईटी की तुलना
- 25. दो छवियों की तुलना करने के लिए एल्गोरिदम
- 26. दो Arrays की तुलना
- 27. की तुलना दो ArrayList
- 28. सूचियों की एक सूची
- 29. दो सूचियों की तुलना करने और उन दो सूचियों के बीच डेल्टा खोजने के लिए सबसे कुशल पैटर्न/एल्गोरिदम क्या है?
- 30. दो SQL सर्वर डेटाबेस की तुलना करने के लिए एक निःशुल्क उपकरण क्या है?
तो आप कहेंगे कि '(1 2 2) के समान तत्व हैं' (1 1 2)? – 6502
'समान तत्व' से आपका क्या मतलब है इस पर निर्भर करता है। मैं तुम्हारा मुद्दा देखता हूं, यद्यपि: यदि मैं 'हां' का उत्तर देता हूं, तो लंबाई से कोई फर्क नहीं पड़ता। अगर मैं 'नहीं' का जवाब देता हूं, तो सेट-फर्क समस्या को हल नहीं करता है। डुप्लिकेट को संभालने के लिए – philosodad