रान्डेल मुनरो की पुस्तक "xkcd, खंड 0" पृष्ठ संख्याओं के लिए एक विषम संख्या प्रणाली का उपयोग करती है। पहले कुछ पेज नंबर हैं
1, 2, 10, 11, 12, 20, 100, 101, 102, 110, 111, 112, 120, 200, 1000, 1001, ...
इस त्रिगुट की तरह एक सा है, लेकिन लगता है कि वह से छोड़ देता है तो 20
सीधे करने के लिए 100
, से 120
करने के लिए 200
और से 200
करने के लिए 1000
। इस अनुक्रम को परिभाषित करने का एक तरीका यह है कि यह उन सभी टर्नरी नंबरों को समाहित करता है जिनमें सबसे अधिक एक होते हैं 2
और उसके 1
बाद नहीं 2
। आप इसे प्रवेश A169683 में OEIS पर पा सकते हैं । इस संख्या प्रणाली को तिरछा बाइनरी के रूप में जाना जाता है ।
आपका काम एक सकारात्मक पूर्णांक दी के प्रतिनिधित्व को मिल रहा है N
इस संख्या प्रणाली में।
आप STDIN (या निकटतम विकल्प), कमांड-लाइन तर्क या फ़ंक्शन तर्क के माध्यम से इनपुट ले रहे हैं और STDOUT (या निकटतम विकल्प), फ़ंक्शन रिटर्न मान या फ़ंक्शन (आउट) पैरामीटर के माध्यम से परिणाम लिख सकते हैं।
आउटपुट एक स्ट्रिंग, एक संख्या हो सकती है जिसमें तिरछा बाइनरी प्रतिनिधित्व के बराबर एक दशमलव प्रतिनिधित्व होता है, या अंकों की सूची (पूर्णांक या वर्ण / तार के रूप में)। आपको अग्रणी शून्य वापस नहीं करना चाहिए।
यह कोड गोल्फ है, इसलिए सबसे छोटा उत्तर (बाइट्स में) जीतता है।
मजेदार तथ्य: इस संख्या प्रणाली में वास्तव में कुछ योग्यता है। जब एक संख्या बढ़ाई जाती है, तो आप हमेशा अधिकतम दो आसन्न अंकों में बदलेंगे - आपको पूरे नंबर के माध्यम से परिवर्तन नहीं करना पड़ेगा। सही प्रतिनिधित्व के साथ जो ओ (1) में वेतन वृद्धि की अनुमति देता है।
परीक्षण के मामलों
1 => 1
2 => 2
3 => 10
6 => 20
7 => 100
50 => 11011
100 => 110020
200 => 1100110
1000 => 111110120
10000 => 1001110001012
100000 => 1100001101010020
1000000 => 1111010000100100100
1048576 => 10000000000000000001
1000000000000000000 => 11011110000010110110101100111010011101100100000000000001102
मैं कम से कम जवाब देने के लिए एक इनाम दूंगा जो अंतिम परीक्षण के मामले को हल कर सकता है (और समान परिमाण के किसी भी अन्य इनपुट, इसलिए हार्डकोडिंग के बारे में ऐसा मत सोचो) एक सेकंड से भी कम समय में।
लीडरबोर्ड
यहां एक नियमित लीडरबोर्ड और भाषा के अनुसार विजेताओं का अवलोकन करने के लिए एक स्टैक स्निपेट है।
यह सुनिश्चित करने के लिए कि आपका उत्तर दिख रहा है, कृपया अपना उत्तर शीर्षक मार्कडाउन टेम्पलेट का उपयोग करके शीर्षक के साथ शुरू करें:
# Language Name, N bytes
N
आपके सबमिशन का आकार कहां है। यदि आप अपने स्कोर में सुधार करते हैं, तो आप पुराने अंकों को हेडलाइन में रख सकते हैं, उनके माध्यम से स्ट्राइक करके। उदाहरण के लिए:
# Ruby, <s>104</s> <s>101</s> 96 bytes
<script>site = 'meta.codegolf'; postID = 5314; isAnswer = true; QUESTION_ID = 51517</script><script src='https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js'></script><script>jQuery(function(){var u='https://api.stackexchange.com/2.2/';if(isAnswer)u+='answers/'+postID+'?order=asc&sort=creation&site='+site+'&filter=!GeEyUcJFJeRCD';else u+='questions/'+postID+'?order=asc&sort=creation&site='+site+'&filter=!GeEyUcJFJO6t)';jQuery.get(u,function(b){function d(s){return jQuery('<textarea>').html(s).text()};function r(l){return new RegExp('<pre class="snippet-code-'+l+'\\b[^>]*><code>([\\s\\S]*?)</code></pre>')};b=b.items[0].body;var j=r('js').exec(b),c=r('css').exec(b),h=r('html').exec(b);if(c!==null)jQuery('head').append(jQuery('<style>').text(d(c[1])));if (h!==null)jQuery('body').append(d(h[1]));if(j!==null)jQuery('body').append(jQuery('<script>').text(d(j[1])))})})</script>
59->60
और 109->110
, अतिरिक्त के साथ-साथ अंतर को देखने पर 0.