X + Y = Z - लेकिन किस आधार में?


20

चुनौती

3 संख्याओं को देखते हुए X, Yऔर Zआधार में B, एक Bएसे मिला जिसमें Xऔर Yपैदावार का जोड़ है Z। आदानों x = 20, Y = 12और Z = 32उत्पन्न हो सकते हैं 5क्योंकि 20 + 12 = 32आधार 5 में।

  • आप मान सकते हैं कि हमेशा एक आधार होगा जिसमें जोड़ सही है (ऐसे मामले हैं जहां कोई आधार मौजूद नहीं है, @ MasonWheeler और @ Not that चार्ल्स के उदाहरण के लिए धन्यवाद )।
  • सबसे कम संभव आधार 1 है। आप 1s या 0s का उपयोग अंक के रूप में कर सकते हैं, लेकिन आप उन का मिश्रण नहीं कर सकते हैं।

आई / ओ

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

नियम

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

इनपुट प्रारूप यहां प्रत्येक संख्या का प्रतिनिधित्व करने के लिए पूर्णांकों की एक सूची है। तीन सूचियों को अल्पविराम द्वारा अलग किया जाता है।
ध्यान दें कि कभी-कभी कई आधार संभव हैं। यहां केवल एक (रैंडम) समाधान का उत्पादन किया जाता है।

