ProjectEuler के साथ एक कार्य के लिए कस्टम समाधान

प्रोजेक्ट यूलर के साथ समस्याएं अच्छी हैं क्योंकि वे आपको एक ही कार्य के लिए कठिनाई के विभिन्न स्तरों पर मज़े करने और आपके मस्तिष्क को प्रशिक्षित करने की अनुमति देते हैं। सबसे सरल दृष्टिकोण पाशविक बल है। इस तरह के दृष्टिकोण से पहले दो दर्जन कार्य 99% हल होते हैं। कार्य का सही उत्तर भेजने के बाद, उस पर एक फोरम थ्रेड खुलता है। दर्जनों देशों के एमेच्योर प्रतिस्पर्धा करते हैं जो समाधान को अधिक परिष्कृत रूप से उद्धृत करेंगे। अधिक उन्नत लोग उन भाषाओं की अंतर्निहित विशेषताओं का उपयोग करते हैं जिनमें समाधान लिखा जाता है, लेकिन सार समान है - विशेष कार्यों को कॉल करने के माध्यम से नेस्टेड छोरों का एक गुच्छा के साथ बस्ट या स्पष्ट। यह पायथन या रूबी (अक्सर एक या दो लाइनों में) में विशेष रूप से सुंदर दिखता है, जावा और सी ++ में अधिक क्रिया। दूर, स्ट्रैटनर "पावर" सॉल्यूशन देखते हैं, बिगइंटर जैसी कक्षाओं का उपयोग करते हैं। जैसे-जैसे टास्क नंबर बढ़ता है, ब्रूट फोर्स को कम और कम और अधिक मुश्किल से सफलतापूर्वक इस्तेमाल किया जा सकता है। शुद्ध गणित में कई समस्याएं हैं, जहां आपको कागज पर एक समस्या को हल करने की आवश्यकता होती है, और फिर कुछ पूरी तरह से सीधी होती है। कभी-कभी आप कोड लिखे बिना भी लिख सकते हैं, ऐसे कई कार्य हैं - उदाहरण के लिए, कॉम्बिनेटरिक्स का उपयोग।

लेकिन कभी-कभी पूरी तरह से गैर-मानक समाधान खोजना अधिक सुखद होता है।


एक उदाहरण है। टास्क 9 । पूर्णांक a, b, c का एक पायथागॉरियन ट्रिपलेट ज्ञात करें a + b + c = 1000। आपको बता दें कि पायथागॉरियन ट्रिपलेट तीन धनात्मक पूर्णांक एक <b <c है, जो एक सही त्रिभुज की भुजाएँ हैं, अर्थात a ^ 2 + b ^ 2 = c ^ 2। सबसे प्रसिद्ध स्कूल उदाहरण: 3, 4, 5।

खोज समाधान स्पष्ट है। यह समय में बहुत कम हो जाता है, यदि आप ऐसे ट्रिपल के गुणों को जानते हैं, तो आप बहुत सारे पुनरावृत्तियों को बचा सकते हैं। लेकिन हम दूसरे रास्ते से जाएंगे।

हम समाधान के लिए किसी भी संस्करण के एमएस एक्सेल सूट में सॉल्वर ऑप्टिमाइज़ेशन टूल का उपयोग करेंगे।



सॉल्वर समाधान खोजने के लिए एक बहुत शक्तिशाली उपकरण हो सकता है, हालांकि वे कहते हैं कि बहुत ही बहुआयामी मामलों में यह विफल हो जाता है। मुझे अब भी वह तस्वीर याद है जब मैंने एक आदमी को देखा था जो कई दर्जन चर के समीकरणों की विशाल प्रणाली के लिए एक समाधान की तलाश में था, या कम से कम एक स्थानीय सन्निकटन। उन्होंने मास्टर डिग्री के लिए लिखा, अर्थशास्त्र में कुछ। वह निश्चित रूप से कई भाषाओं में कोड लिख सकता था, लेकिन यह स्क्रैप में था। मैंने सॉल्वर में सेटिंग्स को भारी संख्या में पुनरावृत्तियों के लिए सेट किया, एक विशाल अधिकतम खोज समय और इसे काम पर अपने कंप्यूटर पर लॉन्च किया। परिणामस्वरूप वहां कुछ गिना गया।

