আদিম পাইথাগোরিয়ান ট্রিপস


29

( সম্পর্কিত )

একজন পিথাগোরাস ট্রিপল একটি তালিকা রয়েছে (a, b, c)সন্তুষ্ট সমীকরণ যে একটি 2 + খ 2 = C 2

একটি আদিম পাইথাগোরিয়ান ট্রিপল (পিপিটি) হ'ল যেখানে a, bএবং cসমস্ত কপিরাইম (অর্থাত্, তিনটি উপাদানের মধ্যে একমাত্র সাধারণ বিভাজক 1)। উদাহরণস্বরূপ, (3, 4, 5)ডান ত্রিভুজটি একটি বিখ্যাত আদিম পাইথাগোরিয়ান ট্রিপল।

চ্যালেঞ্জ

  • ইনপুট দেওয়া হয়েছে n, nth পিপিটি আউটপুট করুন । অথবা,
  • ইনপুট দেওয়া হয়েছে n, প্রথম nপিপিটি আউটপুট করুন ।

এসব PPTs এর অর্ডার একটি ভাল-বরাত তালিকা গঠনের নির্ধারণ করতে যা একাধিক উপায় আছে nতম। আপনি যে কোনও আদেশ চান তা চয়ন করতে পারেন, যতক্ষণ আপনি প্রমাণ করতে পারবেন (অনানুষ্ঠানিকভাবে ভাল) আপনার অ্যালগরিদম প্রতিটি সম্ভাব্য অনন্য পিপিটি তৈরি করতে পারে। উদাহরণস্বরূপ, আপনার কোড উভয়ই আউটপুট করা উচিত নয় (3,4,5)এবং (4,3,5)যেহেতু সেগুলি একই ট্রিপলের নকল - এক বা অন্য, দয়া করে।

একইভাবে, আপনার কোডটি শূন্য- অথবা এক-সূচকযুক্ত কিনা তা ঠিক আছে, আপনি যতক্ষণ ব্যবহার করছেন তা বর্ণনা করছেন।

উদাহরণ

নিচে উদাহরণের জন্য, আমি এক-ইন্ডেক্স ব্যবহার করছি, outputting nক্ষুদ্রতম দ্বারা তম পিপিটি, এবং ক্রম c, ক্ষুদ্রতম তারপর aক্ষুদ্রতম, তারপর b

n | output
1 | (3, 4, 5)
2 | (5, 12, 13)
5 | (20, 21, 29)
12| (48, 55, 73)

বিধি

  • ইনপুট এবং আউটপুট যে কোনও সুবিধাজনক বিন্যাসে দেওয়া যেতে পারে ।
  • আপনার জমা দেওয়ার ক্ষেত্রে, দয়া করে আপনার এন্ট্রিগুলি কীভাবে অর্ডার করা হয়েছে তা এবং আপনার এন্ট্রিগুলি 0-ইনডেক্সড বা 1-ইনডেক্সড কিনা তা দয়া করে লিখুন।
  • আপনার নির্বাচিত আদেশটি সদৃশ তৈরি করতে পারে না।
  • হয় একটি সম্পূর্ণ প্রোগ্রাম বা একটি ফাংশন গ্রহণযোগ্য। যদি কোনও ফাংশন হয় তবে আপনি আউটপুটটি মুদ্রণের পরিবর্তে ফিরিয়ে দিতে পারেন।
  • যদি সম্ভব হয় তবে দয়া করে একটি অনলাইন পরীক্ষার পরিবেশের একটি লিঙ্ক অন্তর্ভুক্ত করুন যাতে অন্য লোকেরা আপনার কোডটি চেষ্টা করে দেখতে পারে!
  • স্ট্যান্ডার্ড লুফোলগুলি নিষিদ্ধ।
  • এটি তাই সাধারণ গল্ফিংয়ের সমস্ত নিয়ম প্রয়োগ হয় এবং সংক্ষিপ্ততম কোড (বাইটে) জয়ী হয়।



আমাদের সমর্থন করতে হবে সর্বোচ্চ ইনপুট কি? আমরা কী ধরে নিতে পারি যে এটি আমাদের পছন্দের ভাষার দক্ষতার সাথে খাপ খায়?
মিঃ এক্সকোডার

