পেলের সমীকরণের মৌলিক সমাধান


28

কিছু ধনাত্মক পূর্ণসংখ্যা এন যা কোনও বর্গ নয়, সম্পর্কিত পেল সমীকরণের মৌলিক সমাধান (এক্স,Y)

এক্স2-এনY2=1

বিস্তারিত

  • মৌলিক হল এক জোড়া পূর্ণসংখ্যার সমীকরণটি সন্তুষ্ট করে যেখানে ন্যূনতম, এবং ধনাত্মক। (সর্বদা তুচ্ছ সমাধান থাকে যা গণনা করা হয় না))(এক্স,Y)এক্স,Yএক্স(এক্স,Y)=(1,0)
  • আপনি ধরে নিতে পারেন যে কোনও বর্গ নয়।এন

উদাহরণ

 n           x    y
 1           -    -
 2           3    2
 3           2    1
 4           -    -
 5           9    4
 6           5    2
 7           8    3
 8           3    1
 9           -    -
10          19    6
11          10    3
12           7    2
13         649    180
14          15    4
15           4    1
16           -    -
17          33    8
18          17    4
19         170    39
20           9    2
21          55    12
22         197    42
23          24    5
24           5    1
25           -    -
26          51    10
27          26    5
28         127    24
29        9801    1820
30          11    2
31        1520    273
32          17    3
33          23    4
34          35    6
35           6    1
36           -    -
37          73    12
38          37    6
39          25    4
40          19    3
41        2049    320
42          13    2
43        3482    531
44         199    30
45         161    24
46       24335    3588
47          48    7
48           7    1
49           -    -
50          99    14
51          50    7
52         649    90
53       66249    9100
54         485    66
55          89    12
56          15    2
57         151    20
58       19603    2574
59         530    69
60          31    4
61  1766319049    226153980
62          63    8
63           8    1
64           -    -
65         129    16
66          65    8
67       48842    5967
68          33    4
69        7775    936
70         251    30
71        3480    413
72          17    2
73     2281249    267000
74        3699    430
75          26    3
76       57799    6630
77         351    40
78          53    6
79          80    9
80           9    1
81           -    -
82         163    18
83          82    9
84          55    6
85      285769    30996
86       10405    1122
87          28    3
88         197    21
89      500001    53000
90          19    2
91        1574    165
92        1151    120
93       12151    1260
94     2143295    221064
95          39    4
96          49    5
97    62809633    6377352
98          99    10
99          10    1

প্রাসঙ্গিক OEIS ক্রম: A002350 A002349 A033313 A033317


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

@ ফ্যাটালাইজ করুন " আপনি ধরে নিতে পারেন যে কোনও বর্গ নয়এন " "তবে পরীক্ষার কেসগুলি যদি সেই সমস্ত imho বাদ দেয় তবে সম্ভবত আরও স্পষ্ট হবে।
কেভিন ক্রুইজসেন

2
@ কেভিন ক্রুইজসেন আমি এটি বিবেচনা করেছি, তবে আমি ভেবেছিলাম যে কয়েকটি সংস্থান বাদ দেওয়া আরও বিভ্রান্তিকর হবে n। (বিটিডব্লিউ আমিও চূড়ান্ত হয়েছি কিন্তু প্রায় এক বছর ধরে আমার এই চ্যালেঞ্জটি স্যান্ডবক্সে ছিল)
flawr

উত্তর:


16

Piet , 612 কোডেল

স্ট্যান্ডার্ড ইনপুট থেকে এন নেয় । আউটপুট y তারপর এক্স , স্পেস-বিভক্ত।

কোডেলের আকার 1: কোডেলের আকারের সাথে পেলের সমীকরণ প্রোগ্রাম

সহজে দেখার জন্য কোডেলের আকার 4: কোডেলের আকারের সাথে পেলের সমীকরণ প্রোগ্রাম

ব্যাখ্যা

এই এনপিট ট্রেসটি পরীক্ষা করে দেখুন , যা প্রোগ্রামটি 99 এর ইনপুট মানটির সমাধানের গণনা দেখায়।

