2016-12-21 7 views
5

मैं प्रोग्रामिंग में कोई पूर्व ज्ञान नहीं होने वाला पहला वर्ष सीएस छात्र हूं। मुझे Project Euler की समस्याओं से गुजरने की सिफारिश की गई थी, और first problem को हल करने में कामयाब रहा है।प्रोजेक्ट यूलर # 1। मैं जवाब 100 से गलत प्राप्त कर रहा हूं और मुझे नहीं पता क्यों (लिखित inF #)

यह बताता है कि आपको उन सभी संख्याओं को जोड़ना होगा जो 3 या 5 (या दोनों) के एकाधिक हैं।

एफ # में मेरे कोड:

let mutable n = 0 
for i in 0..1000 do 
    if (i % 3 = 0) || (i % 5 = 0) then 
    n <- i + n 

printfn "%A" n 

जब ऐसा चलाया जाता है, मैं जवाब 234,168 जो वास्तविक जवाब के 100 से बंद है मिलता है।
कोई सुझाव क्यों?

+10

संकेत: वास्तविक उत्तर 233168 है जो ** 1000 ** से बंद है, 100 नहीं। संकेत 2: * "** 1000 से नीचे 3 या 5 ** के सभी गुणों का योग खोजें।" * – JJJ

+4

यदि आप प्रोजेक्ट यूलर या प्रोजेक्ट रोज़लिंड को एफ # में हल करने का प्रयास करते हैं, यदि आप अधिक बेवकूफ कोड लिखने का प्रयास करते हैं तो इससे मदद मिलती है। जैसे '[1..9 99] |> Seq.filter (मजेदार एक्स -> x% 3 = 0 || x% 5 = 0) |> Seq.sum' \\ – s952163

+1

मैं दृढ़ता से सुझाव दूंगा कि आप बिना काम के कोड को सीखना सीखेंगे 'mutable' का उपयोग कर। 'Mutable' का उपयोग करके आप गलत दिशा में एक कदम उठा रहे हैं। जब आप पहली बार सीख रहे हों, तो मैं कहूंगा कि कोड को अपेक्षित काम करने के लिए 'mutable' का उपयोग करना ठीक है, फिर' mutable' का उपयोग न करने के लिए कोड को फिर से लिखें। 'म्यूटेबल' के बिना कोड लिखते समय आप रिफैक्टरिंग का मार्ग जा सकते हैं, लेकिन मैं सुझाव दूंगा कि आप प्रोग्राम के बारे में सोचने के तरीके को बदलने के दृष्टिकोण को ले लें, स्मृति के लिए केवल एक ढेर के बारे में सोचें, ढेर के बारे में मत सोचो याद। –

उत्तर

1

अन्य लोगों के लिए गलती से सीखना आसान बनाने के लिए इस प्रश्न का उत्तर पोस्ट करना।

let mutable n = 0 
for i in 0..999 do 
    if (i % 3 = 0) || (i % 5 = 0) then 
    n <- i + n 

printfn "%A" n 

क्रेडिट उनका कहना है कि एक और अधिक कार्यात्मक दृष्टिकोण एफ # में अधिक मुहावरेदार होगा के लिए मूल संकेत और लड़का सांकेतिक शब्दों में बदलनेवाला देने के लिए JJJ के पास जाना चाहिए।

+0

यह सच है, जो मैं भूल गया हूँ! मैंने पुष्टि करने के लिए आपके उत्तर को उखाड़ फेंक दिया है! – VanTheMan

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