1
@ মিঃ এক্সকোডার হ্যাঁ; এটি একটি স্ট্যান্ডার্ড নিরাপদ অনুমান, যদি না আপনি সমস্যাটিকে তুচ্ছ করে তুলতে কোনও লুফোল (যেমন ভাষাটি কেবলমাত্র 1-বিট সংখ্যা সমর্থন করে) ব্যবহার করে না।
অ্যাডমবর্কবার্ক

2
আমি আমার প্রশ্নের উত্তর খুঁজে পেয়েছি: ক এবং খ অবশ্যই কপিরাইট
উইকি /

উত্তর:


12

জেলি , 27 25 বাইট

2 বাইট জনাথন অ্যালান ধন্যবাদ।

²IH;Pµ;ÆḊ
+2ḶḤ‘Œcg/ÐṂÇ€Ṣḣ

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

প্রথম n1-ইনডেক্সড ট্রিপল আউটপুট দেয় [b, a, c], বাড়িয়ে bএবং তার পরে সাজানো a

উইকিপিডিয়া থেকে অ্যালগরিদম ব্যবহার করে :

a = mn, b = (m² - n²) / 2, c = (m² + n²) / 2

এটি বিজোড় পূর্ণসংখ্যার সমস্ত অনন্য কপ্রিম জোড়ের জন্য সমস্ত আদিম ট্রিপল উত্পন্ন করে m > n > 0

ব্যাখ্যা

+2ḶḤ‘Œcg/ÐṂÇ€Ṣḣ    Main link. Argument: n
+2                   Add 2 to n, to get enough results.
  Ḷ                  Get integers [0, 1, ..., n+1].
   Ḥ                 Double to get [0, 2, ..., 2n+2].
    ‘                Increment to get [1, 3, ..., 2n+3].
     Œc              Get all ordered pairs [[1, 3], [1, 5], ..., [2n+1, 2n+3]].
       g/            GCD of each pair.
         ÐṂ          Grab the pairs with minimal GCD (which is 1).
           ǀ        Call the helper link on each pair to get the triples.
             Ṣ       Sort the triples first by a, then by b, then by c.
              ḣ      Get the last n.

²IH;Pµ;ÆḊ    Helper link. Argument: pair [m, n]
²              Square to get [m², n²].
 I             Increments: get [m²-n²].
  H            Halve: get [(m²-n²)/2], i.e. [b].
    P          Product: get mn, i.e. a.
   ;           Append to get [b, a].
     µ         Begin a new monadic chain with argument [b, a].
       ÆḊ      Get the length of the vector, i.e. c.
      ;        Append to get [b, a, c].

এটি একটি দুর্দান্ত ব্যাখ্যা। ধন্যবাদ!
অ্যাডমবর্কবার্ক

g/Ị$Ðf-> g/ÐṂদুটি বাইট সংরক্ষণ করতে (যেহেতু ন্যূনতম জিসিডি হয় 1 এবং সর্বদা কমপক্ষে একটি এন্ট্রি থাকবে)।
জোনাথন অ্যালান