আমি নিশ্চিত নই যে এই চ্যালেঞ্জের আগে আমি কখনও পেলের সমীকরণ শুনেছি কিনা, তাই আমি উইকিপিডিয়া থেকে নিম্নলিখিতটি পেয়েছি; বিশেষত, তিনটি নিবন্ধের এই বিভাগ:

মূলত, আমরা যা করি তা হ'ল:

  1. স্ট্যান্ডার্ড ইনপুট থেকে এন পান ।
  2. এই এনবৃদ্ধি করে যতক্ষণ না এটির বর্গএনছাড়িয়ে যায়, তারপরে একবার এটি হ্রাস করুন। (এটি প্রথম লুপটি আপনি ট্রেসে দেখতে পাবেন, উপরের বাম দিকে))
  3. Continued এর অবিরত ভগ্নাংশ থেকে এক্স এবং Y গণনা করার জন্য কিছু ভেরিয়েবল সেট আপ করুন এন
  4. এক্স এবং Y এখনও পেলের সমীকরণের সাথে খাপ খায় কিনা তা পরীক্ষা করুন । যদি তারা তা করে থাকে তবে মানগুলি আউটপুট করুন (এটি পারের প্রায় 2/3 পথের নীচের দিকের শাখা) এবং তারপরে প্রস্থান করুন (খুব বেশি বাম দিকে লাল ব্লকের মধ্যে দৌড়ে)।
  5. যদি তা না হয় তবে পুনরাবৃত্তভাবে ভেরিয়েবলগুলি আপডেট করুন এবং 4 ধাপে ফিরে যান (

ব্রুট-ফোর্স পদ্ধতির সংক্ষিপ্ততর হবে কিনা তা আমার স্পষ্টভাবে ধারণা নেই এবং আমি এটি ব্যবহার করার চেষ্টা করছি না! ঠিক আছে, তাই আমি চেষ্টা করেছিলাম।


9

পিট , 184 কোডেল

এটি হ'ল বর্বর শক্তি বিকল্পটি আমি বলেছিলাম ( আমার অন্য উত্তরে ) যা আমি লিখতে চাই না। এটি 2 ওভার মিনিট সময় লাগে সমাধান গনা এন = 13. আমি সত্যিই তে এটি চেষ্টা করতে চাই না এন = 29 ... কিন্তু তা প্রত্যেক আউট পরীক্ষা এন আপ থেকে 20, তাই আমি নিশ্চিত যে এটি সঠিক আছি।

অন্যান্য উত্তরের মতো, এটি স্ট্যান্ডার্ড ইনপুট থেকে n নেয় এবং y তারপর x , আউটপুট থেকে পৃথক।

কোডেলের আকার 1: কোডেলের আকার 1 সহ পেলের সমীকরণ প্রোগ্রাম (ব্রুট-ফোর্স ভেরিয়েন্ট)

সহজে দেখার জন্য কোডেলের আকার 4: কোডের আকার 4 সহ পেলের সমীকরণ প্রোগ্রাম (ব্রুট-ফোর্স ভেরিয়েন্ট)

ব্যাখ্যা

এখানে এনপিট ট্রেস দেওয়া আছে5 এর ইনপুট মানটির জন্য ।

এটি উভয় এক্স এবং Y মাধ্যমে পুনরাবৃত্তি করা নিষ্ঠুর বলের মধ্যে সবচেয়ে নিষ্ঠুর । অন্যান্য সমাধানগুলি এক্স উপরে পুনরাবৃত্তি হতে পারে এবং তারপরে y = calc গণনা করতে পারে Y=এক্স2-1এন , কিন্তু তারাকৃপণ

এক্স=2 এবং Y=1 থেকে শুরু করে , এটি এক্স এবং Y সমীকরণটি এখনও সমাধান করেছে কিনা তা পরীক্ষা করে । যদি এটি (ডানদিকে নীচে কাঁটাচামচ) থাকে তবে এটি মানগুলি বের করে এবং প্রস্থান করে।

যদি তা না হয় তবে এটি বামে অবিরত থাকবে, যেখানে Y এর বৃদ্ধি এবং এক্স সাথে তুলনা করা হবে । (তারপরে জিগ-জাগ পথ অনুসরণ করার জন্য কিছু দিকনির্দেশ-বার্ধক্য রয়েছে))

