मेरे पास दो अपरिवर्तित सूचियां हैं और मुझे एक और सूची तैयार करने की आवश्यकता है जो सॉर्ट किया गया है और जहां सभी तत्व अद्वितीय हैं।मुझे दो सूचियों में शामिल होने, उन्हें क्रमबद्ध करने और डुप्लीकेट हटाने की आवश्यकता है। क्या ऐसा करने के लिए इससे अच्छा तरीका है?
तत्व दोनों सूचियों में कई बार हो सकते हैं और वे मूल रूप से अपरिवर्तित हैं।
मेरे समारोह इस तरह दिखता है:
(defun merge-lists (list-a list-b sort-fn)
"Merges two lists of (x, y) coordinates sorting them and removing dupes"
(let ((prev nil))
(remove-if
(lambda (point)
(let ((ret-val (equal point prev)))
(setf prev point)
ret-val))
(sort
(merge 'list list-a list-b sort-fn) ;'
sort-fn))))
वहाँ एक ही प्राप्त करने के लिए एक बेहतर तरीका है?
नमूना कॉल:
[CL]> (merge-lists '(9 8 4 8 9 7 2) '(1 7 3 9 2 6) #'>)
==> (9 8 7 6 4 3 2 1)
आप "बेहतर" के साथ क्या मतलब है यह स्पष्ट करना चाहते हैं। – mweerden
क्या आपने अनचाहे स्निपेट को आजमाया और क्या यह काम किया? मुझे अपना जवाब संपादित करना अच्छा लगेगा ताकि हमारे बाद की पीढ़ी को अपने लिस्प 3000 को दुर्घटनाग्रस्त स्निपेट के डर में नहीं रहना पड़े ... –
मैंने वास्तव में इसका परीक्षण किया और यह वास्तव में काम करता था। उत्तर के लिए बहुत धन्यवाद। – dsm