আরেকটি বাইট এছাড়াও প্রতিস্থাপন দ্বারা (এটি কম দক্ষ উপার্জন যদিও) সংরক্ষণ করা হতে পারে +2ḶḤ‘Œcসঙ্গে ²Rm2Œc- স্ক্র্যাপ এটি একজন ইনপুট জন্য অভ্যস্ত কাজ 1:(
জনাথন অ্যালান

@ জোনাথান অ্যালান সর্বনিম্ন একটির জন্য ধন্যবাদ। আমি প্রচুর 2-বাইট রেঞ্জ চেষ্টা করেছি, তবে দুর্ভাগ্যক্রমে কোনওটিই যথেষ্ট বড় ছিল না। ( ²ḶḤ‘Œcপ্রথম আমি ভেবেছিলাম অন্যতম।)
PurkkaKoodari

8

এমএটিএল , 36 বাইট

`@:Ut&+wmR&fZd1Mhw/vXutnGE<]GY)t&2|h

ইনপুটটি 1-ভিত্তিক। আউটপুট অর্ডার গ্যারান্টি দেয় যে প্রতিটি ট্রিপল ঠিক একবার প্রদর্শিত হবে। আদেশটি নীচে ব্যাখ্যা করা হয়েছে। ব্যাখ্যাটির জন্য প্রোগ্রামটি কীভাবে কাজ করে সে সম্পর্কে কিছুটা ডেলিভিং প্রয়োজন।

কোডটি kশুরু করে একটি লুপে একটি পাল্টা বাড়িয়ে রাখে 1। প্রত্যেকের জন্য kএটা দিয়ে সবকিছুর যুগল সৃষ্টি a = 1,...,k, b = 1,...,k, a < b, এবং অকার্যকর ঐ যে একটি পিথাগোরাস সঙ্গে ট্রিপল দিতে c <= k। জোড়গুলি ক্রমবর্ধমানের ক্রমে প্রাপ্ত হয় b, তারপরে a

তারপরে প্রতিটি জুটি এর জিসিডি দিয়ে ভাগ করা হয়। ফলস্বরূপ (সম্ভবত নকল) জোড়া দুটি কলামের ম্যাট্রিক্স হিসাবে সজ্জিত। এই ম্যাট্রিক্সটি ছোট মানগুলির জন্য প্রাপ্ত জমে থাকা ফলাফল সমেত একটি অনুরূপ ম্যাট্রিক্সের সাথে উল্লম্বভাবে সংক্ষিপ্ত হয়ে থাকে k। ম্যাট্রিক্সের সারিগুলি স্টাইলে নকল করা হয়। এটি দুই ধরণের সদৃশ অপসারণ করে :

  1. বর্তমানের জন্য একাধিকবার পাওয়া যায় এমন জুড়ি k(যেমন এর জিসিডি দ্বারা বিভাজন করার 3,4সময়ও এর ফলাফল আসে 6,8);

  2. ছোটগুলির সাথে ইতিমধ্যে পাওয়া যায় এমন জুড়ি k

প্রকৃতপক্ষে, প্রতিটি পুনরাবৃত্তি kসমস্ত জোড়ার সন্ধান করে যা পূর্ববর্তী পুনরাবৃত্তির জন্য ইতিমধ্যে পাওয়া গিয়েছিল। তবে এটি তাদের অন্য একটি ক্রমে খুঁজে পেতে পারে । উদাহরণস্বরূপ, k=25ট্রিপলটি খুঁজে পাবেন 7,24,25এবং না 20,21,29(কারণ cএটি অতিক্রম করতে পারবেন না k)। পরবর্তীতে, পুনরাবৃত্তি k=29উভয়ই খুঁজে পেতে পারে তবে 20,21,29 আগের সাথে 7,24,25 (ক্রমটি bতখন বাড়ছে a)। এ কারণেই, সর্বশেষের জন্য পাওয়া সমস্ত জোড়া রাখার পরিবর্তে kআমরা সেগুলি পূর্ববর্তীগুলিতে সংযোজন করি এবং স্টেইলি নকল করি। এটি করা নিশ্চিত করে যে কোনও ইনপুটের জন্য আদেশ একই n

উপরের গ্যারান্টি দেয় যে প্রতিটি আদিম পাইথাগোরিয়ান ট্রিপল শেষ পর্যন্ত উপস্থিত হবে এবং এটি কেবল একবার উপস্থিত হবে। ইনপুটের জন্য n, kকমপক্ষে nবৈধ ট্রিপল পাওয়া গেলে লুপ ওভার শেষ হয় ; এবং তারপরে nতৃতীয় ট্রিপল আউটপুট।

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

অথবা প্রথম nট্রিপলগুলি দেখতে এই পরিবর্তিত কোডটি ব্যবহার করুন :

`@:Ut&+wmR&fZd1Mhw/vXutnGE<]G:Y)tU&2sX^h

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


1
সুন্দর ব্যাখ্যা।
অ্যাডমবর্কবার্ক

8

হাস্কেল , 98 বাইট

f 0=(3,4,5)
f n|let(a,b,c)=f$div(n-1)3;r=mod n 3;d=a*(-1)^2^r;e=b*(-1)^r;s=2*(d+e+c)=(s-d,s-e,s+c)

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

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

