Nth শক্তির পার্থক্য হিসাবে সংখ্যা লিখুন


24

চ্যালেঞ্জ

অনেকগুলি সংখ্যা রয়েছে যা দুটি স্কোয়ারের পার্থক্য হিসাবে, বা দুটি কিউবের পার্থক্য হিসাবে বা উচ্চতর শক্তির হিসাবে প্রকাশ করা যেতে পারে। বর্গক্ষেত্রের বিষয়ে কথা বলার জন্য, বিভিন্ন সংখ্যা লেখার বিভিন্ন উপায় রয়েছে, 2 স্কোয়ারের পার্থক্য হিসাবে 75 বলুন। তুমি লিখতে পারো:

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

সুতরাং চ্যালেঞ্জ সম্পর্কে কথা বলা যাক। প্রথমত, ব্যবহারকারীর একটি সংখ্যা প্রবেশ করে এবং তারপরে সে n এর জন্য একটি মান প্রবেশ করে। আপনাকে সেই সমস্ত সংখ্যা প্রদর্শন করতে হবে যেখানে এই সংখ্যাটি aⁿ - b You আকারে লেখা যেতে পারে ⁿ

ইনপুট এবং আউটপুট

ইনপুটটি n এর সংখ্যা এবং মান হবে। আপনার আউটপুটে 'এ' এবং 'বি' এর সমস্ত জোড়া থাকবে যাতে উপরের বর্ণিত শর্তটি পূরণ হয়। জোড়ায় প্রথম সংখ্যাটি অবশ্যই দ্বিতীয়টির চেয়ে বড় হতে হবে। দয়া করে মনে রাখবেন যে , ক, খ, এন এবং ইনপুট নম্বর সমস্ত ধনাত্মক পূর্ণসংখ্যা এবং এন> ১

উদাহরণ

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

এটি একটি মোনাডিক লিঙ্ক যা সংখ্যাটিকে আর্গুমেন্ট হিসাবে গ্রহণ করে এবং এসটিডিইএন থেকে এন পড়ে ।

এটি অনলাইন চেষ্টা করুন!

কিভাবে এটা কাজ করে

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 এবং এর সাথে নিরপেক্ষ-XUnicodeSyntax

import UniHaskell

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

অন্য অনেক কিছু পরিবর্তন করতে পারবেন না ...


প্রকৃতপক্ষে, ==ইউনিহ্যাসকেলে সমান চিহ্নটি কিছুটা বিভ্রান্তিকর, কারণ এটি গণিতে সম্মিলনকে বোঝায়।
ব্যবহারকারী 202729


4

এমএটিএল , 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

জাভাস্ক্রিপ্ট (ES7), 64 বাইট

একটি পুনরাবৃত্ত ফাংশন কারিটিং সিনট্যাক্স ইনপুট গ্রহণ করছে (n)(p)। সংখ্যার পূর্ণ সংখ্যার স্থান-বিভাজিত তালিকা, বা কোনও সমাধান না থাকলে একটি খালি স্ট্রিং ফিরিয়ে দেয়। ব্যবহারকারী 202729 এর পাইথন উত্তর হিসাবে একই অ্যালগরিদম ব্যবহার করে ।

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

বা 0-সমাপ্ত, এনক্যাপসুলেটেড অ্যারে সহ 60 বাইট :

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

এটি চ (32) (2) এর[ 9, 7, [ 6, 2, 0 ] ] জন্য আউটপুট দেয় ।

পরীক্ষার মামলা



2

পাইথন 3 , 71 বাইট

ধন্যবাদ মিস্টার এক্সকোডার কিছু বাইট সংরক্ষণ করার জন্য!

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]

এটি অনলাইন চেষ্টা করুন!

সম্পূর্ণমানুষের এক্স ^ 2 ব্রুট ফোর্স পদ্ধতির ব্যবহার করুন বাইটগুলি সংরক্ষণ করে।



3
দুর্ভাগ্যক্রমে, ব্রুট ফোর্সিং সাধারণত সংক্ষিপ্ত পদ্ধতির হয়। : পি
সম্পূর্ণরূপে

'বি ইন রেঞ্জ (এক্স)' টিআইওতে কাজ করে। এটি 67 বাইট করে।
অ্যালিক্স আইজেনহার্ট

@ অ্যালেক্সএজেনহার্ট আমার কাছে মনে হয় না
ব্যবহারকারী 202729


আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.