2011-11-08 8 views
5

का उपयोग कैसे करें मुझे एक समस्या है जहां मुझे फ्लोट की सूची की सूची में हेरफेर करना होगा। [[] फ्लोट]। फ्लोट की ये सूची लंबाई 4 है। मैं डुप्लिकेट को हटाना चाहता हूं जहां पहले 3 तत्वों का परीक्षण किया जाता है, लेकिन चौथे को अनदेखा करें। यह एक बहु भाग की समस्या का आखिरी हिस्सा है और मैं इस समय इसका उपयोग करने के बारे में पता लगाने के लिए दीवार पर अपने सिर को टक्कर लगी हूं। मुझे कोई उपयोगी जानकारी नहीं मिल रही है।कठिन समय समझने के लिए nubBy

fixDuplicates :: [[Float]] -> [[Float]] 
fixDuplcates [[]] = [[]] 
fixDuplicates x = nubBy ? 
+2

विषय टिप्पणी: यदि चौथा नंबर विशेष है, तो आपको डेटाटाइप को परिभाषित करते समय इसे किसी भी तरह से सुधारना चाहिए? मानों की सरणी का उपयोग करने के बजाए रिकॉर्ड स्टोर करने के लिए कोई स्ट्रक्चर डब्ल्यू/सार्थक नामों का उपयोग कैसे करेगा। – hugomg

+0

डेटाटाइप पूर्वनिर्धारित हैं और मुझे –

+0

दिए गए कार्यों के साथ काम करना है, तो आप एक रूपांतरण फ़ंक्शन बना सकते हैं;) – hugomg

उत्तर

10

nubBy समानता के लिए तत्वों की तुलना के लिए उपयोग करने के लिए एक समारोह लेता है। समानता की आपकी परिभाषा यह है कि दो सूचियां बराबर होती हैं यदि उनके पहले तीन तत्व मेल खाते हैं। इसका एक सरल कार्यान्वयन है:

fixDuplicates xs = nubBy firstThreeMatch xs 
    where firstThreeMatch ys zs = take 3 ys == take 3 zs 
+8

पुनरावृत्ति को छोड़ सकता है और एक अतिरिक्त के साथ 'nubBy ((==) \' \ 'ले 3') बन सकता है 'डेटा.फंक्शन 'का आयात। – ephemient

+0

सही, बहुत बहुत धन्यवाद, मेरा प्रोग्राम पूरी तरह से काम करता है। –

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