पागल लेकिन तर्कसंगत मामले


11

हमारे पास आधार 10, आधार 2, आधार 36, या यहां तक ​​कि आधार -10 जैसी कई चुनौतियां हैं , लेकिन अन्य सभी तर्कसंगत आधारों के बारे में क्या है?

कार्य

आधार 10 और एक तर्कसंगत आधार में पूर्णांक को देखते हुए, पूर्णांक को उस आधार में (एक सरणी, स्ट्रिंग, आदि के रूप में) लौटाएं।

प्रक्रिया

एक तर्कसंगत आधार की कल्पना करना मुश्किल है, तो आइए एक्सप्लोडिंग डॉट्स का उपयोग करके इसे कल्पना करें :

आधार 3 में 17 को व्यक्त करते हुए इस एनीमेशन पर विचार करें:

यहाँ छवि विवरण दर्ज करें

प्रत्येक बिंदु एक इकाई का प्रतिनिधित्व करता है, और बक्से अंकों का प्रतिनिधित्व करते हैं: सबसे सही बॉक्स एक का स्थान है, मध्य बॉक्स 3 ^ 1 स्थान है, और बाईं ओर का बॉक्स 3 ^ 2 स्थान है।

हम एक स्थान पर 17 डॉट्स से शुरू कर सकते हैं। हालांकि, यह बेस 3 है, इसलिए लोगों की जगह 3 से कम होनी चाहिए। इसलिए, हम 3 डॉट्स को "विस्फोट" करते हैं और बाईं ओर बॉक्स पर एक डॉट बनाते हैं। हम इसे तब तक दोहराते हैं जब तक हम एक स्थिर स्थिति के साथ समाप्त हो जाते हैं जिसमें कोई विस्फोटक डॉट्स नहीं हैं (यानी एक ही बॉक्स में 3 डॉट्स)।

इसलिए बेस 10 में 17 बेस 3 में 122 है।


एक आंशिक आधार कुछ बिंदुओं को एक से अधिक बिंदुओं पर विस्फोट करने के लिए अनुरूप है। बेस 3/2 2 बनाने के लिए 3 डॉट्स का विस्फोट होगा।

बेस 3/2 में 17 व्यक्त करना:

यहाँ छवि विवरण दर्ज करें

तो बेस 10 में 17, बेस 3/2 में 21012 है।


नकारात्मक आधार समान रूप से काम करते हैं, लेकिन हमें संकेतों का ट्रैक रखना चाहिए (तथाकथित विरोधी डॉट्स का उपयोग, -1 के बराबर; एक खुले सर्कल द्वारा दर्शाया गया)।

बेस -3 में 17 को व्यक्त करना:

यहाँ छवि विवरण दर्ज करें

ध्यान दें, सभी बक्से के चिन्ह को एक जैसा बनाने के लिए अतिरिक्त विस्फोट होते हैं (शून्य की अनदेखी)।

इस प्रकार, बेस 10 में 17 बेस -3 में 212 है।

उपरोक्त दो मामलों के संयोजन में, नकारात्मक तर्कसंगत आधार समान रूप से काम करते हैं।

नियम

  • कोई मानक खामियां नहीं हैं।
  • आउटपुट में प्रत्येक "अंक" का चिह्न समान (या शून्य) होना चाहिए।
  • सभी अंकों का निरपेक्ष मान आधार के अंश के निरपेक्ष मान से कम होना चाहिए।
  • आप मान सकते हैं कि आधार का निरपेक्ष मूल्य 1 से अधिक है।
  • आप मान सकते हैं कि एक तर्कसंगत आधार अपने सबसे कम रूप में है।
  • आप अंश और हर के आधार को अलग से इनपुट में ले सकते हैं।
  • यदि किसी संख्या में कई अभ्यावेदन हैं, तो आप उनमें से किसी एक को आउटपुट कर सकते हैं। (आधार 10 में 12 {-2, -8}और {1, 9, 2}आधार -10 में हो सकते हैं )

परीक्षण के मामलों:

प्रारूप: {in, base} -> result

{7, 4/3}        ->  {3, 3}
{-42, -2}       ->  {1, 0, 1, 0, 1, 0}
{-112, -7/3}    ->  {-6, -5, 0, -1, 0}
{1234, 9/2}     ->  {2, 3, 6, 4, 1}
{60043, -37/3}  ->  {-33, -14, -22, -8}

