एक जोरदार डार्बौक्स फ़ंक्शन को लागू करें


13

विकिपीडिया के अनुसार , एक जोरदार डार्बौक्स फ़ंक्शन है

एक जिसके लिए हर (गैर-रिक्त) खुले अंतराल की छवि पूरी वास्तविक रेखा है

दूसरे शब्दों में, एक फ़ंक्शन दृढ़ता से Darboux है यदि 3 मनमानी वास्तविक संख्याएं , और , तो हमेशा एक के बीच एक (विशिष्ट) और जैसे कि को खोजना संभव है ।yएक्स(एक्स)=y

इस चुनौती के प्रयोजनों के लिए, हम तर्कसंगत रूप से इसके बजाय डर्बौक्स कार्यों पर दृढ़ता से विचार करेंगे।

आपकी चुनौती एक प्रोग्राम या फ़ंक्शन लिखना है:

  • प्रत्येक परिमेय संख्या इनपुट के लिए आउटपुट के रूप में एक परिमेय संख्या देता है,
  • हमेशा दिए गए इनपुट के लिए समान आउटपुट देता है, और
  • दृढ़ता से डार्बौक्स संपत्ति है।

इनपुट और आउटपुट निम्नलिखित में से हो सकते हैं:

  • एक मनमाना-सटीक संख्या प्रकार, यदि आपकी भाषा में एक है (या एक के लिए एक पुस्तकालय है, उदाहरण के लिए जीएमपी)।
  • संख्या का एक स्ट्रिंग प्रतिनिधित्व, जिसे आप मान सकते हैं कि हमेशा एक दशमलव बिंदु और दोनों ओर कम से कम एक अंक होगा। यह किसी भी आधार में हो सकता है , लेकिन इनपुट और आउटपुट एक ही बेस में होना चाहिए। आप अंकों और दशमलव बिंदु के लिए वर्णों के किसी भी सेट का उपयोग कर सकते हैं (लेकिन फिर से, उन्हें इनपुट और आउटपुट के बीच सुसंगत होना चाहिए)।2

इनपुट में हमेशा समाप्ति बेस विस्तार होगा। आउटपुट के लिए, जिसमें आपकी पसंद के आधार पर सैद्धांतिक रूप से गैर-समाप्तिकारी बेस विस्तार हो सकता है, आप निम्नलिखित में से कोई भी चुन सकते हैं:

  • आउटपुट अंक हमेशा के लिए।
  • इनपुट और आउटपुट के रूप में एक अतिरिक्त पूर्णांक लें, जो कम से कम कई अंकों का हो।
  • आउटपुट में कम से कम उतने अंक होते हैं जितने इनपुट में होते हैं (जिसमें अनुगामी शून्य हो सकते हैं)।

ध्यान दें कि यह चुनौती की प्रकृति के द्वारा, परंपरा है कि संख्या ग्रहण किया जा सकता मानक संख्या प्रकार से प्रदर्शनीय होने के लिए है नहीं लागू होते हैं, ऊपर विकल्प 2 में बताए गए दूसरे इनपुट के लिए छोड़कर।

उन कार्यों के साथ खामियों से बचने के लिए जो केवल गैर-समाप्ति तर्कसंगत पर परिभाषित किए गए हैं, आपका सबमिशन अभ्यास में वांछित मूल्य के करीब आउटपुट का उत्पादन करने में सक्षम होना चाहिए । औपचारिक रूप से, दिए गए परिमेय संख्याएँ , , , और , एक परिमेय संख्या होनी चाहिए जो आपके चुने हुए आधार में समाप्त हो जैसे कि और ।yεएक्स<एक्स<|(एक्स)-y|<ε


आपको कुछ विचार देने के लिए, यहाँ कॉनवे बेस 13 फ़ंक्शन का विवरण दिया गया है :

  • को बेस 13 में बदलें और दशमलव बिंदु को हटा दें।एक्स
  • यदि परिणाम फॉर्म , जहां और 0 से 9 तक केवल अंकों से मिलकर बनता है, तो ।[एक्स][y]सी[z]13[y][z](एक्स)=[y][z]
  • यदि परिणाम फॉर्म [एक्स]बी[y]सी[z]13 , जहां और में 0 से 9 तक केवल अंक होते हैं, तो ।[y][z](एक्स)=-[y][z]
  • अन्यथा, ।(एक्स)=0

