algorithmएल्गोरिथम के साथ शुरुआत करना


टिप्पणियों

एल्गोरिदम का परिचय

कंप्यूटर विज्ञान और सॉफ्टवेयर इंजीनियरिंग में एल्गोरिदम सर्वव्यापी हैं। उचित एल्गोरिदम और डेटा संरचनाओं का चयन लागत और समय में हमारे कार्यक्रम की दक्षता में सुधार करता है।

एक एल्गोरिथ्म क्या है? अनौपचारिक रूप से, एक एल्गोरिथ्म एक विशिष्ट कार्य को पूरा करने की एक प्रक्रिया है। [स्कीना: 2008: एडीएम: 1410219] विशेष रूप से, एक एल्गोरिथ्म एक अच्छी तरह से परिभाषित कम्प्यूटेशनल प्रक्रिया है, जो इनपुट के रूप में कुछ मूल्य (या मूल्यों का सेट) लेता है और आउटपुट के रूप में कुछ मूल्य, या मूल्यों के एक सेट का उत्पादन करता है । एक एल्गोरिथ्म इस प्रकार कम्प्यूटेशनल चरणों का एक क्रम है जो इनपुट को आउटपुट में बदल देता है। कॉर्मेन एट। अल। स्पष्ट रूप से टिप्पणी नहीं करता है कि एक एल्गोरिथ्म को आवश्यक रूप से एक इनपुट की आवश्यकता नहीं है। [Cormen: 2001: आइए: 580,470]

औपचारिक रूप से, एक एल्गोरिथ्म को पाँच विशेषताओं को पूरा करना चाहिए: [नथ: 1997: एसीपी: 260999]

  1. ख़त्म होने का भाव । एक एल्गोरिथ्म हमेशा चरणों की एक सीमित संख्या के बाद समाप्त होना चाहिए।
  2. निश्चितता । एक एल्गोरिथ्म के प्रत्येक चरण को सटीक रूप से परिभाषित किया जाना चाहिए; किए जाने वाले कार्यों को सख्ती से निर्दिष्ट किया जाना चाहिए। यह यह गुण है कि [Cormen: 2001: IA: 580470] शब्द "अच्छी तरह से परिभाषित" के साथ है।
  3. इनपुट एक एल्गोरिथ्म में शून्य या अधिक इनपुट होते हैं । ये वे मात्राएँ हैं जो शुरू होने से पहले या गतिशील रूप से एल्गोरिथम को दी जाती हैं क्योंकि यह चलती है।
  4. आउटपुट । एक एल्गोरिथ्म में एक या अधिक आउटपुट होते हैं । ये ऐसी मात्राएँ हैं जिनका इनपुटों से एक विशिष्ट संबंध है। हम उम्मीद करते हैं कि एक एल्गोरिथ्म एक ही आउटपुट का उत्पादन करता है जब एक ही इनपुट बार-बार दिया जाता है।
  5. प्रभावशीलता । एक एल्गोरिथ्म भी आमतौर पर प्रभावी होने की उम्मीद है। इसका संचालन पर्याप्त रूप से बुनियादी होना चाहिए कि वे बिल्कुल सिद्धांत रूप में और किसी व्यक्ति द्वारा पेंसिल और कागज का उपयोग करके समय की एक लंबी अवधि में किया जा सकता है।

एक प्रक्रिया जिसमें परिमितता का अभाव होता है लेकिन एक एल्गोरिथम की अन्य सभी विशेषताओं को संतुष्ट करता है जिसे कम्प्यूटेशनल विधि कहा जा सकता है। [नुथ: 1997: एसीपी: 260,999]

एक नमूना एल्गोरिदम समस्या

एक एल्गोरिथम समस्या इन उदाहरणों में से एक पर चलने के बाद उस पर और उसके आउटपुट पर काम करने के उदाहरणों के पूर्ण सेट का वर्णन करके निर्दिष्ट की जाती है। एक समस्या और एक समस्या के बीच का यह अंतर मौलिक है। छँटाई के रूप में जाना जाने वाला एल्गोरिथम समस्या निम्नानुसार परिभाषित की गई है: [स्कीना: 2008: एडीएम: 1410219]

  • समस्या: छँटाई
  • इनपुट: n कुंजियों का एक क्रम, a_1, a_2, ..., a_n
  • आउटपुट: इनपुट अनुक्रम की a'_1 <= a'_2 <= ... <= a'_{n-1} <= a'_n ऐसी कि a'_1 <= a'_2 <= ... <= a'_{n-1} <= a'_n

सॉर्टिंग का एक उदाहरण स्ट्रिंग्स का एक सरणी हो सकता है, जैसे { Haskell, Emacs } या { 154, 245, 1337 } जैसे नंबरों का एक क्रम।

स्विफ्ट में सिंपल फिज़ी बज़ एल्गोरिथ्म के साथ शुरुआत करना

आप में से जो स्विफ्ट में प्रोग्रामिंग करने के लिए नए हैं और आप में से जो विभिन्न प्रोग्रामिंग बेस से आ रहे हैं, जैसे कि पायथन या जावा, यह लेख काफी मददगार होना चाहिए। इस पोस्ट में, हम स्विफ्ट एल्गोरिदम को लागू करने के लिए एक सरल समाधान पर चर्चा करेंगे।

फिज बज़

