हास्केल
उत्तर
मुझे यकीन नहीं है कि एलसीएफ क्या है लेकिन जीसीएफ एक हास्केल पसंदीदा है। यूक्लिडियन एल्ग्राइथ्म का उपयोग करके आप वास्तव में समझ सकते हैं कि हास्केल कैसे काम करता है। http://en.wikipedia.org/wiki/Euclidean_algorithmhttp://en.literateprograms.org/Euclidean_algorithm_(Haskell) पर एल्गोरिदम कैसे स्थापित किया गया है, इस बारे में एक महान स्पष्टीकरण है।
हास्केल में इस प्रकार का रिकर्सन आम है और यह दिखाता है कि भाषा कितनी अभिव्यक्तिपूर्ण हो सकती है।
gcd a 0 = a
gcd a b = gcd b (a `mod` b)
यह तर्कों पर मेल खाने वाले पैटर्न का उपयोग करता है कि किसी भी संख्या का सबसे बड़ा आम कारक और 0 पहला नंबर है। यदि संख्याएं शून्य दोनों हैं, तो दूसरे के सबसे बड़े आम कारक और दूसरे के पहले मोड की तलाश करें। आखिरकार यह दूसरे तर्क में 0 तक पहुंच जाएगा। यह पहला पैटर्न ट्रिगर करेगा और पहला तर्क लौटाएगा जो उत्तर है।
[संपादित करें]
समारोह वास्तव में होना चाहिए:
gcd a 0 = a
gcd a b = b `seq` gcd b (a `mod` b) where
यह पिछले प्रत्यावर्तन कदम की (एक mod
ख) के मूल्यांकन के लिए बाध्य करेगा और एक विशाल thunk पाएगा स्मृति में बनाया जा रहा है, तो , कहें, आप जीसीडीिंग 1243235452 और 6095689787662 हैं। सेक ने अपने "कमजोर हेड सामान्य फॉर्म" में तर्क को बल दिया है या तर्क की बाहरी सबसे अधिक डेटा संरचना का मूल्यांकन किया है।
जीसीएफ द्वारा, क्या आपका मतलब सबसे बड़ा आम कारक, या सबसे बड़ा आम विभाजक है? यह gcd
है, जो प्रीलूड से उपलब्ध है, जैसा lcm
है, कम से कम आम एकाधिक।
gcd
प्रस्ताव में आयात किया गया है। इसका मतलब यह है कि जब भी आप कुछ भी नहीं चाहते हैं तो आप इसे इस्तेमाल कर सकते हैं। यदि आप स्वयं को लागू करने में रुचि रखते हैं तो एरिक हिनटन यूक्लिडियन एल्गोरिदम का एक साधारण संस्करण दिखाता है। हालांकि एक बात: /
केवल फ्लोटिंग पॉइंट डिवीजन के लिए उपयोग की जाती है, div
और mod
का उपयोग करने के लिए जब आप "पूर्णांक विभाजन" करना चाहते हैं तो शेष और शेष ढूंढने के लिए उपयोग करें। प्रस्तावना कम से कम सामान्य एकाधिक के लिए lcm
फ़ंक्शन को भी परिभाषित करता है।
या आप भी
euclid(n,m) =
if n == m then n
else if n < m then euclid(n, m-n)
else euclid(n-m, m)
- 1. हास्केल
- 2. हास्केल
- 3. हास्केल
- 4. हास्केल
- 5. हास्केल
- 6. हास्केल
- 7. हास्केल
- 8. हास्केल
- 9. हास्केल
- 10. हास्केल
- 11. हास्केल
- 12. हास्केल
- 13. हास्केल
- 14. हास्केल
- 15. हास्केल
- 16. हास्केल:
- 17. हास्केल
- 18. हास्केल
- 19. हास्केल
- 20. हास्केल
- 21. हास्केल
- 22. हास्केल
- 23. हास्केल
- 24. हास्केल
- 25. हास्केल
- 26. हास्केल
- 27. हास्केल
- 28. हास्केल
- 29. हास्केल
- 30. हास्केल
शायद यहाँ एक 'seq' में जोड़ना चाहिए कर सकता है। – alternative
बिल्कुल। हालांकि ओपी हास्केल के लिए नया है, लेकिन यह सीखने के लिए अच्छा समय है। –
ओपी शायद यह जानता है, लेकिन 'lcm ab = let g = gcd ab in (div ag) * b' –