বর্গমূলের অবিরত ভগ্নাংশ নির্ধারণ করা


13

ক্রমাগত ভগ্নাংশ একটি সংখ্যা nনিম্নলিখিত ফর্ম ভগ্নাংশ হল:


যা এগোয় n

aএকটি অবিরত ভগ্নাংশের ক্রমটি সাধারণত এইভাবে লেখা হয়: [a 0 ; a 1 , a 2 , a 3 , ... a n ]।
আমরা আমাদের একই ফ্যাশনে লিখব, তবে সেমিকোলনের মধ্যে পুনরাবৃত্তি অংশ সহ।

আপনার লক্ষ্য হ'ল এর বর্গমূলের অবিরত ভগ্নাংশটি ফিরিয়ে আনা n
ইনপুট: একটি পূর্ণসংখ্যা n,। nকখনও নিখুঁত বর্গ হতে পারে না।
আউটপুট: অবিরত ভগ্নাংশ sqrt(n)

পরীক্ষার কেস:
2 -> [1; 2;]
3 -> [1; 1, 2;]
19 -> [4; 2, 1, 3, 1, 2, 8;]

সংক্ষিপ্ততম কোড জিতেছে। শুভকামনা!


1
আউটপুট কি পরীক্ষার ক্ষেত্রে একই বিন্যাসে থাকতে হবে?
grc

না। যতক্ষণ না আপনার সেমিকোলন রয়েছে, ঠিক আছে।
beary605

এইচএম, সঠিক উত্তরগুলি পাওয়া, ভগ্নাংশটি কখন বন্ধ করা যুক্তিযুক্ত তা জানার ক্ষেত্রে সমস্যা হচ্ছে। এটি যখন এতদূর সহজ তখন যখন কোনও <sub> 0 </sub> মূল ইনপুটটির দ্বিগুণ হয়?
জোফিশ

হ্যাঁ, এটাই সীমা।
beary605

@ beary605 ধন্যবাদ আরও অনেক বেশি পড়া হয়েছে, এবং এখন আমি দেখতে পাচ্ছি যে বর্গাকারের অবিরত ভগ্নাংশটি একটি বিশেষ কেস। আকর্ষণীয় জিনিস! এখনও একটি অ-ভাসমান পয়েন্ট সংস্করণে কাজ করা।
জোফিশ

উত্তর:


3

গল্ফস্ক্রিপ্ট ( 60 66 60 টি অক্ষর)

~:^,{.*^>}?(:?';'[1?{^1$.*-@/?@+.2$/@@1$%?\- 1$(}do;;]','*1$

সতর্কতা: ?সেখানে থাকা বেশিরভাগটিতে floor(sqrt(input))বিল্টিনের চেয়ে প্রতিনিধিত্বশীল ভেরিয়েবল রয়েছে । তবে প্রথমটি হ'ল বিল্টিন।

স্টিডিন এবং স্টপআউট আউটপুটগুলিতে ইনপুট নেয়।

অ্যালগরিদমের স্যুইচোডকোড (সঠিকতার প্রমাণ বর্তমানে পাঠকের জন্য অনুশীলন হিসাবে রেখে গেছে):

n := input()
m := floor(sqrt(n))
output(m)
x := 1
y := m
do
  x := (n - y * y) / x
  output((m + y) / x)
  y := m - (m + y) % x
while (x > 1)

তবুও আবার আমি নিজেকে একটি একক অপারেটর চাই যা a bস্ট্যাকটি গ্রহণ করে এবং স্ট্যাকের a/b a%bউপর ছেড়ে যায়।


1
আমি বলব যে সত্যিই আমার জিএস শিখতে হবে ... তবে এখানে একটি শব্দটি খুব শক্ত হওয়া দরকার ;)
বুথবি

1
@ বুথবি, পাগল হয়ে উঠবেন না জিএস ছাড়া আপনার জীবন সম্পূর্ণ হবে না;)
পিটার টেলর

3

পাইথন, 95 97 (তবে সঠিক ...)