এই শেষ তুলনাটি যেখানে মাঝ বামদিকে পথটি বিভক্ত হয়। যদি তারা সমান হয়, এক্স বাড়ানো হয় এবং Y আবার 1 এ সেট করা হয় এবং আমরা এখনও এটির সমাধান কিনা তা পরীক্ষা করে ফিরে যাই।

আমার এখনও কিছু শ্বেতস্পেস উপলব্ধ আছে, তাই আমি প্রোগ্রামটি বাড়িয়ে না দিয়ে square বর্গমূলের গণনাটি সংযুক্ত করতে পারি কিনা তা আমি দেখতে পাব।


2
হা হা আমি একমত wimps ডি: যে বর্গমূল ব্যবহার
flawr

6

ব্র্যাচল্যাগ , 16 বাইট

;1↔;Ċz×ᵐ-1∧Ċ√ᵐℕᵐ

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

ব্যাখ্যা

;1↔                Take the list [1, Input]
   ;Ċz             Zip it with a couple of two unknown variables: [[1,I],[Input,J]]
      ×ᵐ           Map multiply: [I, Input×J]
        -1         I - Input×J must be equal to 1
          ∧        (and)
           Ċ√ᵐ     We are looking for the square roots of these two unknown variables
              ℕᵐ   And they must be natural numbers
                   (implicit attempt to find values that match those constraints)

5

পরী / জিপি , 34 বাইট

Pari / জিপি প্রায় একটি বিল্ট-ইন এই জন্য রয়েছে: quadunitদেয় মৌলিক ইউনিট এর দ্বিঘাত ফিল্ড প্রশ্নঃ(ডি), যেখানেডিহলdiscriminantমাঠের। অন্য কথায়,quadunit(4*n)পেলের সমীকরণএক্স2-এনY2=±1। সুতরাং আমাকে বর্গটি নিতে হবে যখন এর আদর্শ হয়-1

এটি কী অ্যালগরিদম ব্যবহার করে তা আমি জানি না, তবে এন না হলেও এটি কাজ করে ।

উত্তর আকারে দেওয়া হয় x + y*w, যেখানে w-এর মানে এন

n->(a=quadunit(4*n))*a^(norm(a)<0)

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


4

1
এটি কি সর্বদা মৌলিক সমাধান খুঁজে পায় তা নিশ্চিত ?
গ্রেগ মার্টিন

@ গ্রেগমার্টিন হ্যাঁ, এটি। এটি সর্বদা প্রথম (সর্বনিম্ন) সমাধান সন্ধান করে। এই ক্ষেত্রে এটি সর্বদা {1,0 returns প্রদান করে} এজন্য আমাদের x> 1 টি চয়ন করতে হবে এবং দ্বিতীয় (মৌলিক) সমাধানটি পেতে হবে
J42161217

1
আমি এটি সত্য হতে চাই, তবে ডকুমেন্টেশনের কোনও কিছুই ইঙ্গিত দিচ্ছে বলে মনে হচ্ছে না ....
গ্রেগ মার্টিন

@ গ্রেগমার্টিন আমি এই ফাংশনটি বহুবার ব্যবহার করেছি এবং এটি কীভাবে কাজ করেছে তা ইতিমধ্যে জেনেছি। আমার একমাত্র উদ্বেগ ছিল প্রথম সমাধানটি এড়িয়ে যাওয়া এবং তার জন্য আমার 5 টি অতিরিক্ত বাইট খরচ হয়েছিল। আপনি সহজেই একটি প্রোগ্রাম লিখতে পারেন এবং এটি পরীক্ষা করতে পারেন (কেবলমাত্র কয়েক মিলিয়ন ফলাফলের নিশ্চয়তা দেওয়ার জন্য)
J42161217

4

05 এ বি 1 , 17 16 14 বাইট

কেভিন ক্রুইজসেনকে একটি বাইট ধন্যবাদ সংরক্ষণ করা
আউটপুট[y, x]

∞.Δn*>t©1%_}®‚

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

ব্যাখ্যা