এটি আদিম পাইথাগোরিয়ান ট্রিপল গাছের নিচে পথ হিসাবে এন এর বাইজিক বেস -3 ডিজিটকে ব্যাখ্যা করে । এটি ও (লগ এন ) ক্রিয়াকলাপে অনুসন্ধান ছাড়াই চলে ।

আদিম পাইথাগোরিয়ান ট্রিপল গাছ


5

জেলি , 19 18 বাইট

*g/²_/
4*œc3UṢÇÐḟḣ

প্রোগ্রামটি 1-ভিত্তিক সূচী n নেবে এবং ডিক্সোগ্রাফিক ক্রমে প্রথম এন পিটিটিস [সি, বি, এ] মুদ্রণ করে ।

এটি একটি ও (n৪ এন ) সমাধান, সুতরাং টিআইও 4 এবং উচ্চতর ইনপুটগুলিকে শ্বাসরোধ করবে । আমি এটি দ্রুত তৈরিতে কাজ করব।

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

বিকল্প সংস্করণ, হে (এন 3 ), সম্ভবত বৈধ

জন্য এন - ত্রয়ী [গ এন , বি এন , একটি এন ] - উপরে সমাধান ধরে নেয় যে এন ≤ 4 এন , যা যাচাই করা সহজ। তবে, A020882 প্রমাণ করে যে সি n ~ 2πn , সুতরাং এমন একটি কে আছে যা সি এনএন সকল এন এর জন্য

যদি আমরা কে = 7 নিতে পারি তবে নীচের সমাধানটিও বৈধ (এবং অনেক বেশি দ্রুত)।

*g/²_/
×7œc3UṢÇÐḟḣ

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

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

4*œc3UṢÇÐḟḣ  Main link. Argument: n

4*           Compute 4**n, the n-th power of 4.
  œc3        Take all 3-combinations of the set {1, ..., 4**n}, each sorted in
             ascending order. The triples themselves are sorted lexicographically.
     U       Upend; reverse each triple [a, b, c], yielding [c, b, a].
      Ṣ      Sort the descending triples lexicographically. This ensures that their
             order is independent of n.
       ÇÐḟ   Keep only triples for which the helper link returns a falsy value.
          ḣ  Dyadic head; take the first n triples.


*g/²_/       Helper link. Argument: [c, b, a]

 g/          Reduce [c, b, a] by greatest common divisor, yielding g.
*            Elevate the integers to that power, computing [c**g, b**g, a**g].
   ²         Square, yielding [c**2g, b**2g, a**2g].
    _/       Reduce by subtraction, yielding c**2g - b**2g - a**2g.
             Fermat's Last Theorem assures that this difference will be non-zero
             whenever g > 1, so this yields 0 iff g = 1 and c² = a² = b².

4

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

আউটপুটস Nth পিপিটি। ফলাফলগুলি 1-ইনডেক্সেড এবং এর মান অনুসারে অর্ডার করা হয় ।

n=>(g=(a,b)=>b?g(b,a%b):a,F=a=>(x=a*a+b*b,c=x**.5|0)*c-x*g(a,g(b,c))||--n?F(a-b?a+1:!++b):[a,b,c])(b=1)

ডেমো


4

এমএটিএল , 63 বাইট

3lvi:"t"[HlHllO;aOlOHl]!@Y*2eh]]!XuGY)&*tt[lO;Oa]*ssD2)ED2Xy*ss

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

গল্ফ করার একটি পাঠ মারাত্মকভাবে ভুল হয়ে গেছে। আমি যাইহোক এটি পোস্ট করছি কারণ আমি ভাবছি যে আরও ভাল গল্ফ করার উপায় আছে কিনা।

আমি ইউক্লিডের সূত্রের সাথে এই উইকিপিডিয়া পৃষ্ঠায় ভিত্তি করে তৈরি করেছি, পরীক্ষামূলক-ত্রুটি পদ্ধতির পরিবর্তে সমস্ত ত্রিভুজ গঠনমূলকভাবে তৈরি করতে।

প্রথমত, বিজোড় কপিরাইম জোড়গুলি একটি টার্নারি ট্রি হিসাবে উত্পন্ন হয়। এটি বেশিরভাগ বাইট গণনার জন্য অ্যাকাউন্টিং, একটি বড় ম্যাট্রিক্স গুণ হিসাবে করা হয়। তারপরে, ইউক্লিডের সূত্রটি প্রয়োগ করা হয়, সম্ভবত খুব বাইট-নষ্ট পদ্ধতিতেও। কারও কাছে এই দুটি অংশের জন্য টিপস থাকলে আমি সেগুলি শুনতে পছন্দ করি love

