मैंने एक एल्गोरिदम बनाया है जो एक गैर-नकारात्मक इंट मान लेता है, जो कुल संख्या का प्रतिनिधित्व करता है, और एक ट्रिपल देता है जो (दिन, घंटे, मिनट) देता है जो इससे मेल खाता है। ,हास्केल - एल्गोरिदम पूरा करने के लिए अधिक कुशल तरीका?
calcdays :: Int -> Int
calcdays x = x `div` (24*60)
calchours :: Int -> Int
calchours x = (x - ((calcdays x)*24*60)) `div` 60
calcmins :: Int -> Int
calcmins x = (x - ((calcdays x)*24*60) - ((calchours x)*60))
dayshoursmins :: Int -> (Int,Int,Int)
dayshoursmins x = (calcdays x, calchours x, calcmins x)
केवल बुनियादी हास्केल परिचालन (गार्ड, divs, Mods आदि) का उपयोग करते हुए वहाँ प्रोग्रामिंग का एक और अधिक सरल तरीका यह समारोह है:
यहाँ मेरी कोड है?
संपादित करें:
मैं एक सुझाव नीचे का इस्तेमाल किया है इस कोड को सरल बनाने के लिए है, जबकि qoutRem समाधान के रूप में सरल नहीं, मैंने सोचा कि मैं इसे पोस्ट कर सकता है:
calcdays :: Int -> Int
calcdays x = x `div` (24*60)
calchours :: Int -> Int
calchours x = (x `mod` (24*60)) `div` 60
calcmins :: Int -> Int
calcmins x = (x `mod` (24*60)) `mod` 60
dayshoursmins :: Int -> (Int,Int,Int)
dayshoursmins x = (calcdays x, calchours x, calcmins x)
मैं हास्केल बात नहीं करते की तरह somethink लेकिन एल्गोरिथ्म सामान्य रूप से इस प्रकार है: ', इनपुट लेने के 60 से विभाजित, शेष मिनट हिस्सा है, परिणाम तो है 24 से विभाजित, शेष घंटे का हिस्सा है, नतीजा दिन का हिस्सा है। तो आपको अलगाव में निष्पादित करने के बजाय गणनाओं को चेन करना होगा। – biziclop
हां, हालांकि, हास्केल में, आप चर सेट नहीं कर सकते हैं, इसलिए मुझे यह सुनिश्चित नहीं है कि इसे कैसे प्राप्त किया जाए। –
आपको चर सेट करने की आवश्यकता नहीं है, केवल परिणाम को अगले चरण में सीधे फ़ीड करें। हालांकि मैं वाक्यविन्यास के बारे में अनिश्चित हूँ। – biziclop