∞                 # from the infinite list of numbers [1 ...]
 .Δ        }      # find the first number that returns true under
   n              # square
    *             # multiply with input
     >            # increment
      t©          # sqrt (and save to register as potential x)
        1%        # modulus 1
          _       # logical negation
            ®‚    # pair result (y) with register (x)

এবং আপনি আমাকে এটির কাছে আবার মারলেন .. 17 বাইটারও ছিল, কিন্তু এটি কার্যকর হয়নি কারণ দশমিকাসমূহ দিয়ে বাগড হয়েছে>>> Ųযাইহোক, আপনি উভয়কে সরাতে পারেন ,এবং একটি ট্রেইলিং যোগ করতে পারেন (না, কমাটি হ'ল না একই; পি) একটি বাইট সংরক্ষণ করুন।
কেভিন ক্রুইজসেন

@ কেভিন ক্রুজসেন: ধন্যবাদ! হ্যাঁ আমিও Ųপ্রথমে লক্ষ্য করেছিলাম যে এটি প্রত্যাশার মতো কার্যকর হয়নি।
এমিগানা

4

জাভা 8, 74 73 72 বাইট

n->{int x=1;var y=.1;for(;y%1>0;)y=Math.sqrt(-x*~++x/n);return x+" "+y;}

-1 বাইট @ আর্নল্ডকে ধন্যবাদ ।
-1 বাইট @ অলিভিগ্রগ্রোয়ারকে ধন্যবাদ ।

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

ব্যাখ্যা:

n->{                 // Method with double parameter and string return-type
  int x=1;           //  Integer `x`, starting at 1
  var y=.1;          //  Double `y`, starting at 0.1
  for(;y%1>0;)       //  Loop as long as `y` contains decimal digits:
    y=               //   Set `y` to:
      Math.sqrt(     //    The square-root of:
        -x*          //     Negative `x`, multiplied by
           ~++x      //     `(-x-2)` (or `-(x+1)-1)` to be exact)
                     //     (because we increase `x` by 1 first with `++x`)
               /n);  //     Divided by the input
  return x+" "+y;}   //  After the loop, return `x` and `y` with space-delimiter as result

1
72 বাইট , পরিবর্তন করে nএকটি থেকে double, এবং xএকটি থেকে intযে, আসলে বাজানো x*x-1সমান (-x-1)*(-x+1)
অলিভিয়ার গ্রাগোয়ার

ভাল, আমি আসলে (x+1)*(x+1)-1সমান যে সত্যটি খেলছি -x*-(x+2), সম্পূর্ণ সঠিক হতে।
অলিভিয়ার গ্রাগোয়ার

3

আর, 66 56 54 53 52 47 45 বাইট

একটি সম্পূর্ণ প্রোগ্রাম

n=scan();while((x=(1+n*T^2)^.5)%%1)T=T+1;x;+T

-1 -2 @ জিউজ্পে ধন্যবাদ

-7 জিউসেপ্পে এবং @ রবিন রাইডার -2 @ জাদিকে ধন্যবাদ


1
.5পরিবর্তে ব্যবহার করুন0.5
জিউস্পে

5
46 বাইট । এর ক্ষুদ্রতম মান xসন্ধান করা এর ক্ষুদ্রতম মান সন্ধানের সমান y। এটি আপনাকে 2 বাইট সংরক্ষণ করতে দেয় কারণ xশর্তে প্রকাশ করা yঅন্য দিকের চেয়ে কম এবং 4 টি বাইট ব্যবহারের কৌশলটি ব্যবহার করে Tযা প্রথম দিকে শুরু করা হয়েছে
রবিন রাইডার

1
@ রবিনরাইডার আপনার +Tশেষে প্রয়োজন হতে পারে যখন y==1এটি 1পরিবর্তে ফিরে আসে TRUEতবে আমি পুরোপুরি নিশ্চিত নই।
জিউসেপ

3
@ জিউসেপ ওয়েল স্পট! তুমি ঠিক. এটি 47 বাইট করে
রবিন রাইডার

1
বড় সংখ্যক সমস্যার কারণে এন = 61 (মূর্খ বৃহত পরীক্ষার কেস) এ ব্যর্থ বলে মনে হচ্ছে। আমি মনে করি এটি কেবলমাত্র ব্যতিক্রমটিকে লক্ষ্য করে ভাষার সীমাবদ্ধতার জন্য অনুমতি দেওয়া ভাল।
ক্রিমিনালিভালগার

3

জেলি , 40 বাইট

½©%1İ$<®‘¤$п¹;Ḋ$LḂ$?Ḟṭ@ṫ-ṚZæ.ʋ¥ƒØ.,U¤-ị

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

একটি বিকল্প জেলি উত্তর, x এবং y বড় হলে কম গল্ফযুক্ত তবে আরও দক্ষ আলগোরিদিমত m এটি নিয়মিত অবিরত ভগ্নাংশের রূপান্তরগুলি খুঁজে পায় যা এন এর বর্গমূলের আনুমানিক হয় এবং তারপরে যা পেলের সমীকরণকে সমাধান করে তা পরীক্ষা করে। এখন সঠিকভাবে নিয়মিত অবিরত ভগ্নাংশের সময়সীমাটি সন্ধান করুন।

@ টিমপিডেরিকে ধন্যবাদ, আমি একটি পূর্ণসংখ্যার ভিত্তিক সমাধানও প্রয়োগ করেছি যা কোনও সংখ্যা হ্যান্ডেল করতে পারে:

জেলি , 68 বাইট

U×_ƭ/;²®_$÷2ị$}ʋ¥µ;+®Æ½W¤:/$$
¹©Æ½Ø.;ÇƬṪ€F¹;Ḋ$LḂ$?ṭ@ṫ-ṚZæ.ʋ¥ƒØ.,U¤-ị

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