यह फ़ंक्शन दृढ़ता से डार्बौक्स है। उदाहरण के लिए, कहिए कि हम और बीच कुछ करना चाहते हैं, जैसे कि । आधार -13 मान इस आवश्यकता को पूरा करेगा।एक्स123.45613123.45713(एक्स)=7.89123.4567सी8913

आपका सबमिशन इस फ़ंक्शन का कार्यान्वयन हो सकता है, हालांकि मुझे संदेह है कि अन्य दृढ़ता से डार्बॉक्स फ़ंक्शन हैं जो लागू करने के लिए बहुत कम हैं। :)


क्या संख्या को समाप्त करने वाला आधार विस्तार माना जाता है ?
नाइट्रोडॉन

लिंक math.stackexchange और भी मूल प्रश्न यह कुछ उदाहरण के लिए की एक शिकार है
ग्यूसेप

यदि हम कॉनवे बेस 13 एल्गोरिथ्म को लागू करते हैं, तो हम बेस 13 में इनपुट ले सकते हैं लेकिन फिर बेस 13 में भी आउटपुट करना होगा। चूंकि फ़ंक्शन का आउटपुट आमतौर पर दशमलव में होता है, हम एक आवर्ती ट्राइडेसीमल संख्या के साथ समाप्त हो जाएंगे। यह आउटपुट कैसे होना चाहिए? क्या हम पहले अंक का उत्पादन करते हैं , जहां x प्रश्न में निर्दिष्ट है (अभी तक नहीं)? या क्या हमें यह इंगित करने की आवश्यकता है कि यह आवर्ती है? एक्सएक्स
निक केनेडी

@NickKennedy धन्यवाद, मैंने अनदेखा किया कि - मैंने प्रश्न को स्पष्ट करने के लिए संपादित किया है।
दरवाज़े

1
हम्म, मुझे पूरा यकीन है कि मैं एक दृढ़ता से डार्बौक्स फ़ंक्शन को परिभाषित कर सकता हूं जो निरंतर या सभी समाप्ति इनपुट पर पहचान है ...
क्रिश्चियन सेवर्स

जवाबों:


4

रेटिना 0.8.2 , 43 50 बाइट्स

^.*\.(..)*1(.)((..)+)1.((..)*)$
$2$*-$3.$5
0(.)
$1

इसे ऑनलाइन आज़माएं! I / O एक बाइनरी स्ट्रिंग के रूप में है। बाइनरी नंबर yको किसी अन्य बाइनरी नंबर के करीब एनकोड करें a:

  1. यदि aकोई सम्‍मिलित नहीं है ., तो प्रत्यय है।
  2. यदि aअंक के बाद विषम संख्या होती है ., तो प्रत्यय a 0
  3. यदि yनकारात्मक है तो प्रत्यय 11अन्यथा प्रत्यय है 10
  4. प्रत्येक अंक के लिए y, 0उस अंक के बाद प्रत्यय होता है।
  5. यदि उस बिंदु पर yएक .प्रत्यय है 11, तो सभी अंकों के बाद इसे प्रत्यय दें y

स्पष्टीकरण:

^.*\.(..)*1(.)((..)+)1.((..)*)$
$2$*-$3.$5

द्विआधारी बिंदु पर शुरू होने वाले अंकों को जोड़ी। यदि संख्या एक मान्य एन्कोडिंग है, तो अंतिम 1xअंक जोड़ी को एक .और दूसरे को वैकल्पिक -संकेत पर अंतिम रूप से डिकोड करें। इससे पहले के अंकों को नजरअंदाज किया जाता है।

0(.)
$1

यह सिर्फ उन जोड़ियों को छोड़ना चाहिए जो इसके साथ शुरू होते हैं 0, इसलिए एस को हटा दें 0


मुझे कभी-कभी आउटपुट मिलते हैं जैसे कि -.। क्या उन लोगों को जीरो होता है या वे उत्पादन करने वाले नहीं होते हैं?
आउटगॉल्फ