নোট করুন, বাইটগুলি সংরক্ষণ করতে, এই প্রোগ্রামটি গাছের চেয়ে ইনপুট হিসাবে একই গভীরতা উত্পন্ন করে log3(n)। এছাড়াও, শিশুরা কেবল গাছের শেষ সারিটির চেয়ে প্রতিটি সারিতে তৈরি হয় এবং তারপরে আবার ফিল্টার করা হয় Xu। একটি দক্ষ গঠনমূলক পদ্ধতির জন্য অনেক।

3lv % Push root node of ternary tree
i:" % Generate a tree of depth of input (WAY too large, but golfy)
t"  % loop over all nodes (golfier than looping over last tree row)
[HlHllO;aOlOHl]! % Matrix to generate three children of current node
@Y* % Multiply with current node to get children
2e  % Reshape to get node pairs
h]] % Append to tree, exit loops
!Xu % Remove duplicates (more efficient to do it before last ] but golfier this way)
GY) % Select n-th odd coprime pair
&*tt % Multiply with it's own transpose to get [m²,m*n;m*n,n²]
[lO;Oa]*ssD % Sum of matrix multiplication = m²-n² to get a
2)ED % Second element doubled for b=2mn
2Xy*ss % Sum of matrix multiplication with identify matrix to get c=m²+n²


3

পাইথন, 67 50 48 46 বাইট

উইকিপিডিয়ায় পাওয়া সূত্রগুলি ব্যবহার করে,

a=m*n, b=(m^2-n^2)/2, c=(m^2+n^2)/2

যেখানে m>n>0এবং mএবং nকপিরাইট এবং বিজোড় হয়। কোডটি এখানে

lambda n:[3+2*n,~-(3+2*n)**2-1/2,-~(3+2*n)**2/2]

-17 বাইটস @ মার্টিন এেন্ডারকে ধন্যবাদ

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

nসমীকরণের ক্ষেত্রে সর্বদা ভেরিয়েবলের মান 1 হয়ে কাজ করে, যার অর্থ এই যে, mকেবল অন্য কোনও অদ্ভুত মান, এক্ষেত্রে , 3+2*nযেখানে nআদিম পাইথাগোরিয়ান ট্রিপলের সংখ্যা রয়েছে। এটি আমাদের সকল nমানের জন্য 1 এর মান ধরে নিতে দেয় ।


পিপিসিজিতে আপনাকে স্বাগতম! নামহীন ফাংশনগুলি ভাল, সুতরাং আপনাকে ল্যাম্বডা বরাদ্দ করার দরকার নেই a(এবং যদি আপনি এটি করেন তবে আপনি সেখানে দুটি স্থান থেকে মুক্তি পেতে পারেন)। আমি নিশ্চিত না কেন আপনি printসেখানে কেন , আপনি কেবল ল্যাম্বডা থেকেই মানগুলি ফিরিয়ে দিতে পারেন।
মার্টিন ইন্ডার

"আপনি প্রমাণ করতে পারবেন (অনানুষ্ঠানিকভাবে ভাল) আপনার অ্যালগরিদম প্রতিটি সম্ভাব্য অনন্য পিপিটি তৈরি করতে পারে"। তবে এই পদ্ধতিটি কেবল তাদেরই উত্পাদন করে যেখানে অনুভূতিটি একটি পায়ের চেয়ে 1 লম্বা। উদাহরণস্বরূপ এটি কখনই 8,15,17 উত্পন্ন করে না।
রোজি এফ

2

হুশ , 18 বাইট

↑üOf§=F⌋ȯ¬Ḟ-m□ΠR3N

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

-4 বাইট ডেনিসের অনুপ্রেরণায় জগারবকে ধন্যবাদ জানায়

সুপার ধীর পাশব বল পদ্ধতির, আপনি একটি সামলানো সংস্করণ, একটি সীমিত b≤200 চেষ্টা করতে পারেন চেয়ে 1. বৃহত্তর ইনপুট জন্য Tio কাজ করবে না এখানে