आपने फ़िज़ बज़ को फ़िज़ बज़, फ़िज़बज़ या फ़िज़-बज़ के रूप में लिखा देखा होगा; वे सभी एक ही बात का जिक्र कर रहे हैं। यह "बात" आज चर्चा का मुख्य विषय है। सबसे पहले, FizzBuzz क्या है?

यह एक सामान्य प्रश्न है जो नौकरी के साक्षात्कार में आता है।

1 से 10 तक की संख्या की एक श्रृंखला की कल्पना करें।

1 2 3 4 5 6 7 8 9 10
 

फ़िज़ और बज़ किसी भी संख्या को संदर्भित करते हैं जो क्रमशः 3 और 5 का गुणक है। दूसरे शब्दों में, यदि संख्या 3 से विभाज्य है, तो इसे फ़िज़ के साथ प्रतिस्थापित किया जाता है; यदि संख्या 5 से विभाज्य है, तो इसे बज़ के साथ प्रतिस्थापित किया जाता है। यदि एक संख्या एक साथ 3 और 5 के एक से अधिक है, तो संख्या को "फ़िज़ बज़" से बदल दिया जाता है। संक्षेप में, यह प्रसिद्ध बच्चों के खेल "फ़िज़ बज़" का अनुकरण करता है।

इस समस्या पर काम करने के लिए, एक नया खेल का मैदान बनाने के लिए Xcode को खोलें और नीचे की तरह एक सरणी शुरू करें:

// for example 
let number  = [1,2,3,4,5]
// here 3 is fizz and 5 is buzz
 

सभी fizz और buzz को खोजने के लिए, हमें array के माध्यम से iterate करना चाहिए और जांचना चाहिए कि कौन से नंबर fizz हैं और कौन से buzz हैं। ऐसा करने के लिए, हमारे द्वारा आरंभीकृत सरणी के माध्यम से पुनरावृति के लिए लूप के लिए बनाएं:

for num in number {
  // Body and calculation goes here
}
 

इसके बाद, हम फ़िज़ और भनभन का पता लगाने के लिए बस "अगर" स्थिति और मॉड्यूल ऑपरेटर को स्विफ्ट यानी% में उपयोग कर सकते हैं

for num in number {
  if num % 3 == 0 {
    print("\(num) fizz")
  } else {
    print(num)
  }
}
 

महान! आप आउटपुट देखने के लिए Xcode खेल के मैदान में डिबग कंसोल पर जा सकते हैं। आप पाएंगे कि "fizzes" को आपके एरे में हल कर दिया गया है।

बज़ भाग के लिए, हम उसी तकनीक का उपयोग करेंगे। आइए लेख के माध्यम से स्क्रॉल करने से पहले इसे आज़माएं - एक बार ऐसा करने के बाद आप इस लेख के विरुद्ध अपने परिणामों की जांच कर सकते हैं।

for num in number {
  if num % 3 == 0 {
    print("\(num) fizz")
  } else if num % 5 == 0 {
    print("\(num) buzz")
  } else {
    print(num)
  }
}
 

आउटपुट की जाँच करें!

यह सीधे आगे है - आपने संख्या को 3 से विभाजित किया, फ़िज़ किया और संख्या को 5 से विभाजित किया, चर्चा की। अब, सरणी में संख्या बढ़ाएं

let number = [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15]
 

हमने "फ़िज़ बज़" की अवधारणा को प्रदर्शित करने के लिए संख्या की सीमा 1-10 से 1-15 तक बढ़ा दी। चूंकि 15 3 और 5 दोनों का एक बहु है, इसलिए संख्या को "फ़िज़ बज़" से बदला जाना चाहिए। अपने लिए प्रयास करें और उत्तर की जांच करें!

यहाँ समाधान है:

for num in number {
  if num % 3 == 0 && num % 5 == 0 {
    print("\(num) fizz buzz")
  } else if num % 3 == 0 {
    print("\(num) fizz")
  } else if num % 5 == 0 {
    print("\(num) buzz")
  } else {
    print(num)
  }
}
 

रुको ... हालांकि यह खत्म नहीं हुआ है! एल्गोरिथ्म का पूरा उद्देश्य रनटाइम को सही ढंग से कस्टमाइज़ करना है। सोचिए अगर रेंज 1-15 से बढ़कर 1-100 हो जाए। कंपाइलर यह निर्धारित करने के लिए प्रत्येक संख्या की जांच करेगा कि क्या यह 3 या 5 से विभाज्य है। यह संख्याओं के माध्यम से फिर से जांच करेगा कि क्या नंबर 3 और 5 से विभाज्य हैं। कोड अनिवार्य रूप से सरणी में प्रत्येक संख्या के माध्यम से चलना होगा। दो बार - इसे पहले 3 से संख्याओं को चलाना होगा और फिर इसे 5 से चलाना होगा। प्रक्रिया को तेज करने के लिए, हम बस संख्याओं को सीधे 15 से विभाजित करने के लिए हमारे कोड को बता सकते हैं।

यहाँ अंतिम कोड है:

for num in number {
  if num % 15 == 0 {
    print("\(num) fizz buzz")
  } else if num % 3 == 0 {
    print("\(num) fizz")
  } else if num % 5 == 0 {
    print("\(num) buzz")
  } else {
    print(num)
  }
}
 

जैसा कि सरल है, आप अपनी पसंद की किसी भी भाषा का उपयोग कर सकते हैं और आरंभ कर सकते हैं

कोडिंग का आनंद लें