এটি কেবল পূর্ণসংখ্যার গাণিতিক এবং মেঝে বিভাগ ব্যবহার করে। এটি সমস্ত ধনাত্মক পূর্ণসংখ্যার ইনপুটগুলির জন্য সঠিক ফলাফল আনবে, যদিও কেউ দীর্ঘ ব্যবহার করতে চায় তবে তাদের একটি অক্ষর যুক্ত করতে হবে; উদাহরণস্বরূপ m=a=0L। এবং অবশ্যই ... আমার দরিদ্র লোকটির স্কয়ারটি সমাপ্ত হওয়ার জন্য এক মিলিয়ন বছর অপেক্ষা করুন।

z=x=m=1
while n>m*m:m+=1
m=y=m-1
l=()
while-z<x:x=(n-y*y)/x;y+=m;l+=y/x,;y=m-y%x;z=-1
print c,l

আউটপুট:

n=139
11 (1, 3, 1, 3, 7, 1, 1, 2, 11, 2, 1, 1, 7, 3, 1, 3, 1, 22)

সম্পাদনা: এখন পিটার টেলরের অ্যালগরিদম ব্যবহার করে। যে do...whileমজা ছিল।


এর উদ্দেশ্য কী *(c*c-n)?
পিটার টেলর

@ পিটারটেলর, আমি চ্যালেঞ্জটি যথেষ্ট মনোযোগ সহকারে পড়িনি, এবং নিখুঁত স্কোয়ারগুলির জন্য কোড তৈরি করেছি।
বুথবি

2

পাইথন, 87 82 80

x=r=input()**.5
while x<=r:print"%d"%x+",;"[x==r],;x=1/(x%1)
print`int(r)*2`+";"

এটি একটি পূর্ণসংখ্যার লাগে এবং ফলাফল দেয়:

4; 2, 1, 3, 1, 2, 8;

x-int(x) -> x%1। আমি মুগ্ধ :)
beary605

অনুযায়ী √139 জন্য ভুল ফলাফল দেয় উল্ফর্যাম আলফা
breadbox

আমি এটি 139 ডলারে কাজ করার জন্য আপডেট করেছি। তবে, যদি ক্রমটির দৈর্ঘ্য আরও দীর্ঘ হয় (√139 এর 18 টি সংখ্যার ক্রম রয়েছে), তবে ফলাফলটি সম্ভবত নির্ভুলতা হারাতে শুরু করবে।
grc

আমি এটি অবিশ্বাস্যরকম মনে করি যে এটি সর্বদা 2 * ইনট (স্কয়ার্ট (এ)) এ শেষ হয়।
beary605

আরও আকর্ষণীয় এখন আমাদের 3 টির জন্য 139 টির কোড ভেঙে গেছে (খনিটি এখনও অ-গল্ফযুক্ত এবং আন-পোস্ট রয়েছে)।
জোফিশ

2

ম্যাথামেটিকাল 33 31

c[n_]:=ContinuedFraction@Sqrt@n

আউটপুট তালিকার ফর্ম্যাটে রয়েছে যা ম্যাথমেটিকার পক্ষে আরও উপযুক্ত। উদাহরণ:

c[2]
c[3]
c[19]
c[139]
c[1999]

(* out *)
{1, {2}}
{1, {1, 2}}
{4, {2, 1, 3, 1, 2, 8}}
{11, {1, 3, 1, 3, 7, 1, 1, 2, 11, 2, 1, 1, 7, 3, 1, 3, 1, 22}}
{44, {1, 2, 2, 4, 1, 1, 5, 1, 5, 8, 1, 3, 2, 1, 2, 1, 1, 1, 1, 1, 1, 
  1, 14, 3, 1, 1, 29, 4, 4, 2, 5, 1, 1, 17, 2, 1, 12, 9, 1, 5, 1, 43, 
  1, 5, 1, 9, 12, 1, 2, 17, 1, 1, 5, 2, 4, 4, 29, 1, 1, 3, 14, 1, 1, 
  1, 1, 1, 1, 1, 2, 1, 2, 3, 1, 8, 5, 1, 5, 1, 1, 4, 2, 2, 1, 88}}