উদাহরণস্বরূপ, 1234567890 এর সমাধানটির সংখ্যার এবং ডিনোমিনেটরের জন্য যথাক্রমে 1936 এবং 1932 সংখ্যা রয়েছে।


নিস! আমি আমার উত্তরে একই পন্থা নিয়েছি। আমি জেলি পড়ি না, সুতরাং আমি নিশ্চিত নই যে কেন আপনি 61 ​​এর সাথে সমস্যা করছেন?
টিম পেডেরিক

@ টিমপিডেরিক হ্যাঁ সমস্যাটি কোথায় দাঁড়িয়েছে তা নিশ্চিত নয়
নিক কেনেডি

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

@ টিমপেডারিক এটি ভাসমান পয়েন্টের ভুল ছিল। আমি এখন পিরিয়ডে পৌঁছে যাওয়ার পরে অবিরত ভগ্নাংশটির আরও ধারাবাহিকতার সন্ধান বন্ধ করে দিয়েছি। এটি 150 পর্যন্ত কাজ করে, তবে তারপরে আমি আবারও মনে করি আমি ভাসমান পয়েন্ট যথার্থতা ত্রুটিগুলিতে চলেছি উদাহরণস্বরূপ 151
নিক কেনেডি

@ টিমপিডেরিক এটি অবিরত ভগ্নাংশের প্রজন্ম যা সমস্যাযুক্ত, সংখ্যার গাণিতিক দিয়ে সম্পন্ন রূপান্তরকারী নয়।
নিক কেনেডি

2

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

n=>(g=x=>(y=((x*x-1)/n)**.5)%1?g(x+1):[x,y])(2)

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

এক্স² এর-1এক্স

n=>[(g=x=>(y=(x/n)**.5)%1?1+g(x+=k+=2):2)(k=3),y]

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

অথবা আমরা 50 বাইটের জন্য পুনরাবৃত্তিযোগ্য পথে যেতে পারি :

n=>eval('for(x=1;(y=((++x*x-1)/n)**.5)%1;);[x,y]')

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


2

টিআই-বেসিক,  44  42 41 বাইট

Ans→N:"√(N⁻¹(X²-1→Y₁:1→X:Repeat not(fPart(Ans:X+1→X:Y₁:End:{X,Ans

এন
(এক্স,Y)

Y=এক্স2-1এনমৌলিক সমাধান গণনা করতেএক্স2জন্য n
বর্তমান(এক্স,Y)Yগেলিক ভাষার1=0

উদাহরণ:

6
               6
prgmCDGF12
           {5 2}
10
              10
prgmCDGF12
          {19 6}
13
              13
prgmCDGF12
       {649 180}

ব্যাখ্যা:

