मैंने अभी-अभी स्विफ्ट सीखना शुरू किया है और iOS के लिए एक असाइनमेंट बनाने की कोशिश कर रहा हूं।

मेरे पास कीवर्ड की 4 श्रेणियां हैं, उदाहरण के लिए:

CategoryX: hello, bye, good, bad
CategoryY: rain, sun
CategoryZ: sun, hello, what, rain
CategoryV: yes, no, bad, music, song, note

मैं चाहता हूं कि इस श्रेणियों की एक-दूसरे से तुलना करें और परिणाम मुझे वे कीवर्ड देंगे जो चुनी गई श्रेणियों में हैं।

उदाहरण के लिए यदि मैं सभी श्रेणियों की तुलना करना चुनता हूं, तो परिणाम होंगे: शून्य (क्योंकि कोई भी कीवर्ड सभी श्रेणियों में प्रकट नहीं होता है)

लेकिन अगर मैं एक्स और जेड चुनता हूं, तो परिणाम होगा: हैलो

यदि Y और Z तो इसका: सूर्य, वर्षा

मैं किसी से मुझे कोड लिखने के लिए नहीं कह रहा हूं (लेकिन अगर किसी ने मुझे हेडस्टार्ट दिया तो अच्छा होगा), मैं बस इस समस्या से निपटने के तरीके के बारे में थोड़ा सा स्पष्टीकरण चाहता हूं और इसे सही तरीके से करने के लिए क्या उपयोग करना है, कर सकते हैं किसी ने कुछ प्रकाश डाला?

धन्यवाद

1
qwe 27 जुलाई 2018, 01:00
यद्यपि आप कोई कोड प्रदान नहीं कर रहे हैं, मेरा सुझाव है कि Set...
 – 
Ahmad F
27 जुलाई 2018, 02:29

3 जवाब

मैं किसी से मुझे कोड लिखने के लिए नहीं कह रहा हूं (लेकिन अगर किसी ने मुझे हेडस्टार्ट दिया तो अच्छा होगा), मैं बस इस समस्या से निपटने के तरीके के बारे में थोड़ा सा स्पष्टीकरण चाहता हूं और इसे सही तरीके से करने के लिए क्या उपयोग करना है, कर सकते हैं किसी ने कुछ प्रकाश डाला?

ठीक है, उत्तर दिए बिना, यहाँ समस्या से निपटने के तरीके के बारे में एक संकेत दिया गया है, आपको एक शुरुआत देने के लिए।

क्या यह असाइनमेंट आपको सेट के बारे में सोचने पर मजबूर नहीं करता है? उन वेन आरेखों को याद रखें जिन्हें आपको हाई स्कूल में बनाना था? सेट के चौराहे का विचार याद है? उस बारे में सोचना। सेट के बारे में सोचें। हम्म... स्विफ्ट की एक सेट संरचना है...

यदि आप उस विचार का अनुसरण करते हैं, और शोध करते हैं कि स्विफ्ट में एक सेट क्या है, तो आप देखेंगे कि क्या करना है।

6
matt 27 जुलाई 2018, 14:21
आप समझ नहीं पाए हैं कि प्रश्न है क्या है। वह विशेष रूप से एक सामान्य दिशा के लिए पूछता है, न कि किसी के लिए उसके लिए अपना कार्य पूरा करने के लिए।
 – 
matt
27 जुलाई 2018, 14:25
क्षमा करें, मैंने प्रश्न/उत्तर को गलत समझा।
 – 
JustBaron
27 जुलाई 2018, 14:32

इसे लिखने में मज़ा आया इसलिए मैं इसे यहाँ पोस्ट कर रहा हूँ। यदि आप अभी तक समाप्त नहीं हुए हैं तो परिणाम देखें और उससे सीखें (मेरा आदर्श वाक्य)।

मुझे उम्मीद है कि आप .forEach, .map, .filter, Guard let और वैकल्पिक सबस्क्रिप्ट सीखेंगे, क्योंकि आपने सेट के साथ आसान उत्तर को छोड़ दिया था। ओह, बंद करना न भूलें और वे कैसे दृढ़ता से कब्जा करते हैं।

func compare(dicts: [[String]]) -> [String] {
    var result = [String: Int]()
    dicts.forEach { arg0 in
        guard let priorResult = result[arg0.key] else {
            result[arg0.key] = arg0.value
            return
        }
        result[arg0.key] = priorResult + arg0.value
    }

    return result.filter{ arg0 in return arg0.value == dicts.count }.map{ return $0.key }
}

.map, forEach and .filter संग्रह में प्रत्येक आइटम के लिए कॉल करें (शब्दकोश में प्रत्येक कुंजी-मूल्य जोड़ी के लिए) दिए गए क्लोजर।
.map मानचित्र के अंदर जो लौटा है उसकी एक सरणी देता है।
.filter आइटम की एक सरणी देता है जिसके लिए क्लोजर सही लौटा और इसलिए उन आइटम्स को फ़िल्टर करना जिसके लिए क्लोजर गलत लौटा।
.forEach फॉर-लूप का एक विकल्प है।

परिणाम एक स्ट्रिंग के प्रत्येक अवसर की गणना करता है।
.filter हर dict के अंदर होने वाले स्ट्रिंग्स के लिए सही है।
.map शब्दकोश की कुंजियों को एक साधारण [स्ट्रिंग] सरणी में मैप करता है।

1
Fabian 27 जुलाई 2018, 13:30
मैंने आपके लिए स्पष्टीकरण जोड़ा। सभी कार्यों को अच्छी तरह से सीखें, वे फ़िल्टरिंग, संग्रह के मानचित्रण को बहुत आसान बनाते हैं।
 – 
Fabian
27 जुलाई 2018, 13:31

तुम कोशिश कर सकते हो

let set1 = Set(["123","456","789"])
let set2 = Set(["123","456"])
let set3 = Set(["123"])
let res12 = set1.intersection(set2)  // ["123","456"]
let res123 = set1.intersection(set2).intersection(set3)  // ["123"]
0
Sh_Khan 27 जुलाई 2018, 01:17
2
बढ़िया, बस उसे उसके कार्य का उत्तर दें। अब उसने सीखा क्या है?
 – 
matt
27 जुलाई 2018, 01:06
1
मैं आपसे सहमत हूं, लेकिन मुझे लगता है कि साइट एक पूर्ण उत्तर के लिए है
 – 
Sh_Khan
27 जुलाई 2018, 01:10
1
उसने विशेष रूप से आपको कोड लिखने के लिए कहा नहीं। तो यह उस तरह का जवाब नहीं है जैसा वह अनुरोध कर रहा था।
 – 
matt
27 जुलाई 2018, 01:12
1
निश्चित रूप से आप जान सकते हैं कि 90% साइट दर्शक बिना सोचे-समझे जवाब कॉपी कर लेते हैं क्यों ? कोई भी सीखना चाहता है, यहां तक ​​​​कि समस्या के लिए खुदाई करने के लिए तब तक नहीं पूछ सकता जब तक कि वह इसे स्वयं नहीं ढूंढ लेता
 – 
Sh_Khan
27 जुलाई 2018, 01:19
1
आपको यह बताने के लिए खेद है कि हम हार जाएंगे, यह एक इंसान का इरादा है कि वह सीखने के लिए अपना रास्ता चुने
 – 
Sh_Khan
27 जुलाई 2018, 02:28