1
ওহ মানুষ, আমি পুরোপুরি এই উত্তরটি আশা করেছিলাম। আপনি অবিরত ভগ্নাংশটি নিজে তৈরি না করলে আমি এটিকে প্রকৃত উত্তর হিসাবে বিবেচনা করব না।
beary605

@ beary605 যথেষ্ট মেলা।
ডেভিডসি

2
+1 আরও ভাল (25 টি অক্ষর)ContinuedFraction@Sqrt@#&
ডঃ বেলিসারিয়াস

আপনি এখানে কি গণনা করছেন? এটি কি এমন একটি প্রোগ্রাম যা স্টিডিন থেকে ইনপুট নেয়? কারণ আপনি যেভাবে এটি ব্যবহার করছেন তা দেখে মনে হচ্ছে এটি ফাংশন সংজ্ঞা ব্যতীত একটি ফাংশন বডি।
পিটার টেলর

@ পিটার টেলর দয়া করে সংশোধন দেখুন।
ডেভিডসি

1

পাইথন ( 136 133 96)

অবিরত ভগ্নাংশের জন্য স্ট্যান্ডার্ড পদ্ধতি, অত্যন্ত গল্ফযুক্ত।

a=input()**.5
D=c=int(a);b=[]
while c!=D*2:a=1/(a%1);c=int(a);b+=[c]
print D,";%s;"%str(b)[1:-1]

আপনি কয়েকটি অক্ষর ব্যবহার করে সংরক্ষণ করতে পারেন while 1:। আপনি বেশিরভাগ স্টেটমেন্টগুলিকে একটি লাইনে থাকা লুপের মধ্যেও রাখতে পারেন।
grc

আমি যখন আপনার স্ক্রিপ্টটি চালাচ্ছি, তখন আমি 8 ;1;74 এবং 75 এর জন্য আউটপুট পাই ; এটা ঠিক মনে হচ্ছে না। এটি 76 এ ঝুলে আছে
ব্রেডবক্স

Ep হ্যাঁ আমার কোড ফিক্সড
beary605

এই সংস্করণটি 139 এর জন্য ভুল ফলাফল দেয়
bread

@ বুথবি তারপরে আমি আমার মুছে ফেলব এবং আমরা এটিকে একটি ড্র
বলব

1

সি, 137

নতুন লাইন সহ, ধরে নিচ্ছি যে আমার নিজের বর্গমূলটি রোল করতে হবে না।

#include<math.h>
main(i,e){double d;scanf("%lf",&d);e=i=d=sqrt(d);while(i^e*2)printf("%d%c",i,e^i?44:59),i=d=1.0/(d-i);printf("%d;",i);}

এটি স্কয়ার্ট (১৩৯) এর জন্য বিরতি দেয় এবং আউটপুটটিতে মাঝে মধ্যে অতিরিক্ত অতিরিক্ত সেমিকোলন থাকে তবে আমি আজ রাতেই এটিতে কাজ করতে খুব ক্লান্ত হয়েছি :)

5
2; 4;
19
4; 2,1,3,1,2,8;
111
10; 1,1,6,1,1,20;

1

পার্ল, 99 টি অক্ষর

না না 139, 151, ইত্যাদি 1 থেকে 9 টি সংখ্যা পর্যন্ত সংখ্যা দিয়ে পরিক্ষিত উপর স্ক্রু।

$"=",";$%=1;$==$-=($n=<>)**.5;
push@f,$==(($s=$=*$%-$s)+$-)/($%=($n-$s*$s)/$%)until$=>$-;
say"$-;@f;"

দ্রষ্টব্য: $%, $=, এবং $-সব পূর্ণসংখ্যা-অত্যাচার ভেরিয়েবল।


1

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

r←f w;A;a;P;Q;m
m←⎕ct⋄Q←1⋄⎕ct←P←0⋄r←,a←A←⌊√w⋄→Z×⍳w=0
L: →Z×⍳0=Q←Q÷⍨w-P×P←P-⍨a×Q⋄r←r,a←⌊Q÷⍨A+P⋄→L×⍳Q>1
Z: ⎕ct←m