ব্যাখ্যা

↑üOf§=F⌋ȯ¬Ḟ-m□ΠR3N
              ΠR3N   Get all triples of natural numbers
   f                 Keep only those triples where
      F⌋                their GCD
    §=                  is equal to
        ȯ¬Ḟ-m□          the logical negation of c²-b²-a²
 üO                  Remove duplicates by their sorted version
↑                    Get the first <input> values of this sequence

মানচিত্র এবং ফিল্টার একত্রিত করে 20 বাইট এমনকি ধীর।
জাগারব

@ জগারব আপনাকে ধন্যবাদ! আমি গলফ একটি অতিরিক্ত বাইট :) পরিচালিত
লিও

ডেনিসের জেলি উত্তর থেকে বিয়োগ বিয়োগের সাথে 18 বাইট
Zgarb

@ জাগারব সুন্দর! যদিও আমার সন্দেহ হচ্ছে: একই সাথে দুটি ভিন্ন ট্রিপল কি থাকতে পারে c?
লিও

হুম, আসলে একই সাথে অনেকগুলি ট্রিপল রয়েছে cএই 18-বাইট সমাধান (যা ডেনিসের অন্য কৌশল ব্যবহার করে) নির্বিশেষে কাজ করে।
জাগারব

1

গণিত, 89 বাইট

সমাধান সি দ্বারা আদেশ অর্ডার ব্যবহার