Ans→N:"√(N⁻¹(X²+1→Y₁:1→X:Repeat not(fPart(Ans:X+1→X:Y₁:End:{X,Ans  ;full logic

Ans→N                                                              ;store the input in "N"
      "√(N⁻¹(X²+1→Y₁                                               ;store the aforementioned
                                                                   ; equation into the first
                                                                   ; function variable
                     1→X                                           ;store 1 in "X"
                         Repeat not(fPart(Ans          End         ;loop until "Ans" is
                                                                   ; an integer
                                              X+1→X                ;increment "X" by 1
                                                    Y₁             ;evaluate the function
                                                                   ; stored in this variable
                                                                   ; at "X" and leave the
                                                                   ; result in "Ans"
                                                           {X,Ans  ;create a list whose
                                                                   ; values contain "X" and
                                                                   ; "Ans" and leave it in
                                                                   ; "Ans"
                                                                   ;implicitly print "Ans"

দ্রষ্টব্য: টিআই-বেসিক একটি টোকেনাইজড ভাষা। অক্ষর গণনা বাইট গণনা সমান হয় না


2

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

`@:Ut!G*-!1=&fts~

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

ব্যাখ্যা

কোডটি বাড়িয়ে রাখে কে = 1, 2, 3, ... প্রতিটি কে , সলিউশন x , y এর সাথে 1 ≤ x করেকে , 1 ≤ ওয়াইকে অনুসন্ধান করা হয়। প্রক্রিয়া যখন কিছু সমাধান পাওয়া যায়।

এই পদ্ধতিটি কেবলমাত্র একটি সমাধান খুঁজে পাওয়ার জন্য গ্যারান্টিযুক্ত, যা অবিকল মৌলিক। কেন তা দেখতে নোট করুন

  1. কোনও সমাধান x > 0, y > 0 এর জন্য এন > 1 সন্তুষ্ট x > y
  2. যদি x , y একটি সমাধান এবং x ', y ' আলাদা সমাধান হয় তবে অগত্যা xx ' এবং YY '।

1 এবং 2 এর ফলাফল হিসাবে,

  • প্রক্রিয়া যখন কোনও প্রদত্ত কেতে থামে , তখন কেবল একটি সমাধান জন্য বিদ্যমান , কারণ যদি দুটি সমাধান তাদের মধ্যে একজন তার আগে পাওয়া গেছে হতো, এবং প্রক্রিয়া একটি ছোট সঙ্গে বন্ধ হয়ে যেত
  • এই সমাধানটি মৌলিক কারণ, আবার, যদি ছোট x এর সাথে কোনও সমাধান থাকে তবে এটি আগে পাওয়া যেত।

`       % Do...while
  @:U   %   Push row vector [1^2, 2^2, ..., k^2] where k is the iteration index
  t!    %   Duplicate and transpose. Gives the column vector [1^2; 2^2; ...; k^2]
  G*    %   Multiply by input n, element-wise. Gives [n*1^2; n*2^2; ...; n*k^2]
  -     %   Subtract with broadcast. Gives a square matrix of size n
  !     %   Transpose, so that x corresponds to row index and y to column index
  1=&f  %   Push row and column indices of all entries that equal 1. There can
        %   only be (a) zero such entries, in which case the results are [], [],
        %   or (b) one such entry, in which case the results are the solution x, y
  ts~   %   Duplicate, sum, negate. This gives 1 in case (a) or 0 in case (b)
        % End (implicit). Proceed with next iteration if top of the stack is true;
        % that is, if no solution was found.
        % Display (implicit). The stack contains copies of [], and x, y on top.
        % The empty array [] is not displayed


2

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

(এক্স,Y)এক্স2-এনY2=1Yএক্স

f n=[(x,y)|x<-[1..],y<-[1..x],x^2-n*y^2==1]!!0

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


মনে হচ্ছে আপনার মত পরিবর্তন করতে হবে nকরতে xমধ্যে y<-[1..n]যাতে আপনি গনা করতে f 13
খ্রিস্টান সিভর্স

@ খ্রিস্টিয়ানসিভারগুলি এটি নির্দেশ করার জন্য ধন্যবাদ, আমি এটিকে সংশোধন করেছি!
flawr

1

সি # (ভিজ্যুয়াল সি # ইন্টারেক্টিভ সংকলক), 70 69 বাইট

n=>{int x=1;var y=.1;for(;y%1>0;)y=Math.Sqrt(-x*~++x/n);return(x,y);}

আমার জাভা 8 উত্তরটির বন্দর , তবে বাইটগুলি সংরক্ষণ করার জন্য স্ট্রিংয়ের পরিবর্তে একটি টিপল আউটপুট দেয়।

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



1

হুশ , 12 বাইট

ḟΛ¤ȯ=→*⁰□π2N

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

ব্যাখ্যা

ḟΛ¤ȯ=→*⁰□π2N  Input is n, accessed through ⁰.
           N  Natural numbers: [1,2,3,4,..
         π2   2-tuples, ordered by sum: [[1,1],[1,2],[2,1],[1,3],[2,2],..
ḟ             Find the first that satisfies this:
 Λ             All adjacent pairs x,y satisfy this:
  ¤     □       Square both: x²,y²
   ȯ  *⁰        Multiply second number by n: x²,ny²
     →          Increment second number: x²,ny²+1
    =           These are equal.

1

ম্যাথগল্ফ , 12 বাইট

ökî²*)_°▼Þ√î

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

আউটপুট ফর্ম্যাটিংয়ের বিষয়টি যখন আসবে তখন আমি হেইল মেরি ফেলছি। যদি এটি অনুমোদিত না হয় তবে আমার কাছে একটি সমাধান রয়েছে যা 1 বাইট দীর্ঘ। আউটপুট বিন্যাসটি x.0yযেখানে .0দুটি সংখ্যার মধ্যে বিভাজক।

ব্যাখ্যা

ö       ▼      do-while-true with popping
 k             read integer from input
  î²           index of current loop (1-based) squared
    *          multiply the two
     )         increment (gives the potential x candidate
      _        duplicate TOS
       °       is perfect square
         Þ     discard everything but TOS
          √    square root
           î   index of previous loop (1-based)

আমি Emigna এর 05AB1E উত্তর থেকে কিছুটা অনুপ্রেরণা নিয়েছি, তবে কিছু উন্নতি করতে সক্ষম হয়েছি। আমি যে বিভাজকটি বেছে নিয়েছি তা যদি অনুমোদিত না হয় তবে 13 বাইট গণনার জন্য শেষ বাইটের আগে একটি স্থান যুক্ত করুন।


1

এপিএল (এনএআরএস), 906 বাইট

r←sqrti w;i;c;m
m←⎕ct⋄⎕ct←0⋄r←1⋄→3×⍳w≤3⋄r←2⋄→3×⍳w≤8⋄r←w÷2⋄c←0
i←⌊(2×r)÷⍨w+r×r⋄→3×⍳1≠×r-i⋄r←i⋄c+←1⋄→2×⍳c<900⋄r←⍬
⎕ct←m

r←pell w;a0;a;p;q2;p2;t;q;P;P1;Q;c;m
   r←⍬⋄→0×⍳w≤0⋄a0←a←sqrti w⋄→0×⍳a≡⍬⋄m←⎕ct⋄⎕ct←0⋄Q←p←1⋄c←P←P1←q2←p2←0⋄q←÷a
L: t←p2+a×p⋄p2←p⋄p←t
   t←q2+a×q
   :if c≠0⋄q2←q⋄:endif
   q←t           
   P←(a×Q)-P
   →Z×⍳Q=0⋄Q←Q÷⍨w-P×P
   →Z×⍳Q=0⋄a←⌊Q÷⍨a0+P
   c+←1⋄→L×⍳(1≠Qׯ1*c)∧c<10000
   r←p,q
   :if c=10000⋄r←⍬⋄:endif
Z: ⎕ct←m

উপরে 2 টি ফাংশন রয়েছে srrti ফাংশন যা মেঝে বর্গক্ষেত্রের শিকড় এবং পেল ফাংশনটি ত্রুটির জন্য জিলডে ফিরে আসবে এবং এটি http://mathworld.wolfram.com/PellEquation.html পৃষ্ঠাটি পড়ার ভিত্তিতে এটি জানার জন্য অ্যালগো ব্যবহার করবে একটি সংখ্যা ট্রু অবিরত ভগ্নাংশ (নিউটন পদ্ধতি ব্যবহার করে sqrt জানার জন্য আমি যদি একটি আলগো ব্যবহার করি) এবং যখন এটি পি এবং কিউ খুঁজে পায় তখন থামান

 p^2-w*q^2=1=((-1)^c)*Qnext

টেস্ট:

  ⎕fmt pell 1x
┌0─┐
│ 0│
└~─┘
  ⎕fmt pell 2x
┌2───┐
│ 3 2│
└~───┘
  ⎕fmt pell 3x
┌2───┐
│ 2 1│
└~───┘
  ⎕fmt pell 5x
┌2───┐
│ 9 4│
└~───┘
  ⎕fmt pell 61x
┌2────────────────────┐
│ 1766319049 226153980│
└~────────────────────┘
  ⎕fmt pell 4x
┌0─┐
│ 0│
└~─┘
  ⎕fmt pell 7373x
┌2───────────────────────────────────────────────────────────┐
│ 146386147086753607603444659849 1704817376311393106805466060│
└~───────────────────────────────────────────────────────────┘
  ⎕fmt pell 1000000000000000000000000000002x
┌2────────────────────────────────────────────────┐
│ 1000000000000000000000000000001 1000000000000000│
└~────────────────────────────────────────────────┘

স্ক্রটি ফাংশনে লুপে চক্রের জন্য একটি সীমা রয়েছে এবং পেল ফাংশনে লুপের জন্য সীমা রয়েছে, সম্ভাব্য কেস সংখ্যার জন্য উভয়ই অনেক বড় বা কনভার্জ হয় না ... (আমি জানি না sqrti কিনা প্রতিটি সম্ভাব্য ইনপুট এবং একই পেল ফাংশনটি রূপান্তর করুন)



0

পাইথ, 15 বাইট

fsIJ@ct*TTQ2 2J

এটি এখানে অনলাইনে চেষ্টা করুন । আউটপুট xতখন yএকটি নতুন লাইন দ্বারা পৃথক করা হয়।


0

ওল্ফ্রাম ভাষা (গণিত) , 41 বাইট

{1//.y_/;!NumberQ[x=√(y^2#+1)]:>y+1,x}&

3 বাইট ইউনিকোড অক্ষর # 221A। (X, y) এর পরিবর্তে (y, x) ক্রমে সমাধান আউটপুট করে। অসম্পূর্ণ //.এবং এর সীমিত পুনরাবৃত্তির সাথে যথারীতি কেবল ইনপুটগুলিতে কাজ করে যেখানে এর আসল মান yসর্বাধিক 65538।

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


0

> <> , 45 বাইট

11v
+$\~:1
:}/!?:-1v?=1-*}:{*:@:{*:
$  naon;>

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

ব্রুট ফোর্স অ্যালগরিদম, x=2উপরের দিক থেকে অনুসন্ধান করে y=x-1এবং প্রতিটি লুপের সাথে কমিয়ে, xযখন y0 এ পৌঁছায় তখন বৃদ্ধি xহয় y, আউটপুট অনুসরণ করা হয় , একটি নিউলাইন দ্বারা পৃথক করা হয়।



0

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

lambda i:next((x,y)for x in range(2,i**i)for y in range(x)if~-x**2==i*y**2)

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

ব্যাখ্যা

এক্স<আমিআমি
এক্সআমি!

এই কোডটি পাইথন ২ তেও চলবে However তবে, পাইথন 2 এ পরিসীমা () ফাংশন পাইথন 3 এর মতো জেনারেটরের পরিবর্তে একটি তালিকা তৈরি করে এবং এইভাবে অপারগ।


স্বতঃস্ফূর্ত সময় এবং মেমরির সাহায্যে, কেউ পুনরুক্তারের পরিবর্তে একটি তালিকা বোঝার ব্যবহার করতে পারে এবং এর মতো 3 বাইট সংরক্ষণ করতে পারে:

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

lambda i:[(x,y)for x in range(i**i)for y in range(x)if~-x**2==i*y**2][1]

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


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