@EriktheOutgolfer मुझे लगता है कि मैं *एस को +एस में बदल सकता हूं , जो पहले और बाद में कम से कम एक अंक की गारंटी देगा .?
नील

वास्तव में मैं अंकों की गारंटी नहीं दे सकता .। मुझे लगता है कि मैं .हालांकि अभी भी एक अंक की गारंटी दे सकता हूं ।
नील

एक अतिरिक्त टर्मिनल 0 एक संख्या में .इसका मान नहीं बदलता है, लेकिन आपके फ़ंक्शन के इनपुट में ऐसा बदलाव आउटपुट को बदल देता है। हो सकता है कि आपको इनपुट 0 मानकर ऐसा करने की अनुमति हो। इसके अलावा, यदि आप सही से जोड़े बनाते हैं, तो यह "किसी भी वास्तविक इनपुट के लिए सैद्धांतिक रूप से कैसे काम करता है"?
क्रिश्चियन सेवर्स

@ChristianSievers (क्षमा करें, मैंने अपने इनबॉक्स को पहले नोटिस नहीं किया था) मैंने प्रश्न में आधार 13 फ़ंक्शन के विवरण के आधार पर अपना उत्तर दिया था, जिसे एक समाप्ति प्रतिनिधित्व की आवश्यकता भी प्रतीत होती है। इसके अलावा, आप सही हैं कि मैं मान रहा था कि कोई पीछे चलने वाला शून्य नहीं होगा। (इसलिए पूर्णांक को हमेशा 11चरण 2 में जोड़ा जाना होता है)
नील

1

जेली , 71 बाइट्स

L7*©ṛḅ7WµṪ×⁵d®µ⁴‘¤Ð¡ḊṖ
DF7,8ṣṪ¥ƒṣ9ḅ7×ɗÇƭ€j”,
DFf7r9¤ṫ-Ḍ⁼Ɱ“OY‘TịØ+³çƲ0Ẹ?

इसे ऑनलाइन आज़माएं!

एक पूरा कार्यक्रम जो इनपुट और आउटपुट के रूप में आधार -10 नंबर लेता है और कॉनवे बेस 13 फ़ंक्शन को लागू करता है लेकिन आधार 7 और 10 का उपयोग 10 और 13 के बजाय करता है। इनपुट और आउटपुट दोनों ही दशमलव विभाजक के रूप में अल्पविराम का उपयोग करते हैं। आउटपुट में एक अग्रणी होगा - नकारात्मक संख्याओं के लिए।


TIO लिंक के उदाहरण में इनपुट और आउटपुट में अंक 9 है, तो ये आधार 7 नंबर कैसे हैं?
क्रिश्चियन सिवर्स ने

@ChristianSievers खेद का मतलब इनपुट और आउटपुट के लिए बेस 10 है। बेस 7 का उपयोग कोड में किया जाता है, लेकिन इसे वापस बेस 10 में बदल दिया जाता है
निक कैनेडी

ठीक है, अब मैं इनपुट को बदल सकता हूं और समझ सकता हूं कि आउटपुट को कैसे प्रभावित करता है!
क्रिश्चियन सिवर्स

1

रेटिना ,28 25 26 28 बाइट्स

.*11|22
.
D^`\.
^3
-
4(.)
$1

इसे ऑनलाइन आज़माएं!

व्याख्या

.*11|22     Delete up to the last 11 and prepend a dot. Also change 22 to a dot.
.
D^`\.       Keep only the last dot, if there is one.
^3          Change 3 at the beginning to a minus sign.
-
4(.)        4 is the escape character.
$1

यह अग्रणी और अनुगामी शून्य का उत्पादन कर सकता है, और पूर्णांक भाग के बिना संख्या।

अगर मैं इस्तेमाल कर सकता हूं तो यह 2 या 3 बाइट्स से अधिक हो सकता है 4+। लेकिन मुझे यकीन नहीं है कि सैद्धांतिक परिणाम को कैसे परिभाषित किया जाए अगर इनपुट में 4एस की अंतहीन धारा है ।


1
मैं इस उत्तर को पोस्ट करके एक टी-आकार की चीज़ से शापित हो गया।
jimmy23013
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.