SortBy[{a,b,c}/.Solve[a^2+b^2==c^2&&GCD[a,b]==1&&0<a<b<c<9#,{a,b,c},Integers],Last][[#]]&

গণিত, 124 বাইট tes

(s={};Table[If[IntegerQ[c=Sqrt[a^2+b^2]]&&GCD[a,b]==1,AppendTo[s,{a,b,c}]],{a,9#},{b,9#}];SortBy[Union[Sort/@s],Last][[#]])&

1

আর (+ সংখ্যা), 88 বাইট

n=scan();while(all(nrow(T)<n))T=numbers::pythagorean_triples(5,5+(F<-F+1));T[n,3:5]

সংখ্যাগুলি তৈরি করতে অন্তর্নির্মিত ব্যবহারের জন্য, আমরা যা চাই তা পেতে অবাক করা পরিমাণে বাইট লাগে। অন্তর্নির্মিত দুটি আর্গুমেন্ট নেয় c1এবং c2, এবং যে ট্রিপলটি আছে তা ফিরিয়ে দেয় c >= c1 & c <= c2। এটি nথ্রি-ট্রিপলে উঠতে কিছুটা বিরক্তিকর করে তোলে । c2আউটপুট কেবল পর্যাপ্ত সারি না হওয়া পর্যন্ত এটি একসাথে 1 বৃদ্ধি পাবে ।


1

পিএইচপি , 273 বাইট

function t($n){$x=[];for($c=3;;$c++)for($b=2;$b<$c;$b++)for($a=2;$a<$b;$a++)if(d($a,$b,$c)&&$a**2+$b**2==$c**2){$x[]=[$a,$b,$c];if(--$n==0)return $x;}}function d($a,$b,$c){for($i=2;$i<$a;$i++)if($a%$i==0&&$b%$i==0||$a%$i==0&&$c%$i==0||$b%$i==0&&$c%$i==0)return 0;return 1;}
  • t($n) ক্রম দিয়ে [ক, খ, সি] এর একটি অ্যারে প্রদান করে a < b < c
  • একটি শূন্য-ভিত্তিক সূচক প্রদান করে

এটি অনলাইন চেষ্টা করুন! (কোডটিও সেখানে পঠনযোগ্য)


1

সি, 158 বাইট

আমি বিশ্বাস করি এটি এখানে আমার প্রথম জমা, যাতে আপনি সম্ভবত আরও ভাল করতে পারেন।

#include<stdio.h>
void f(n){int i=0,j=3,k,l;while(1){for(k=1;k<j;k++){for(l=k;l<j;l++){if(j*j==k*k+l*l)i++;if(i==n){printf("%d %d %d",j,k,l);return;}}}j++;};}

এবং অবারিত সংস্করণ:

#include <stdio.h>

void f(n)
{
  int i=0, j=3, k, l;
  while (1) {
    for (k=1; k<j; k++) {
      for (l=k; l<j; l++) {
        if (j*j==k*k+l*l)
          i++;
        if (i==n) {
          printf("%d %d %d\n", j, k, l);
          return;
        }
      }
    }
    j++;
  };
}

void main()
{
  int i;

  scanf("%d", &i);

  f(i);
  printf("\n");
}

জন্য একটি 2 + খ 2 = C 2 , ক্রম বৃদ্ধি পাচ্ছে তারপর বৃদ্ধি একটি

কোন দুবার একই পিপিটি হতে পারে যেমন এলইএ রয়েছে একটি এই অ্যালগরিদম হবে।


পিপিসিজিতে আপনাকে স্বাগতম!
জেএডি

1

জেলি , 27 25 বাইট

⁽0(ḃs
Ɠḃd2Ḥ’×€Ç
3r5DṭÇæ×/

এটি @ অ্যান্ডারস কেসার্গের হাস্কেল উত্তর থেকে বৃক্ষের পদ্ধতির একটি বাস্তবায়ন একটি ভিন্ন শাখার অর্ডার সহ । প্রোগ্রামটি 0-ভিত্তিক সূচক ব্যবহার করে এবং এসটিডিআইএন থেকে ইনপুট নেয়।

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

পটভূমি

উইকিপিডিয়া পৃষ্ঠায় আদিম পাইথাগোরীয় ট্রিপল গাছের গাছে উল্লিখিত হিসাবে , প্রতিটি পিপিটি বার বার বাম-গুণ করে সারি ভেক্টর (3, 4, 5) দ্বারা প্রাপ্ত করা যেতে পারে নির্দিষ্ট বৈশিষ্ট্য সহ ম্যাট্রিক করা যায়।

প্রতিটি পুনরাবৃত্তিতে, পূর্ববর্তী ফলাফলটি , বি দ্বারা বিভক্ত হতে পারে , বা সি যেতে পারে, যা নীচের মত বেছে নেওয়া যেতে পারে।

ম্যাট্রিক্স

যখন , বি , এবং সি স্থির করা হয় তখন প্রতিটি পিপিটি একটি অনন্য ফ্যাশনে পাওয়া যায়।

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

3r5DṭÇæ×/  Main link. No arguments.

3          Set the argument and the return value to 3.
 r5        Create a range from 3 to 5, i.e., [3, 4, 5].
   D       Decimal; convert each integer to base 10, yielding [[3], [4], [5]].
     Ç     Call the second helper link with argument 3.
    ṭ      Tack; append [[3], [4], [5]] to the result.
      æ×/  Reduce by matrix multiplication.
Ɠḃd2Ḥ’×€Ç  Second helper link. Argument: 3

Ɠ          Read and evaluate one line of input, yielding an integer n.
 ḃ         Convert n to bijective base 3.
  d2       Divmod 2; map each digit d to [d/2, d%2].
    Ḥ      Unhalve; multiply the results by 2.
     ’     Decrement the doubled results.
           The previous four atoms apply the following mapping to the digits.
               1 -> [0, 1] -> [0, 2] -> [-1,  1]
               2 -> [1, 0] -> [2, 0] -> [ 1, -1]
               3 -> [1, 1] -> [2, 2] -> [ 1,  1]
        Ç  Call the helper link with argument 3, yielding the following 2D array.
               [[ 1,  2,  2],
                [ 2,  1,  2],
                [ 2,  2,  3]]
      ×€   Multiply each [-1,  1], [ 1, -1], and [ 1,  1] by that matrix, using
           vectorizing multiplication (not matrix multiplication), yielding one 
           of the following three 2D arrays.

               [[-1,  2,  2],    [[ 1, -2,  2],    [[ 1,  2,  2],
                [-2,  1,  2],     [ 2, -1,  2],     [ 2,  1,  2],
                [-2,  2,  3]]     [ 2, -2,  3]]     [ 2,  2,  3]]
⁽0(ḃs      First helper link. Argument: 3

⁽0(        Numeric literal; yield 13041.
   ḃ       Convert 13041 to bijective base 3, yielding [1, 2, 2, 2, 1, 2, 2, 2, 3].
    s      Split the result into chunks of length 3, yielding the aforementioned
           2D array.

1

এপিএল (এনএআরএস), 90 টি চর, 180 বাইট

{a⊃⍨⍵⊃⍋↑¨a←{⍵[⍋⍵]}¨a/⍨{1=∨/⍵}¨a←{(-/k),(×/2,⍵),+/k←⍵*2}¨a/⍨{>/⍵}¨a←,a∘.,a←⍳(⌊2⍟2+⍵)×9+⌊√⍵}

উপরের ফাংশনের যুক্তি যদি ⍵ হয় তবে উপরের ফাংশনটিতে সূচকের উপাদানটি ফিরে আসবে ray (1 ভিত্তিক) অ্যারের পিঠাগোরিয়ান ট্রিপল (ক, বি, সি) উপাদান রয়েছে যেখানে <= b <= c এবং সেই অ্যারে রয়েছে প্রথমে একটি, (পাশটি আরও সংক্ষিপ্ত) এর জন্য প্রথমে অর্ডার করা হয়, তারপরে খ (অন্য পক্ষটি হাইপোপেনস নয়)। কিছু ভুল হবে কারণ আমি খ এর জন্য যেখানে অর্ডার করি সেখানে দেখা যায় না ... পরীক্ষা:

  f←{a⊃⍨⍵⊃⍋↑¨a←{⍵[⍋⍵]}¨a/⍨{1=∨/⍵}¨a←{(-/k),(×/2,⍵),+/k←⍵*2}¨a/⍨{>/⍵}¨a←,a∘.,a←⍳(⌊2⍟2+⍵)×9+⌊√⍵}
  f¨1..10
3 4 5  5 12 13  7 24 25  8 15 17  9 40 41  11 60 61  12 35 37  13 84 85  15 112 113  16 63 65  

এটি http://oeis.org/A020884 এর সাথে সম্পর্কিত এবং http://oeis.org/A020884/b020884.txt এর

A020884: পাইথাগোরিয়ান ত্রিভুজগুলির ছোট পায়ে অর্ডার করা হয়েছে।

  ↑¨f¨1..23
3 5 7 8 9 11 12 13 15 16 17 19 20 20 21 23 24 25 27 28 28 29 31 
  f 999
716 128163 128165 
  f 1000
717 28556 28565 

এটি সঠিক কিনা তা আমি জানি না, এটি মনে হয় যে ফাংশনটি ত্রিভুজটির প্রথম দিকের 1000 পর্যন্ত সঠিক ফলাফল দেয় তবে আমি অবশিষ্টাংশের জন্য জানি না, এবং এটি সম্ভবত 1000 এর চেয়েও ট্রিপল হতে পারে <


0

জাভাস্ক্রিপ্ট, 101 বাইট

ইউক্লিডের সূত্র দ্বারা সব আদিম পিথাগোরাস triples পূর্ণসংখ্যার থেকে উত্পন্ন করা যেতে পারে mএবং nসঙ্গে m>n>0, m+nবিজোড় gcd(m,n)==1( উইকিপিডিয়া )

এই ফাংশনটি সমস্ত m,nজোড় বাড়ানো এম থেকে শুরু করে 2 থেকে শুরু করে m=2হ্রাস পাচ্ছে (যাতে এটি বিজোড়)nm-1m+n

c=>eval("g=(a,b)=>b?g(b,a%b):a;for(m=2,n=1;c-=g(m,n)<2;(n-=2)>0||(n=m++));[m*m-n*n,2*m*n,m*m+n*n]")

কম গল্ফড

c => {
  g = (a,b) => b ? g(b,a%b) : a;
  for( m = 2, n = 1; 
       g(m,n) < 2 ? --c : c; 
       (n -= 2) > 0 || (n = m++))
    /* empty for body */;
  return [m*m - n*n, 2*m*n, m*m + n*n]
}

পরীক্ষা

F=
c=>eval("g=(a,b)=>b?g(b,a%b):a;for(m=2,n=1;c-=g(m,n)<2;(n-=2)>0||(n=m++));[m*m-n*n,2*m*n,m*m+n*n]")

for(i=1;i<=50;i++) console.log(i+' '+F(i))

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