एक दशमलव का दोहरा सटीक प्रतिनिधित्व केवल 15 दशमलव स्थानों की सटीकता की गारंटी दे सकता है, इस प्रकार पीआई का अनुमान लगाया गया है:
3.141592653589793
आप देख सकते हैं कि अंक 3
पदों में है 1, 10, 16
, अंक 1
पदों 2, 4
आदि में है ।
चुनौती
आपका कार्य एक प्रोग्राम या फ़ंक्शन बनाना है जो 0 और 1 के बीच एक यादृच्छिक डबल नंबर बनाता है, और पीआई के मूल्य पर उस संख्या के मूल्यों को मैप करता है। आप अलग-अलग अंकों को यादृच्छिक संख्याओं में उस स्थिति में रखकर करते हैं जो कि अंक में पाई में है। यदि अंक पाई में नहीं मिला है, तो आप इसे छोड़ देंगे, और पीआई में हर अंक जो यादृच्छिक संख्या में नहीं है, एक प्रतिनिधित्व द्वारा दर्शाया जाएगा x
। प्रत्येक मान केवल एक बार उपयोग किया जा सकता है, बाईं ओर से शुरू होता है।
कुछ उदाहरण शायद इसे और अधिक स्पष्ट करेंगे। निम्नलिखित उदाहरणों में, पहली संख्या पाई है, दूसरी यादृच्छिक संख्या है, और अंतिम वांछित आउटपुट है।
3.141592653589793
0.111111111111111
x.1x1xxxxxxxxxxxx
3.141592653589793
0.531000000000000
3.1xx5xxxxxxxxxxx
3.141592653589793
0.123456789123456
3.141592653x8x7xx
3.141592653589793
0.967552381459391
3.14159265358979x
नियम:
- फ़ंक्शन को कोई इनपुट नहीं लेना चाहिए (बुलेट पॉइंट 3 में एक संभावित अपवाद समझाया गया है)
- आउटपुट में केवल आउटपुट स्ट्रिंग शामिल होगी, एक वैकल्पिक न्यूलाइन के साथ (एक एकल अनुगामी स्थान भी स्वीकार किया जाता है)
- यदि आपके प्रोग्राम में बिल्ट-इन Pi-value नहीं है, और / या RNG है तो आप Pi को हार्डकोड कर सकते हैं, और रैंडम नंबर को इनपुट के रूप में ले सकते हैं। आप यादृच्छिक संख्या को हार्डकोड नहीं कर सकते या इनपुट के रूप में पाई नहीं ले सकते।
- पाई के लिए दोनों हार्डकोडेड मूल्य, और 15 यादृच्छिक अंक (आप छोड़ सकते हैं
0.
क्योंकि आपको पता है कि यह 0 और 1 के बीच होगा), बाइट गिनती में शामिल किया जाएगा। - यदि आपकी भाषा में आवश्यक सटीकता नहीं है, तो आप निम्न प्रतिबंधों के तहत कम सटीकता का उपयोग कर सकते हैं
- पाई के अंक आपके पास मौजूद सटीकता तक सटीक होना चाहिए
- यदि आप सही होने की गारंटी देते हैं, तो आप अधिक मूल्यों का उत्पादन नहीं कर सकते हैं, अर्थात आप 15 अंकों का उत्पादन नहीं कर सकते हैं यदि सटीक केवल 8 सटीक दशमलव की अनुमति देता है।
- पाई का हार्डकोड मूल्य 16 बाइट्स के रूप में गिना जाएगा (आपको दशमलव बिंदु की आवश्यकता नहीं है), भले ही आपका कार्यक्रम केवल 8 अंकों का समर्थन करता हो।
- यादृच्छिक संख्या के लिए इनपुट मान 15 बाइट्स के रूप में गिना जाएगा (आपको इसकी आवश्यकता नहीं है
0.
। ऐसा इसलिए है क्योंकि कम परिशुद्धता वाली भाषाओं में अनुचित लाभ नहीं होना चाहिए। - कार्यक्रम को 5 दशमलव सटीकता (कम से कम) का समर्थन करना चाहिए।
- संपादित करें: उत्तर को मान्य करने के लिए: यादृच्छिक संख्या को किसी भी तरह प्रिंट किया जाना चाहिए, लेकिन इस ऑपरेशन को बाइट की गिनती में शामिल नहीं करना है। उदाहरण के लिए, यदि
print r
स्क्रिप्ट के अंत में एक सम्मिलित करना संभव है, तो वह भाग स्कोर में वृद्धि नहीं करेगा। - यदि आप किसी अन्य आवश्यक ऑपरेशन का हिस्सा हैं तो आप बाइट को घटा नहीं सकते। यानी अगर कोड है
print pi, r
, तो आप केवल घटा सकते हैं, r
। - यदि आपको कोड में कई जगह पार्ट्स डालने हैं, तो कृपया दोनों संस्करणों को शामिल करें (एक जो यादृच्छिक संख्या को प्रिंट करता है और एक वह है जो इस तरह की टिप्पणी के साथ नहीं है:
_p
और_oNo
यादृच्छिक संख्या को प्रिंट करने के लिए आवश्यक है।_p
xxx और_oNo
करता है) yyy।_p
और_oNo
बाइट की गिनती में शामिल नहीं किया जाएगा।
बाइट्स में सबसे छोटा कोड जीत जाता है।
लीडरबोर्ड
इस पोस्ट के निचले हिस्से में स्टैक स्निपेट उत्तर से सूची बनाता है) क) प्रति भाषा में सबसे छोटे समाधान की सूची के रूप में और बी) एक समग्र लीडरबोर्ड के रूप में।
यह सुनिश्चित करने के लिए कि आपका उत्तर दिखाई देता है, कृपया अपना उत्तर शीर्षक मार्कडाउन टेम्पलेट का उपयोग करके शीर्षक के साथ शुरू करें:
## Language Name, N bytes
N
आपके प्रस्तुत करने का आकार कहां है। यदि आप अपने स्कोर में सुधार करते हैं, तो आप पुराने अंकों को हेडलाइन में रख सकते हैं , उनके माध्यम से स्ट्राइक करके। उदाहरण के लिए:
## Ruby, <s>104</s> <s>101</s> 96 bytes
यदि आप अपने हेडर में कई संख्याओं को शामिल करना चाहते हैं (जैसे कि आपका स्कोर दो फ़ाइलों का योग है या आप दुभाषिया ध्वज दंड को अलग से सूचीबद्ध करना चाहते हैं), तो सुनिश्चित करें कि हेडर में वास्तविक अंक अंतिम संख्या है:
## Perl, 43 + 2 (-p flag) = 45 bytes
आप भाषा के नाम को एक लिंक भी बना सकते हैं जो बाद में स्निपेट में दिखाई देगा:
## [><>](http://esolangs.org/wiki/Fish), 121 bytes
0 < random < 1
या 0 <= random <= 1
?