चूंकि कुछ इनपुटों में कई प्रतिनिधित्व हो सकते हैं, इसलिए मैं टीआईओ पर इस गणितज्ञ स्निपेट का उपयोग करके आउटपुट का परीक्षण करने की सलाह देता हूं

यह , इसलिए प्रत्येक भाषा में सबसे कम बाइट की गिनती के साथ प्रस्तुतियाँ जीतेंगी!


डॉट्स विस्फोट के बारे में अधिक जानकारी के लिए , वैश्विक गणित परियोजना की वेबसाइट पर जाएँ ! उनके पास एक शांत मैथी सामान है!


जवाबों:


6

पायथन 2 , 42 39 बाइट्स

n,a,b=input()
while n:print n%a;n=n/a*b

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

छोटे फॉर्म को खोजने के लिए @xnor को धन्यवाद।

अप्रचलित संस्करण (42 बाइट्स):

f=lambda n,a,b:n and[n%a]+f(n/a*b,a,b)or[]

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

पैरामीटर: इनपुट, अंश (संकेत के साथ) और हर।

एक सरणी देता है, पहले सबसे कम अंक।

यह सिर्फ इसलिए काम करता है क्योंकि पायथन में विभाजन और मोड्यूल हर के संकेत का अनुसरण करता है, इसलिए हमें स्पष्ट रूप से समान संकेतों की परवाह नहीं करनी है।

टेस्ट केस आउटपुट:

f(7, 4, 3)       == [3, 3]
f(-42, -2, 1)    == [0, -1, -1, -1, -1, -1, -1]
f(-112, -7, 3)   == [0, -1, 0, -5, -6]
f(1234, 9, 2)    == [1, 4, 6, 3, 2]
f(60043, -37, 3) == [-8, -22, -14, -33]

4
असामान्य रूप से, ऐसा लगता है कि प्रोग्राम छोटा है
xnor

@ एक्सनॉर थैंक्स, मैं हमेशा कुछ लिखने का वो तरीका भूल जाता हूं ...
बब्लर

4

ऐहुई (एस्प्रोटे) , 91 बाइट्स

벙수벙섞벙석
희빠챠쌳뻐삭빠빠싻싸삯라망밣밭따맣사나삮빠싸사땨

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

लेता है integer, numerator of baseऔर denominator of base

TIO दुभाषिया की सीमा के कारण, प्रत्येक इनपुट को एक नई पंक्ति के साथ समाप्त होना चाहिए।

@ बब्बल के पायथन 2 उत्तर का कार्यान्वयन । सौभाग्य से, यह अहोई दुभाषिया अजगर में लिखा गया है, इसलिए हम उसी चाल का उपयोग कर सकते हैं।


4
o_O पृथ्वी पर क्या है यह भाषा ... D:
HyperNeutrino

3

05AB1E , 11 10 बाइट्स

[D_#²‰`,³*

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

लेता है integer, numerator of baseऔर denominator of baseसभी उत्तरों को पसंद करता है। चूंकि 05AB1E दुभाषिया Python (?) में लिखा गया है, Bubbler का Python 2 उत्तर चाल का उपयोग 05AB1E में भी किया जा सकता है।

व्याख्या

[D_ # ² ‰ `, ³ *
[ अपरिमित गांठ
 D_ # यदि संख्या 0 है, तो लूप से बाहर निकलें (अंतर्निहित इनपुट)
                                         पहली यात्रा में)
     Erator आधार का अंश प्राप्त करें
      Od दिवमोद
       `सभी तत्वों को ढेर में दबाएं
        , शेष को प्रिंट करें
         ³ आधार का भाजक प्राप्त करें
          * इसे गुणा करें।

इसलिए यह कार्यक्रम लगभग इस पायथन कोड के समान ही काम करता है:

i1, i2, i3 = इनपुट ()
स्टैक = []
जबकि 1:
 स्टैक = (स्टैक या [i1])
 स्टैक + = [स्टैक [-1]]
 अगर स्टैक नहीं [-1]: ब्रेक
 स्टैक + = [i2]
 स्टैक = स्टैक [: - 2] + [डिमोड (स्टैक [-2], स्टैक [-1])]
 स्टैक = स्टैक [: - 1] + सूची (स्टैक [-1])
 प्रिंट स्टैक [-1]
 स्टैक = स्टैक [: - 1]
 स्टैक + = [i3]
 स्टैक = स्टैक [: - 2] + [स्टैक [-2] * स्टैक [-1]]

11> 10 धन्यवाद नील


मुझे लगता है कि आप यहाँ के _बजाय उपयोग कर सकते 0Qहैं।
नील

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