वैसे, मैं अधिकतम पथ योग की समस्या को हल करने के लिए सॉल्वर को छड़ी करने में सक्षम नहीं था - वहां फ़ंक्शन पूरी तरह से गैर-चिकनी, यादृच्छिक है।

कई समस्याओं, जैसा कि मैंने कहा, बिना कोड के हल किए गए, विश्लेषणात्मक रूप से। एक बार जब मुझे द्विपद गुणांक की गणना करनी थी, मैंने इसके लिए विंडोज इंजीनियरिंग कैलकुलेटर का उपयोग किया। पहले सौ के अंत में एक समस्या को एसक्यूएल की मदद से हल किया गया था - जो सभी की आवश्यकता थी वह डेटा को एक तालिका में कॉपी करना था - एक नियमित नोटपैड ++ में जो कि एक डीडीएल स्क्रिप्ट बनाता है, जिसके बाद तालिका आबादी है और क्वेरी एक पंक्ति में है।

यह प्रोजेक्टयूलर के आंकड़ों को देखने के लिए बहुत मजेदार है। उपयोग की जाने वाली सबसे कुशल भाषाएं और वातावरण C ++ \ Java नहीं हैं, लेकिन फ्रांसीसी matpack PARI / GP, Mathematica, Python और Haskel हैं। बहुत सारे विदेशी लोगों का उपयोग किया जाता है (पोस्ट लिखने के समय के आँकड़े):

भाषाउपयोगकर्ताओं की संख्याऔसत प्रतिशत हल हुआस्कोर सूचकांक
1PARI / जीपी7923%99
2मेथेमेटिका127213%92
3अजगर26,8878%81
4हास्केल46808%67
5ऋषि18012%62
6पर्ल22378%61
7सी / सी ++28,4546%61
8एपीएल / जे / के25411%60
9जावा18,1586%58
10C #91226%54
11एमएल4369%54
12मेपल2659%49
13गहरे लाल रंग का42296%49
14स्काला12707%49
15MUMPS2216%49
16लिस्प10967%48
17डेल्फी4518%48
18एफ #9367%47
19योजना7447%46
20मैटलैब21226%45
21मैग्मा2115%45
22रैकेट1409%44
23घटक पास्कल722%42
24बेसिक11626%42
25जाओ4147%41
26Frink1018%41
27Clojure9916%41
28डी1638%40
29पेंसिल / कागज8056%39
30पास्कल6016%38
31Tcl659%37
32आर4966%37
33आरपीएल1414%36
34स्प्रेडशीट4126%35
35गैप2611%35
36सभा1527%34
37लुआ3326%34
38फोरट्रान3086%34
39आगे399%32
40स्मालटाक907%31
41एसएएस1710%28
42एडीए976%27
43ECMAScript8344%26
44क्यू746%25
45Erlang5804%25
46जूलिया367%24
47AutoHotkey1210%24
48Prolog1145%23
49पीएचपी24453%23
...............
53सप्टक635%20
54बू177%19
55कोबरा318%19
56लोगो266%19
57ग्रूवी385%18
58एसक्यूएल375%17
59कोबोल196%17
60PowerShell684%16
...............
68बॉर्न शेल323%10
...............


अधिकांश लोग, निश्चित रूप से, संयुक्त राज्य अमेरिका से - लगभग 28 हजार, चीन और रूस से - एक ही संख्या के बारे में - लगभग 3,000। लेकिन अगर आप देश में प्रहार करते हैं और कार्यों पर शीर्ष 100 देखते हैं, तो आप देख सकते हैं कि चीनी अधिक प्रभावी हैं - ऐसे लोग हैं जो निर्णय लेते हैं, अधिक 400, 350, 300, आदि। कार्य। और भारत में, इसके विपरीत, लगभग 2.5 गुना अधिक प्रतिभागी हैं, लेकिन रूस की तुलना में कम सुपर-सॉल्वर हैं। मेरी राय में, यदि आप इसे सभी लोगों की संख्या को सामान्य करते हैं, तो प्रति देश के कुछ सांख्यिकीय महत्वपूर्ण संख्याओं के साथ शुरू करके, आप इसमें उच्च शिक्षा की प्रभावशीलता का आकलन कर सकते हैं।

Source: https://habr.com/ru/post/In196966/


All Articles