उदासीन प्राइम संख्या जनरेटर [बंद]


16

अच्छे पुराने दिनों को याद रखें जब एक साधारण दस्तावेज़ या वेब पेज खोलना बहुत धीमी गति से होता था क्योंकि यह आपके कंप्यूटर में मौजूद सभी अल्प संसाधनों को खोखला कर देता था? और आज, वही करना और भी धीमा है, जबकि आपका प्रोसेसर सैकड़ों गुना तेज होने और हजारों गुना अधिक मेमोरी तक पहुंचने के बावजूद?

वर्तमान दस्तावेज़ दर्शकों और इसी तरह के अनुप्रयोगों में ब्लोट के प्रभाव का अनुकरण करने के लिए, एक प्रोग्राम लिखें , जिसमें अधिक शक्तिशाली मशीनों पर चलने पर प्रदर्शन की समस्याएं दिखाई दें

सभी के लिए एक समान कार्य करने के लिए, इसे एक प्राइम नंबर जनरेटर बनाएं

  • कार्यक्रम को लगातार प्रमुख संख्याओं को प्रिंट करना है, 2 से शुरू, प्रत्येक एक नई पंक्ति में, और कुछ नहीं। यह हमेशा के लिए होना चाहिए (या स्मृति से बाहर चलने तक)। ऐशे ही:
2
3
5
7
11
13
17
  • प्रत्येक पंक्ति को मुद्रित करने के बीच एक देरी होनी चाहिए, एक मानव द्वारा विचार करने योग्य होने के लिए पर्याप्त है।

  • यह विलंब अधिक लंबा होना चाहिए क्योंकि मशीन जिस प्रोग्राम पर चल रही है वह तेज हो जाती है। मशीन जितनी तेज होगी, प्रोग्राम उतना ही धीमा होगा।

  • मैं सटीक मानदंड निर्दिष्ट नहीं करूंगा क्योंकि यह व्यक्तिपरक हो सकता है, लेकिन दो मशीनों के प्रदर्शन के बीच महत्वपूर्ण अंतर होने पर दो अलग-अलग मशीनों की गति में एक मानव-विचारशील अंतर होना चाहिए।

  • प्रोग्राम की गति को कभी भी बनाए गए सभी मौजूदा मशीनों में कम नहीं होना चाहिए। यह निर्दिष्ट करना कठिन होगा, और सत्यापन के लिए भी कठिन होगा। मुझे प्रतियोगियों के सामान्य ज्ञान पर भरोसा है कि मशीनों के बीच काफी अलग प्रदर्शन माना जा सकता है , और यह संतुष्ट करने के लिए पर्याप्त है।

  • मैं सटीक ऊपरी या निम्न समय सीमाएँ भी निर्दिष्ट नहीं करूंगा, लेकिन यह उचित सीमाओं के तहत होनी चाहिए, इसलिए कृपया दो पंक्तियों को मुद्रित करने के बीच कोई दिन या वर्ष नहीं।

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

  • कोड को संकलक या दुभाषिया संस्करण पर भरोसा नहीं करना चाहिए। यह काम करना चाहिए यदि कंपाइलर / दुभाषिया का एक ही संस्करण धीमा और तेज मशीन दोनों पर स्थापित किया गया है, या यहां तक ​​कि अगर बाइनरी / बायटेकोड एक मशीन पर संकलित किया गया है और फिर दो अलग-अलग मशीनों पर चलता है।

  • कृपया सिद्धांतों को स्पष्ट करें कि आपका कार्यक्रम कैसे संचालित हो रहा है। चूंकि परिणामों को पुन: प्रस्तुत करना मुश्किल होगा, इसलिए उत्तर की वैधता विधि की व्यवहार्यता पर निर्भर हो सकती है।

हालाँकि मुझे यह पसंद आया होगा कि यह एक अंतर्विरोधी प्रतियोगिता बन गई है, दुख की बात यह है कि यह साइट अब "प्रोग्रामिंग पजल्स एंड कोड गोल्फ" नहीं है, बल्कि सिर्फ "कोड गोल्फ" है, इसलिए सबसे छोटा कोड जीतता है।


5
मशीन जितनी तेज़ होगी, प्रोग्राम उतना ही धीमा होगा। मैं इसे एक उद्देश्यपूर्ण, सत्यापन योग्य मानदंड बनाने का आसान तरीका नहीं देखता
लुइस मेंडो

1
@LuisMendo: मैं आसानी से ऐसा करने के लिए कम से कम दो तरीके देखता हूं।
20

1
@vsz मुझे जो समस्या दिखाई दे रही है वह प्रतिलिपि प्रस्तुत करने योग्य है। कोई कहता है कि उन्होंने दो मशीनों पर परीक्षण किया और आवश्यकता के अनुसार गति में महत्वपूर्ण अंतर देखा, लेकिन आप अपने दो मशीनों पर उस व्यवहार को पुन: पेश नहीं कर सकते। तो क्या उत्तर मान्य है?
लुइस मेंडू

1
क्या इसे व्यस्त-बीवर के साथ टैग किया जाना चाहिए ?
mbomb007

2
आप "अधिक शक्तिशाली मशीन" क्या मानते हैं ? क्या एक मशीन एक ही चश्मे के साथ है लेकिन अधिक रैम को अधिक शक्तिशाली माना जाता है? प्रोसेसर एक सेकंड में कितने निर्देशों को चलाता है? दोनों? कुछ और?
घातक

जवाबों:


4

पर्ल, 80 78 71 बाइट्स

-9 बाइट्स @ दादा को धन्यवाद

$_++;`lscpu`=~/z:\s+(\d+)/,sleep$1,(1x$_)!~/^(11+?)\1+$/&&say while$_++

कमांड चलाता है lscpuऔर मेगाहर्ट्ज में सीपीयू की गति पाता है। जितनी तेजी से सीपीयू, आउटपुट के बीच सोने में उतना ही समय, हर 1 मेगाहर्ट्ज के लिए 1 सेकंड। Ubuntu 14.04.5 पर चलता है। मेरी विशेष मशीन पर, यह प्रत्येक संख्या हर 800 सेकंड (13 मिनट, 20 सेकंड) का परीक्षण करता है। तेज मशीनों पर, यह 50 मिनट से अधिक हो सकता है। sleep$a/400परीक्षण उद्देश्यों के लिए कुछ और अधिक प्राप्त करने के लिए इसे बदलें ।


कोड को थोड़ा सा $_++;रीयरेंज =~/z:\s+(\d+)/,sleep$1,(1x$_)!~/^(11+?)\1+$/&&say while++$_करने से 71 बाइट्स के लिए lscpu मिलता है ।
दादा
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.