এইফ ফাংশনটি পেলে সমীকরণের সমাধানের জন্য http://mathworld.wolfram.com/PellEquation.html পৃষ্ঠায় থাকা আলগো একের ভিত্তিতে তৈরি । এইফ ফাংশনটির সমস্ত ইনপুট রয়েছে নেতিবাচক সংখ্যা নয় (টাইপ ভগ্নাংশও)। সম্ভবত এখানে কিছু ভুল হয়েছে, আমার মনে আছে আমি কীভাবে এটি দেখছি তাতে বড় ভগ্নাংশের সংখ্যার সমস্যা রয়েছে

  √13999999999999999999999999999999999999999999999x
1.183215957E23 

সুতরাং সেখানে একটি ফাংশন sqrti () হবে। এই কারণে ভগ্নাংশ ইনপুট (এবং পূর্ণসংখ্যার ইনপুট) <10 ^ 15 হতে হবে। পরীক্ষা:

 ⎕fmt (0..8),¨⊂¨f¨0..8
┌9───────────────────────────────────────────────────────────────────────────────────────────────────────┐
│┌2─────┐ ┌2─────┐ ┌2───────┐ ┌2─────────┐ ┌2─────┐ ┌2───────┐ ┌2─────────┐ ┌2─────────────┐ ┌2─────────┐│
││  ┌1─┐│ │  ┌1─┐│ │  ┌2───┐│ │  ┌3─────┐│ │  ┌1─┐│ │  ┌2───┐│ │  ┌3─────┐│ │  ┌5─────────┐│ │  ┌3─────┐││
││0 │ 0││ │1 │ 1││ │2 │ 1 2││ │3 │ 1 1 2││ │4 │ 2││ │5 │ 2 4││ │6 │ 2 2 4││ │7 │ 2 1 1 1 4││ │8 │ 2 1 4│││
││~ └~─┘2 │~ └~─┘2 │~ └~───┘2 │~ └~─────┘2 │~ └~─┘2 │~ └~───┘2 │~ └~─────┘2 │~ └~─────────┘2 │~ └~─────┘2│
│└∊─────┘ └∊─────┘ └∊───────┘ └∊─────────┘ └∊─────┘ └∊───────┘ └∊─────────┘ └∊─────────────┘ └∊─────────┘3
└∊───────────────────────────────────────────────────────────────────────────────────────────────────────┘
  f 19
4 2 1 3 1 2 8 
  f 54321x
233 14 1 1 3 2 1 2 1 1 1 1 3 4 6 6 1 1 2 7 1 13 4 11 8 11 4 13 1 7 2 1 1 6 6 4 3 1 1 1 1 2 1 2 3 1 1 14 466 
  f 139
11 1 3 1 3 7 1 1 2 11 2 1 1 7 3 1 3 1 22 
  +∘÷/f 139
11.78982612
  √139
11.78982612

যুক্তি যদি একটি সংখ্যার বর্গক্ষেত্র হয় তবে এটি কেবলমাত্র 1 টি উপাদানের একটি তালিকা, সেই সংখ্যার স্কয়ার্টের ফিরিয়ে আনবে

  f 4
2 

এটি যদি আমার উপর নির্ভর করে তবে "কোডগল্ফ" ব্যতীত একটি অনুশীলনে আমি পূর্ববর্তী সম্পাদনাটিকে পছন্দ করব যা ফাংশন স্কয়ার্টি () ব্যবহার করে ...


1
অবশ্যই আপনি fqএবং এর পরিবর্তে একক-বর্ণের নাম ব্যবহার করতে পারেন a0। এছাড়াও: (a×Q)-P->P-⍨a×Q
এনজিএন

Q←Q÷⍨- নরস কি সাপোর্ট করে Q÷⍨←?
এনজিএন

@ জিএনএন: আমি একাধিক অ্যাসাইনমেন্ট সূত্রের শৃঙ্খলে "কিউ ⍨ ⍨ ←" ব্যবহার করতে পছন্দ করি না ... বাকী অংশীদারদের একমত হওয়ার জন্য ... সম্ভবত আমি বলি কারণ আমি সি
অপরিজ্ঞাত আচরণটি
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.