संख्या को Nth शक्तियों के अंतर के रूप में लिखें


24

चुनौती

कई संख्याएं हैं जिन्हें दो वर्गों के अंतर के रूप में, या दो क्यूब्स के अंतर के रूप में, या शायद उच्च शक्तियों के रूप में भी व्यक्त किया जा सकता है। वर्गों के बारे में बात करते हुए, एक संख्या को लिखने के विभिन्न तरीके हैं, 75 का कहना है, 2 वर्गों के अंतर के रूप में। तुम लिख सकते हो:

75 = (10)^2 - (5)^2 
   = (14)^2 - (11)^2 
   = (38)^2 - (37)^2         

तो चलिए आपको चुनौती के बारे में बताते हैं। सबसे पहले, उपयोगकर्ता एक संख्या में प्रवेश करता है और फिर वह n के लिए एक मान दर्ज करता है। आपको उन सभी तरीकों को प्रदर्शित करने की आवश्यकता है जिनमें वह संख्या aⁿ - b display के रूप में लिखी जा सकती है।

इनपुट और आउटपुट

इनपुट संख्या और n का मान होगा। आपके आउटपुट में 'a' और 'b' की ऐसी सभी जोड़ियाँ होंगी, जो उपर्युक्त स्थिति से मिलती हैं। जोड़ी में पहली संख्या दूसरी से बड़ी होनी चाहिए। कृपया ध्यान दें कि ए, बी, एन और इनपुट नंबर सभी सकारात्मक पूर्णांक हैं, और एन> 1

उदाहरण

50, 2 -> (none)

32, 2 -> (9,7), (6, 2)

7, 3 -> (2,1)

665, 6 -> (3, 2)

81, 4 -> (none)

स्कोरिंग

यह , इसलिए सबसे छोटा कोड जीतता है!

जवाबों:


9

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

p*ƓIFẹ+d

यह एक विवादास्पद लिंक है जो संख्या को तर्क के रूप में लेता है और STDIN से n पढ़ता है ।

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

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

p*ƓIFẹ+d  Main link. Argument: k

p         Cartesian product; yield all pairs [b, a] with b and a in [1, ..., k].
  Ɠ       Get; read an integer n from STDIN.
 *        Power; map each [b, a] to [b**n, a**n].
   I      Increments; map each [b**n, a**n] to [a**n-b**n].
    F     Flatten the resulting list of singleton arrays.
     ẹ    Every; find all indices of k in the list we built.
      +   Add k to the indices to correct the offset.
       d  Divmod; map each index j to [j/k, j%k].

6

हास्केल , 42 बाइट्स

k#n=[(a,b)|b<-[1..k],a<-[b..k],a^n-b^n==k]

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

UniHaskell के साथ Ungolfed और-XUnicodeSyntax

import UniHaskell

f      Int  Int  [(Int, Int)]
f k n = [(a, b) | b  1  k, a  b  k, a^n - b^n  k]

बहुत कुछ नहीं बदल सकता ...


दरअसल, ==UniHaskell में समान संकेत कुछ हद तक भ्रमित करने वाला है, क्योंकि यह गणित में बधाई को दर्शाता है।
user202729

4

05AB1E , 9 बाइट्स

बड़े इनपुट मूल्यों के लिए बहुत अक्षम है।

LãDImƹQÏ

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

व्याख्या

L           # range [1 ... input_1]
 ã          # cartesian product with itself
  D         # duplicate
   Im       # raise each to the power of input_2
     Æ      # reduce each pair by subtraction
      ¹QÏ   # keep only values in the first copy which are true in this copy

4

MATL , 11 बाइट्स

t:i^&-!=&fh

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

व्याख्या

t     % Implicit input: M. Duplicate
:     % Range [1 2 ... M]
i     % Input: n
^     % Power, element-wise. Gives [1^n 2^n ... M^n]
&-    % Matrix of pairwise differences (size n×n)
!     % Transpose. Needed so the two numbers in each pair are sorted as required
=     % Is equal? Element-wise. Gives true for entries of the matrix equal to M
&f    % Row and column indices of true entries
h     % Concatenate horizontally. Implicit display



2

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

*Iċ³
ṗ2çÐf

एक पूर्ण कार्यक्रम ले रहा है i, और nजो [b,a]खाली आउटपुट के साथ जोड़े को प्रिंट करता है जब कोई नहीं होता है।

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

कैसे?

*Iċ³ - Link 1, isValid?: pair of +ve integers, [b,a]; +ve integer, n
*    - exponentiate             -> [b^n,a^n]
 I   - incremental differences  -> [a^n-b^n]
   ³ - program's third argument -> i
  ċ  - count occurrences        -> 1 if a^n-b^n == i, otherwise 0

ṗ2çÐf - Main link: +ve integer i, +ve integer n
ṗ2    - second Cartesian power = [[1,1],[1,2],...,[1,i],[2,1],...,[2,i],...,[i,i]]
   Ðf - filter keeping if:
  ç   -   call last link (1) as a dyad (left = one of the pairs, right = n)
      - implicit print of Jelly representation of the list

1
अच्छा ठीक है। आप इसे अपनी इच्छानुसार रख सकते हैं।
मनीष कुंडू

2

जावास्क्रिप्ट (ईएस 7), 64 बाइट्स

एक पुनरावर्ती फ़ंक्शन इनपुटिंग सिंटैक्स में इनपुट करता है (n)(p)। यदि कोई समाधान मौजूद नहीं है, तो पूर्णांकों के जोड़े की रिक्त स्थान-अलग सूची या एक रिक्त स्ट्रिंग लौटाता है। उपयोगकर्ता 202729 के पायथन उत्तर के समान एल्गोरिथ्म का उपयोग करता है ।

n=>p=>(g=x=>x--?((y=(x**p+n)**(1/p))%1?[]:[y,x]+' ')+g(x):[])(n)

या 60-बाइट्स 0-टर्मिनेटेड, एनकैप्सुलेटेड सरणियों के साथ:

n=>p=>(g=x=>x--&&((y=(x**p+n)**(1/p))%1?g(x):[y,x,g(x)]))(n)

यह f (32) (2) के[ 9, 7, [ 6, 2, 0 ] ] लिए आउटपुट देगा ।

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



2

पायथन 3 , 71 बाइट्स

कुछ बाइट्स बचाने के लिए धन्यवाद Mr.Xcoder!

lambda x,n:[(a,b)for b in range(1,x)for a in[(b**n+x)**(1/n)]if a%1==0]

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


पायथन 3 , 69 बाइट्स

lambda x,n:[(a,b)for b in range(1,x)for a in range(x)if a**n-b**n==x]

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

पूरी तरह से अमानवीय x का उपयोग करें। 2 जानवर बल दृष्टिकोण वास्तव में बाइट्स बचाता है।



3
दुर्भाग्य से, ब्रूट फोर्सिंग आमतौर पर सबसे छोटा तरीका है। : पी
बिलकुल अमानवीय

TIO पर 'b in रेंज (x)' काम करता है। जो कि 67 बाइट करता है।
एलिक्स ईसेनहार्ट

@ एलाइसेनहार्डट मुझे ऐसा नहीं लगता
user202729


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