[१२, १०३], [४, १०१], [१६, २०४] -> ३४ ९
[४, २१, २५], [५, १, २०], [९, २३, १ 21] -> २ 25
[१६, ११], [२५, ९ ४], [४१, १०५] -> १४ 11
[२, १४०], [२१, १ ]३], [२४, १००] -> २२३
[,, १५ [], [१, २,], [९, १ >५] -> २२,
[२, १५,], [,]], [३, १२] -> २३४
[,, १ ९९], [१, ३४], [९, २३३] -> ४०,
[३, २४,], [], ४३,], [११, २२१] -> ४६४
[३, १२२], [३, २], [६, १२४] -> ४ 122०
[६, ३२ [], [३, ३१], [९, ३५ ९] -> ४६५
[2, 1, 0, 0, 0, 0], [1, 2, 0, 0, 1, 0, 1, 0], [1, 2, 2, 1, 1, 0, 1, 0] - > ३
[१६, १०५], [१६, १२०], [३३, >४] -> १४१
[१५, ६०], [९, ३०], [२४, ९ ०] -> २६ 60
[२, ०], [१, २], [३, २] -> ५
[१, ३, ३,,], [१, २, ३], [१, ४, ६, ०] - १०
[०], [१, १२,,], [१, १२,>] -> १६
[1, 0, 0, 0, 1, 0, 0, 1, 1, 1, 1, 0, 1,], [1, 0, 0, 1, 1, 1, 1, 0, 0, 0 , 1], [1, 0, 1, 1, 1, 0, 1, 1, 1, 1, 0, 0, 1, 0] -> 2
[१], [१], [११] -> १

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

हैप्पी कोडिंग!


जवाबों:


12

जेली, 16 11 7 बाइट्स

_/N,‘FṀ

यह दृष्टिकोण @ बीकर के ऑक्टेव उत्तर पर आधारित है ।

इनपुट प्रारूप Z, Y, X है , जिसमें छोटे-एंडियन अंक क्रम के साथ, अंक के लिए 0 का उपयोग किया जाता है ।

इसे ऑनलाइन आज़माएं! या सभी परीक्षण मामलों को चलाएं

यह काम किस प्रकार करता है

संभावित आधारों के वृद्धिशील परीक्षण के बजाय, यह बहुपद को हल करता है जो सरणी P: = X + Y - Z से मेल खाता है । यह P which 0 का सबसे बड़ा गुणांक देता है - जिसका मूल होना चाहिए, क्योंकि कम से कम एक वैध आधार है - या X , Y और Z का उच्चतम अंक , 1 से बढ़ा हुआ ।

_/N,‘FṀ  Main link. Argument: [Z, Y, X]

_/       Reduce by subtraction; yield Z - X - Y.
         This works since Z must have at least as many digits as X and Y.
  N      Negate to yield X + Y - Z.
    ‘    Yield [Z, Y, X], with all digits increments by 1.
   ,     Pair the results to the left and to the right.
     F   Flatten the resulting, nested list.
      Ṁ  Compute the maximum.

11

पायथ, 13 बाइट्स

f!-FiRTQheSsQ

X और Y के बाद Z की अपेक्षा करता है।

परीक्षण सूट

अनिवार्य रूप से, हम हर संभव आधार का परीक्षण करते हैं, जो सबसे बड़े अंक से अधिक पर शुरू होता है। परीक्षण यह है कि हम प्रत्येक संख्या को प्रश्न में आधार में परिवर्तित करते हैं, फिर संख्याओं पर घटाव को गुना करते हैं, और परिणाम को तार्किक रूप से नकारते हैं।


5
तो यह एक शून्य के रूप में अनाकर्षक लेता है?
निधि मोनिका का मुकदमा

3
@QPaysTaxes मैं अनुमान लगा रहा हूं कि आप एकमत थे, और हाँ।
मेगो

4
@ मेगो का मतलब मैं एकात्मक था, स्वतः पूर्ण का मतलब था जो भी इसका मतलब चाहता था।
निधि मोनिका का मुकदमा

10

ऑक्टेव, 67 75 38 32 बाइट्स

क्योंकि "सभी चीजों पर लूप" बहुत अधिक काम है।

@(x,y,z)max([m=max(x+y-z) z])+~m

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

[2, 158],[88],[3, 12]
becomes
[2, 158],[0, 88],[3, 12]

चूंकि 0पैडिंग के लिए उपयोग किया जाता है, इसलिए 1इसे यूरीरी के लिए टोकन के रूप में उपयोग किया जाता है।

( प्रश्न में स्पष्टीकरण के लिए @DenkerAffe का धन्यवाद ।)

नमूना विचारधारा पर चलता है


संक्षिप्त विवरण:

ऐसा मामला उठाएं जिसमें कोई कैर्री न हो:

   [ 8, 199]
 + [ 1,  34]
 -------------
     9, 233
 - [ 9, 233]
 -------------
     0,   0 --- no carries

इस मामले में आधार पर कोई प्रतिबंध नहीं है क्योंकि यह किसी भी "अंक" से अधिक है। बस z(के रूप में z >= x,y) का अधिकतम तत्व लें और 1 (या कोई भी सकारात्मक पूर्णांक) जोड़ें।

एक कैरी-आउट के मामले (कोई कैरी-इन के साथ) में, हम स्तंभों में से एक और के बीच अंतर में आधार पार कर लिया है x+yऔर zआधार है:

   [ 2, 140]
 + [21, 183]
--------------
    23, 323
 - [24, 100]
 -------------
    -1  223
     ^   ^------ base
     |---------- carry in

यदि दूसरे कॉलम का योग आधार से अधिक है, तो कैरी-आउट के साथ-साथ कैरी-इन की भी आवश्यकता है, तो इसका मूल्य होगा base+(-1)। हमारे पास कैरी-आउट के साथ दाईं ओर एक कॉलम होगा और किसी भी कैरी-इन में सही (अधिक) आधार मूल्य नहीं है।


9

हास्केल, 90 73 बाइट्स

f l=[b|b<-[1..],all(<b)$id=<<l,[x,y,z]<-[foldl((+).(b*))0<$>l],x+y==z]!!0

प्रयोग उदाहरण: f [[3, 247],[7, 438],[11, 221]]-> 464

बस सभी आधारों का प्रयास करें b(जहां bअंकों की अधिकतम सीमा से अधिक हो)। पहले वाली को चुनो जहाँ x+y==z

संपादित करें: @xnor ने मुख्य रूप से छुटकारा पाकर कई बाइट्स बचाए import Data.Digits


1
अगर unDigits bमुझे लगता है कि इसे लागू करना चाहिए, तो इसे foldl(\x y->b*x+y)0या समकक्ष रूप से लागू किया जाना चाहिए foldl((+).(b*))0
xnor

1
यह maximumचपटे होने के बाद लेने के लिए कम है b<-[1+(maximum$id=<<l)..]:।
xnor

1
या, के maximumरूप में के लिए परीक्षण b<-[1..],all(<b)$id=<<l
xnor

क्या यह इनपुट के लिए काम करता है जहां आधार 1 एकमात्र समाधान है? मैं इसे ऑनलाइन संकलक के साथ निष्पादित नहीं कर पाया, इसलिए मैं खुद का परीक्षण नहीं कर सकता।
डेनकर

@DenkerAffe: क्या dआधार bसंख्या का अंक नहीं होना चाहिए 0 <= d < b, इसलिए आधार के 1लिए एकमात्र संभव अंक है 0? f [[0],[0],[0,0]]का मूल्यांकन करता है 1
नीमी

8

MATL , 20 बाइट्स

`GY:@XJZQ2:"wJZQ-]]J

इनपुट प्रारूप में है (बाहरी कर्ली ब्रेस नोट करें):

{[4, 21, 25],[5, 1, 20],[9, 23, 17]}

यह वर्तमान संस्करण (15.0.0) में काम करता है ।

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

व्याख्या

`        % do...while index
  G      %   push input. First time pushed nothing but asks for input implicitly
  Y:     %   unpack the cell array, pushing the three numeric arrays
  @      %   loop index: candidate base
  XJ     %   copy into clipboard J
  ZQ     %   evaluate polynomial: interpret third array in that base
  2:"    %   for loop: do this twice (subtract the other numbers from the third)
    w    %     swap, to process another array
    J    %     push base
    ZQ   %     evaluate polynomial: interpret array in that base
    -    %     subtract
  ]      %   end for loop. A result 0 indicates a solution has been found
]        % end do....while loop. Exit if top of stack is 0
J        % push found base. Implicitly display

8

MATL, 13 12 बाइट्स

--X>t~1G+hX>

MATL में मेरे ऑक्टेव उत्तर का अनुवाद । (मेरा पहला MATL जवाब!)

  • इनपुट ऑर्डर है Z, X, Y(या Z, Y, Xयदि आप चाहें, तो मैं आसान हूं)
  • इनपुट एरेज़ शून्य-पैडेड हैं जो समान लंबाई के हैं
  • 1 के रूप में अनाकर्षक लेता है

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

व्याख्या

--X>t~1G+hX>

--            % M = Z - X - Y
  X>          % P = max(M)
    t~        % Duplicate and negate
      1G      % Push 1st argument (Z) 
        +     % ~P + Z
         h    % Concatenate [P (~P + Z)]
          X>  % Return max

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