দুটি স্কোয়ারের পরিমাণ গণনা করুন


45

একটি অ-নেতিবাচক সংখ্যা দেওয়া হয়েছে n, nদুটি পূর্ণসংখ্যার n == a^2 + b^2( OEIS A004018 ) যোগফল হিসাবে প্রকাশের উপায়গুলির আউটপুট । নোট করুন aএবং bইতিবাচক, নেতিবাচক বা শূন্য হতে পারে এবং তাদের ক্রমগুলি গুরুত্বপূর্ণ। সবচেয়ে কম বাইট জেতা

উদাহরণস্বরূপ, n=25দেয় 12কারণ 25হিসাবে প্রকাশ করা যেতে পারে

(5)^2  + (0)^2
(4)^2  + (3)^2
(3)^2  + (4)^2
(0)^2  + (5)^2
(-3)^2 + (4)^2
(-4)^2 + (3)^2
(-5)^2 + (0)^2
(-4)^2 + (-3)^2
(-3)^2 + (-4)^2
(0)^2  + (-5)^2
(3)^2  + (-4)^2
(4)^2  + (-3)^2

এখানে মান পর্যন্ত n=25। আপনার কোডটি যাতে কার্যকর হয় সে সম্পর্কে সাবধান হন n=0

0 1
1 4
2 4
3 0
4 4
5 8
6 0
7 0
8 4
9 4
10 8
11 0
12 0
13 8
14 0
15 0
16 4
17 8
18 4
19 0
20 8
21 0
22 0
23 0
24 0
25 12

এখানে n=100তালিকা হিসাবে মান রয়েছে ।

[1, 4, 4, 0, 4, 8, 0, 0, 4, 4, 8, 0, 0, 8, 0, 0, 4, 8, 4, 0, 8, 0, 0, 0, 0, 12, 8, 0, 0, 8, 0, 0, 4, 0, 8, 0, 4, 8, 0, 0, 8, 8, 0, 0, 0, 8, 0, 0, 0, 4, 12, 0, 8, 8, 0, 0, 0, 0, 8, 0, 0, 8, 0, 0, 4, 16, 0, 0, 8, 0, 0, 0, 4, 8, 8, 0, 0, 0, 0, 0, 8, 4, 8, 0, 0, 16, 0, 0, 0, 8, 8, 0, 0, 0, 0, 0, 0, 8, 4, 0, 12]

মজাদার ঘটনা: ক্রমটিতে এমন পদ রয়েছে যা নির্বিচারে উচ্চ হয় এবং এর চলমান গড়ের সীমা π π

লিডারবোর্ড:


4
কিসের অপেক্ষা?? "ক্রমটিতে এমন পদ রয়েছে যা নির্বিচারে উচ্চতর এবং এর চলমান গড়ের সীমা π π"
স্টিভি গ্রিফিন

@ স্টেভিগ্রিফিন এই দুটি বিবৃতি সামঞ্জস্যপূর্ণ। ক্রম বিবেচনা করুন 1,0,2,0,0,3,0,0,0,4,0,0,0,0,5,...। যে কোনও ননজারো সংখ্যার পরে সিকোয়েন্সটি কেটে ফেলা হচ্ছে, এ পর্যন্ত গড়ে ১ টি। এবং, 0 এর রানগুলির পরে ক্রমটি কম এবং কম প্রভাব ফেলে।
xnor

5
আমি জানি এটি ধারাবাহিক .. =) আমি মন্তব্য পোস্ট করার সময় আমি 10.000 প্রথম সংখ্যা পরীক্ষা করেছিলাম। যা আমি পাই না তা হ'ল: পৃথিবীতে এটি পাই সমান হয় না কেন?
স্টিভি গ্রিফিন

29
পছন্দ করেছেন এগুলি ব্যাসার্ধ স্কয়ার্ট (এন) এর বৃত্তের জাল পয়েন্ট, যার ক্ষেত্রফল πN।
xnor

2
@ এক্সনর এবং সেখানে যাদু রয়েছে :(
আন্দ্রেস ডেক

উত্তর:


19

পাইথন ( 59 57 56 বাইট)

lambda n:0**n+sum((-(n%(x-~x)<1))**x*4for x in range(n))

অনলাইন ডেমো

আমার সিজেএম উত্তর হিসাবে, এটি এমবিয়াস বিপরীত ব্যবহার করে এবং সিউডো ক্যাসিলিনিয়ার সময় চালায়।

ধন্যবাদ Sp3000 2 বাইট 'সঞ্চয় জন্য, এবং feersum 1।


1
এই বন্ধনীগুলি বিরক্তিকর।
lirtosiast

@ থমাসকওয়া, আমাকে এটি সম্পর্কে বলুন। জিনিস যা সত্যিই আমাকে বিস্মিত সংস্করণ আমি প্রথম এক আমি পোস্ট পথে মাধ্যমে গৃহীত এক, যে ছিল -1**xসর্বদা -1। আমি প্রত্যাশা করছিলাম যে -1এটির চেয়ে কম-অগ্রাধিকারের একারি বিয়োগের চেয়ে একক সংখ্যার আক্ষরিক টোকেন হবে।
পিটার টেলর

2
অনুগ্রহে অভিনন্দন! আপনার কোডটি আমি যে কিছু দিয়ে এসেছি তার চেয়ে ছোট। আপনার সমাধানটি সম্পূর্ণ নতুন এবং অপ্রত্যাশিত গাণিতিক ধারণার উপর ভিত্তি করে তৈরি হয়েছে এবং এটি আমার পক্ষে আনন্দিত হয়েছে যে এমনকি এমন সরল-দৃষ্টিকোণ চ্যালেঞ্জের মধ্যেও এটি সম্ভব। নিজেকে।
xnor

4 টির পরে গুণনটি সরিয়ে 1 বাইট সংরক্ষণ করা যায় **x
ফেয়ারসাম

@ পিটারটেলর আপনি কীভাবে আপনার অ্যালগোরিদম কাজ করে তা বর্ণনা করতে পারেন / আপনি আমাকে কোনও সংস্থার দিকে নির্দেশ করতে পারেন? আমি পুরোপুরি দেখতে পাচ্ছি না আপনি কীভাবে সুবরেজ সমস্যার সংখ্যার জন্য এমবিয়াস ইনভার্সনটি প্রয়োগ করতে পারেন।
flawr

15

গণিত, 13 বাইট

যদি বিল্ট-ইনগুলি অনুমোদিত হয় তবে এটি ম্যাথমেটিকায় কীভাবে করা যায় do

2~SquaresR~#&

0 <= n <= 100 এর জন্য

2~SquaresR~# & /@ Range[0, 100]

{1, 4, 4, 0, 4, 8, 0, 0, 4, 4, 8, 0, 0, 8, 0, 0, 4, 8, 4, 0, 8, 0, 0, 0 , 12, 8, 0, 0, 8, 0, 0, 4, 0, 8, 0, 4, 8, 0, 0, 8, 8, 0, 0, 0, 8, 0, 0, 0 , 12, 0, 8, 8, 0, 0, 0, 0, 8, 0, 0, 8, 0, 0, 4, 16, 0, 0, 8, 0, 0, 0, 4, 8, 8 , 0, 0, 0, 0, 0, 8, 4, 8, 0, 0, 16, 0, 0, 0, 8, 8, 0, 0, 0, 0, 0, 0, 8, 4, 0 , 12


1
কারণ অবশ্যই ম্যাথামেটিকার জন্য এটি একটি অন্তর্নির্মিত রয়েছে।
হাইপারনিউটারিনো

14

পাইথন 2, 44 বাইট

f=lambda n,x=1:+(x>n)or(n%x<1)-f(n,x+2)/4<<2

এটি প্রায়শোটের সমাধানের সমান (যা পিটার টেলারের সমাধানের উপর ভিত্তি করে ), তবে চিহ্নগুলি যেভাবে পরিচালনা করা হয় তা সহজ করে 8 বাইট সংরক্ষণ করে।

মনে রাখবেন যে পুরো প্রোগ্রামের জন্য, আমরা ফাংশনের বাইরে কোনও ব্যয় না করে ফাংশনে 2 বাইট সংরক্ষণ করতে পারি:

f=lambda n,x=1:x>n or(n%x<1)-f(n,x+2)/4<<2
print+f(input())

পুরো প্রোগ্রামের জন্য দুটি অতিরিক্ত বাইট এইভাবে:

n=input()
f=lambda x:x>n or(n%x<1)-f(x+2)/4<<2
print+f(1)

কারণ n > 0এখানে খুব স্পষ্টতই 40 বাইট সমাধান রয়েছে:

f=lambda n,x=1:n/x and(n%x<1)*4-f(n,x+2)

1
অনুগ্রহ জয়ের জন্য অভিনন্দন! পুনরাবৃত্ত বিয়োগটি বিভাজনকারীদের জন্যই কোনও বিভাজন থেকে কোনও চিহ্ন বের করার প্রয়োজন ছাড়াই বিজোড় বিভাজকদের জন্য বিকল্প যোগফল প্রকাশ করার একটি পরিষ্কার এবং স্বল্প উপায়। এছাড়াও, পি = টেলারের এনআরসি 0 এর চতুর পরিচালনা সহ একটি পুনরাবৃত্তির সমাধান সমাধান করার জন্য কৃতিত্ব s
এক্সনোর


12

জে, 16 বাইট

+/@,@:=+&*:/~@i:

এটি একটি monadic ক্রিয়া (অন্য কথায়, একটি unary ফাংশন)। এটি অনলাইনে চেষ্টা করুন বা দেখুন এটি পরীক্ষার সমস্ত ক্ষেত্রে পাস করে

ব্যাখ্যা

+/@,@:=+&*:/~@i:  Denote input by n
              i:  The array of integers from -n to n
           /~@    Take outer product wrt the following function:
       +           the sum of
        &*:        squares of both inputs
                  This results in a 2D array of a^2+b^2 for all a, b between -n and n
      =           Replace by 1 those entries that are equal to n, and others by 0
   ,@:            Flatten the binary matrix
+/@               Take its sum

11

পাইথন 2, 69 55 53 52 বাইট

f=lambda n,x=1:+(x>n)or(2-x%4)*(n%x<1)+f(n,x+2)/4<<2

এটি পিটার টেলারের দুর্দান্ত সমাধানের ভিত্তিতে একটি পুনরাবৃত্ত ফাংশন ।


1
এটি একটি দুর্দান্ত উন্নতি। তবে, এটি আরও খাটো করার এখনও একটি উপায় রয়েছে এবং আমি আপনাকে এটি অনুসন্ধান করতে উত্সাহিত করি।
xnor

1
@ এক্সনর আরেকটি বাইট নিচে। আমি আশা করি আপনার হাতগুলিতে আর কৌশল নেই।
xsot

2
আমি জানি না কিনা আমি তা একটি উত্তর করা উচিত, এটা ঠিক আপনার সমাধান প্লাস এক কৌতুক আছে: f=lambda n,x=1:+(x>n)or(n%x<1)-f(n,x+2)/4<<2। এছাড়াও, আমি অনুমান করি যে আমরা ডিফল্ট সর্বাধিক পুনরাবৃত্তির গভীরতা অতিক্রম করার বিষয়ে চিন্তা করি না?
মিচ শোয়ার্টজ

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

1
@ মিচশওয়ার্টজ হ্যাঁ, এটিই আমি অপটিমাইজেশনের কথা ভাবছিলাম! এবং এক্সসটের /4<<2কৌশলটি আমার যা ছিল তার চেয়ে কম করে তোলে।
xnor

8

জুলিয়া, 40 বাইট

n->n>0?4sum(i->(n-i^2)^.5%1==0,1:n^.5):1

Ungolfed:

function f(n)
  if n==0
    return 1           # Handle special case of n=0
  else
    m=0                # Start the counter at zero
    for i=1:sqrt(n)    # Loop over the values (i) whose squares are
                       # less than n (except zero)
      k=sqrt(n-i^2)    # Find k such that n=k^2+i^2
      if k==floor(k)   # if k is an integer, we've found a pair
        m+=4           # Add one for each of k^2+i^2, (-k)^2+(-i)^2, and the other two
      end
    end
    return m           # Return the resulting count
  end
end

নোট করুন যে লুপটি অন্তর্ভুক্ত নয় i==0, কারণ যখন nএকটি বর্গক্ষেত্র হয়, এটি ইতিমধ্যে অন্তর্ভুক্ত করা হয় i=sqrt(n), এবং এই ফর্মটির জন্য আটটি নয়, কেবল চারটি থাকে ( 0^2+k^2, 0^2+(-k)^2, k^2+0^2, (-k)^2+0^2)।


7

সিজেম, 25 23 বাইট

Zri:R#Ym*{Rf-Yf#:+R=},,

এটি একটি তাত্ত্বিক সমাধান যা ইনপুট এন এর জন্য ও (9 এন ) সময় এবং মেমরির প্রয়োজন ।

একটি অতিরিক্ত বাইটের ব্যয়ে - মোট 24 বাইটের জন্য - আমরা জটিলতা হ্রাস করতে পারি O (n 2 ) :

ri:R)Y*Ym*{Rf-Yf#:+R=},,

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

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

উভয় ক্ষেত্রেই

Z                  Push 3.
 ri:R              Read an integer from STDIN and save it in R.
     #             Compute 3**R.

অথবা

ri:R               Read an integer from STDIN and save it in R.
    )Y*            Add 1 and multiply by 2.

তারপর

Ym*                Take the second Cartesian power, i.e., compute all pairs.
   {          },   Filter the pairs:
    Rf-              Subtract R from each.
       Yf#           Square the differences.
          :+         Add the squares.
            R=       Compare with R.
                   If = pushed 1, keep the pair.
                ,  Count the kept pairs.

এবং একটি বাইট সংরক্ষণের সময় জটিলতাটি down (n) এ নামানো সম্ভব
পিটার টেলর

হ্যা, আমি দেখেছিলাম. এটা আশ্চর্যজনক.
ডেনিস

7

সিজেএম ( 25 24 22 21 বাইট)

{:X!X{X\2*)%!4*\-}/z}

অনলাইন ডেমো

এটি সিউডো ক্যাসিলিনিয়ার সময় * এ চলে এবং ওইআইএসের বিবৃতিটি ব্যবহার করে যে এটি

মোবিয়াস ট্রান্সফর্মটি পিরিয়ড 4 সিকোয়েন্স [4, 0, -4, 0, ...]। - মাইকেল সোমোস, 17 সেপ্টেম্বর 2007

ইনপুটটি 0স্পষ্টতই একটি বিশেষ কেস (এমবিয়াস ট্রান্সফর্ম এবং অ্যানিহিলেটররা ভালভাবে একসাথে যায় না), তবে কেবল একটি চরের জন্য শেষ হয়েছে।

* সিউডো- কারণ এটি ইনপুটটির মূল্যে ক্যাসিলিনিয়ার, ইনপুটটির আকার নয়; অর্ধেক কারণ এটি Theta(n)ক্রমের আকার অনুসারে পূর্ণসংখ্যার উপর অপারেশন করে n; একটি- bবিট মোড অপারেশনটিতে b lg bসময় নেওয়া উচিত , সুতরাং সামগ্রিকভাবে এটি Theta(n lg n lg lg n)সময় নেয় ।


6

জাপট , 42 37 33 বাইট

Japt একটি সংক্ষিপ্ত সংস্করণ জা vaScri পর্তুগীজ ভাষায়অনুবাদক

V=Un oU+1;Vr@X+(Vf_p2 +Y*Y¥U)l ,0

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

           // Implicit: U = input number
V=Un oU+1  // Set variable V to range(-U, U+1). Ends up like [-U,-U+1,...,U-1,U]
Vr@    ,0  // Reduce each item Y in V with this function, starting at 0:
X+(     l  //  Return the previous value X + the length of:
Vf_p2      //   V filtered by items Z where Z*Z
+Y*Y==U)   //    + Y*Y equals U.
           // This ends up as the combined length of all fitting pairs of squares.
           // Implicit: return last expression

সম্ভবত আরও ভাল কৌশল আছে; পরামর্শ স্বাগত।


6

পাইথন 3, 68 61 60 বাইট

lambda n:0**n+4*sum(i**.5%1+(n-i)**.5%1==0for i in range(n))

দুটি নেস্টেড তালিকা বোঝার ব্যবহার খুব ব্যয়বহুল। পরিবর্তে, ব্যাসার্ধ স্কয়ার্ট (এন) এর বৃত্তের উভয় স্থানাঙ্কগুলি পূর্ণসংখ্যা হয় কিনা তা পরীক্ষা করে।

পিটার টেলর এটি একটি মোবিয়াস-ইনভার্সন ভিত্তিক পদ্ধতির মাধ্যমে মারধর করেছেন ।


সাবাশ. আমি একটি পুনরাবৃত্ত ফাংশন নিয়ে টিঙ্কারিং করছিলাম তবে n=0মার্জিতভাবে সমাধান করতে পারিনি ।
xsot


5

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

f n|q<-[-n..n]=sum[1|a<-q,b<-q,a*a+b*b==n]

ব্যবহারের উদাহরণ:

*Main> map f [0..25]
[1,4,4,0,4,8,0,0,4,4,8,0,0,8,0,0,4,8,4,0,8,0,0,0,0,12]
*Main> 

3
qপ্রহরীকে বাঁধাই চালাক, আমি এই কৌশলটি মনে রাখব।
xnor

5

জুলিয়া, 89 79 63 বাইট

g(x)=cos(π*x^.5)^2÷1
a(n)=(n==0)+4sum([g(i)g(n-i)for i=1:n])

এটি একটি নামকৃত ফাংশন aযা কোনও পূর্ণসংখ্যা গ্রহণ করে এবং একটি ফ্ল্যাট ফেরত দেয়। এটি একটি সহায়ক ফাংশন কল করে g

Ungolfed:

function g(x::Integer)
    floor(cos(π*sqrt(x))^2)
end

function a(n::Integer)
    (n == 0) + 4*sum([g(i)*g(n-i) for i=1:n])
end

এখানে পদ্ধতির ওয়েইলি আইভেনে তালিকাভুক্ত ওয়েসলি ইভান হার্টের সূত্রটির সরলকরণ ব্যবহার করা হয়েছে। সরলকরণটি গ্লেন ও-র একই ব্যক্তির সন্ধান পেয়েছিলেন, যিনি এই উত্তরটি থেকে ২ by বাইট মুণ্ডন করেছিলেন!


3 বাইট সংরক্ষণ করার x^.5চেয়ে ব্যবহার করুন sqrt(x)। এবং (n==0)2 বাইট ওভার সাশ্রয় করে 1÷(n+1)। আর তুমি ব্যবহার করে 4 আরো অক্ষর সংরক্ষণ করতে পারবেন cos(π*sqrt(x))^2÷1বদলে floor(cos(π*sqrt(x))^2)1:n/2পরিবর্তে , ব্যবহার করুন 1:n÷2, কারণ কোনও ফ্লোট ব্যবহার করে কোনও ক্ষতি নেই g(x)এবং iযাইহোক এটি পূর্ণসংখ্যায় লক হয়ে যাবে । এবং sum(i->g(i)g(n-i),1:n/2)আরও কিছু অক্ষর শেভ করবে।
গ্লেন ও

@ GlenO দুর্দান্ত পরামর্শ, ধন্যবাদ। sumকৌতুক ব্যর্থ n=0যদিও, তাই আমি অ্যারের ধী রাখা।
অ্যালেক্স এ।

1
সুতরাং, এটি পুনরুদ্ধার করা যেতে পারে - আপনি যদি i=0যোগফলটি কেস করতে দেন তবে আপনি সাইনটি স্যুইচ করতে পারেন 4g(n)। সুতরাং (n==0)-4g(n)-4g(n/2)+8sum(i->g(i)g(n-i),0:n/2), যা ত্রুটি চালানো হবে না। তবে আপনি প্রতিলিপিগুলি লক্ষ করে আরও ভাল করতে পারেন -(n==0)+4sum([g(i)g(n-i)for i=1:n])
গ্লেন ও

@ GlenO যে সরলীকরণ গুরুতর প্রতিভা। আমি আপনাকে OEIS এর ক্রমের বিকল্প সূত্র হিসাবে জমা দেওয়ার প্রস্তাব দিই!
অ্যালেক্স এ।

4

পাইথ, 16 15 বাইট

lfqQs^R2T^}_QQ2

পাইথ সংকলকটিতে এটি অনলাইনে চেষ্টা করুন ।

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

lfqQs^R2T^}_QQ2

          }_QQ   Compute the inclusive range from -Q to Q (input).
         ^    2  Take the second Cartesian power, i.e., compute all pairs.
 f               Filter; for each T in the list of pairs:
     ^R2T          Compute the squares of T's elements.
    s              Add the squares.
  qQ               Compare the sum with Q.
                 If q returned True, keep T.
l                Count the kept pairs.

4

টিআই-বেসিক, 23 বাইট

sum(seq(Σ(X²+Y²=Ans,X,-Ans,Ans),Y,-Ans,Ans

অনেকটাই অকপট. Σ(সংমিশ্রণ হয়।

আশ্চর্যের সাথে, sum(seq(sum(seq(একটি নিক্ষেপ ERR:ILLEGAL NESTকরে এবং এটিও করে Σ(Σ(তবে sum(seq(Σ(ঠিক আছে। Σ(কাছের পেরেনকে বাঁচাতে আমি ভিতরে insideোকানো বেছে নিয়েছি ।


মধ্যে পার্থক্য কি sumএবং Σ?
আলেফাল্ফা

1
@alephalpha Σ (ক সঙ্কলন লাগে, সব আপ যোগ X²+Y²=Ansমধ্যে এক্স মান থেকে -Ansএবং Ansসমষ্টি (ক এর সমষ্টি। তালিকা তাই আমরা প্রথম তালিকা তৈরি করতে SeQ (..., y, -Ans, উওর ব্যবহার প্রয়োজন,
lirtosiast

4

জাভাস্ক্রিপ্ট (ES6), 66 60 বাইট

n=>eval("for(r=0,a=~n;a++<n;)for(b=~n;b++<n;)r+=a*a+b*b==n")

6 বাইট সংরক্ষিত হয়েছে @ এডসি 65 এর জন্য ধন্যবাদ !

ব্যাখ্যা

n=>eval(`              // use eval to allow for loops in an unparenthesised arrow function
  for(r=0,             // r = number of pairs
    a=~n;a++<n;        // a = first number to square
  )
      for(b=~n;b++<n;) // b = second number to square
        r+=a*a+b*b==n  // add one to the result if a^2 + b^2 == n
                       // implicit: return r
`)

পরীক্ষা

n = <input type="number" oninput='result.innerHTML=(

n=>eval("for(r=0,a=~n;a++<n;)for(b=~n;b++<n;)r+=a*a+b*b==n")

)(+this.value)' /><pre id="result"></pre>


1
60:n=>eval('for(r=0,a=~n;a++<n;)for(b=~n;b++<n;)r+=a*a+b*b==n')
edc65

@ edc65 সুন্দর! আমি প্রথম বন্ধনী ছাড়াই একটি তীর ফাংশনে লুপগুলি ব্যবহার evalকরার কথা ভাবি নি for। আমি ~অপারেটর হা হা সম্পর্কেও ভুলে গেছি ।
ব্যবহারকারী81655

4

পাইথন 3, 93 62 69 বাইট

Itertools কাজ করছে না তাই আমি আবার দুটি ব্যাপ্তি ব্যবহার করেছি, তবে বাইটগুলি সংরক্ষণ করার জন্য পরিসরটি সরিয়ে নিয়েছে।

সম্পাদনা: পূর্ববর্তী কোডটি আসলে কাজ করে না, যেহেতু আমি n এর সংজ্ঞা দেওয়ার আগে আমি n এর চেয়ে বেশি পরিসীমা নির্ধারণ করেছিলাম।

lambda n:sum(i*i+j*j==n for i in range(-n,n+1)for j in range(-n,n+1))

2

এপিএল, 23 20 19 বাইট

{+/⍵=∊∘.+⍨×⍨0,,⍨⍳⍵}

ব্যাখ্যা:

{+/⍵=∊∘.+⍨×⍨0,,⍨⍳⍵}        Monadic function:
                 ⍳⍵          1 2 3 ... ⍵
               ,⍨            Duplicate
             0,              Concatenate to 0
          ×⍨                 Square everything
      ∘.+⍨                   Make an addition table
     ∊                       Flatten
   ⍵=                        1s where equal to the input
 +/                          Sum up the 1s

এপিএল এর জে এর i:সংখ্যা নেই (এ-এন থেকে সংখ্যাগুলি) ফাংশন না করে, এটি জে জবাবের মতো বেশ কাজ করে।

আমরা কোনও ট্রেন ব্যবহার করতে পারি না কারণ -\⍳2×⍵পার্স না করার (-\) ⍳ (2×⍵)কারণে তিন বাইটের দাম পড়বে; একইভাবে অন্যান্য জোড়ের সাথে এই সমস্ত বন্ধনীগুলি নিয়মিত ফাংশনকে ছোট করে তোলে।

এখানে চেষ্টা করুন । আউটপুট 1মানে সমস্ত মান মেলে।


2

মতলব 41 বাইট

আগের উত্তরগুলির মতো আরও ছোট

@(n)nnz(~mod(sqrt(n-(1:n^.5).^2),1))*4+~n

মূলত Agawa001 এর উত্তর ক্ষমতা এবং স্কয়ার্টের সাথে প্রতিস্থাপিত হয়েছে


2

ক্যান্ডি , 17 14 বাইট

ইনপুট প্রথমে স্ট্যাকের দিকে ধাক্কা

~TbAT1C(sWs+Aeh)Z

~T0C(sWs+Aeh)Z

peekA    # copy arg from stack to register A
range2   # create double sided range on stack, -A, 1-A, ... A-1, A
digit0   # prefix argument to 'cart', 
cart     # cartesian product of current stack(0), and other stack(0)
while    # while stack not empty
  sqr    # pop and square and push
  swap   # swap two stack elements
  sqr    # pop and square and push
  add    # pop and pop and add and push
  pushA  # push original argument
  equal  # equality test 0/1
  popAddZ  # Z := Z + pop
endwhile
pushZ    # push Z onto stack, will be output to stdout on termination

2

সিজেম, 28

qi_mF{3a>},{~)\4%2-&}%4+:*1?

আসলেই সংক্ষিপ্ত নয়, তবে দক্ষ। উদাহরণস্বরূপ 15625-এর ফলাফলটি তাত্ক্ষণিকভাবে 28. ওইআইএসের ফ্যাক্টরাইজেশন-ভিত্তিক সূত্র ব্যবহার করে।
এটি অনলাইনে চেষ্টা করুন

ব্যাখ্যা:

qi       read input and convert to integer
_        make a copy (will be used to handle the 0 case at the end)
mF       factorize into [prime exponent] pairs
{…},     filter the array of pairs
  3a>    with the condition that the pair is greater than [3]
          which means the prime factor must be ⩾3
{…}%     transform each pair as follows:
  ~      dump the prime factor and exponent onto the stack
  )      increment the exponent
  \      swap with the prime
  4%     get the remainder mod 4 (it will be 1 or 3)
  2-     subtract 2 (resulting in -1 or 1)
  &      bitwise AND with the incremented exponent (see below)
4+       append a 4 to the array
:*       multiply all
1?       if the input was 0, use 1, else use the above result

গণনা সম্পর্কে কিছু বিশদ:

  • যদি প্রাইম 1 মডার 4 হয় তবে কোড গণনা করে (exponent + 1) & -1যাexponent + 1
  • প্রাইমটি যদি 3 মড 4 হয় তবে কোড গণনা করে (exponent + 1) & 1, যা 0, ঘনিষ্টরটি বিজোড় হলে এবং 1 এমনকি হয়

এই সমস্ত মান একসাথে গুণিত হয়েছে এবং 4 দ্বারা গুণিত হ'ল OEIS সূত্র।


2

পাইথন 2, 68 বাইট

def x(n):r=range(-n,n+1);print sum(a*a+b*b==n for a in r for b in r)

নামক একটি ফাংশন সংজ্ঞা দেয় যা x()একটি সংখ্যা নেবে।

এটি অনলাইনে চেষ্টা করুন। http://ideone.com/aRoxGF


আপনি একটি printবা returnবিবৃতি অনুপস্থিত ।
Zgarb

ধন্যবাদ, আমি পুরোপুরি ভুলে গেছি লিঙ্কটি মুদ্রণ বিবৃতি যদিও আছে। আমি কোডটি তৈরি করার সময় আমার কোডটি সম্পাদনা করেছি।
Rɪᴋᴇʀ

ঠিক আছে চিন্তা কর না. তবে এটিও এর জন্য n=0এবং n=1(1 এবং 4 এর পরিবর্তে 0 এবং 2) ফলাফল দেয় বলে মনে হয় । হতে পারে পরিসীমা সীমা সামঞ্জস্য করা প্রয়োজন?
Zgarb

@ জগারব হ্যাঁ, তাদের এখানেই শেষ হওয়া উচিত n+1
lirtosiast

1
আমি এটি সন্ধান করব।
Rɪᴋᴇʀ

2

পাইথ, 41 35 33 30 27 বাইট

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

সম্পাদনা: আইএএসএজিগকে ধন্যবাদ , আমি পেয়েছি mএবং *Fকাজ করার জন্য! হ্যাঁ!

?Q*F+4m.&tt%ed4hhdr-PQ2 8 1
                                (implicit) Q = input()
?Q                              If Q != 0
      m                           Map to d (exponent, prime) from ...
                  r-PQ2 8         run-length-encoded(PQ with 2's removed)
       .&                           Bitwise and
           %ed4                       d[-1] % 4
         tt                           -2
                hd                  with d[0]
               h                      +1
    +4                            Append 4 to the resulting array
  *F                              Then multiply it all together
                          1     Else 1

সম্পাদনা করুন: আরও বাইট সঞ্চয় করার জন্য বিটওয়াস এবং পিছনে রাখুন! এছাড়াও আমি সমস্ত "পূর্ববর্তী" স্টাফ সরিয়েছি। এটি বিশৃঙ্খলা শুরু হয়েছিল।

ধন্যবাদ aditsu ও তার CJam সমাধান, এবং maltysen ও তার টিপস (একদিন আমি পাবেন m*Fdকাজ। একদিন ...)

J4Vr-PQ2 8=J*J.&tt%eN4hhN;?QJ1
                                (implicit) Q=input()
J4                              J=4
    -PQ2                        Remove all 2's from the prime factorization of Q
   r     8                      run-length encode (exponent, prime factor)
  V                      ;      For N in range( the above ):
          =J*J                      J = J * ...
                tt%eN4                N[-1] mod 4 -2 
                      hhN             (exponent + 1)
              .&                    bitwise and
                          ?QJ1  if Q != 0 print(J) else print(1)

মনে রাখবেন যে,

  • যদি প্রাইমটি 1 মড 4 হয় তবে আমরা পাই -1 & (exponent + 1)যা হয়exponent + 1

  • তবে প্রাইমটি যদি 3 মড 4 1 & (exponent + 1)হয় 0তবে আমরা পাই , যা হ'ল বেদনা বিজোড় এবং 1যদি হয়

এগুলিকে একসাথে গুণ করুন (শুরুতে 4 বার) এবং আমরা আমাদের ইনপুটকে যুক্ত করে এমন দুটি স্কোয়ারের সংখ্যার সংখ্যা পাই।


2

পাইথন, 57 বাইট

দুর্দান্ত চ্যালেঞ্জ। দুর্ভাগ্যক্রমে আমি এই মুহুর্তে এর চেয়ে ছোট পাচ্ছি না।

lambda n:0**n+sum(2-d%4for d in range(1,n+1)if d%2>n%d)*4

2

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

উত্পাদক ফাংশন ব্যবহার করে:

মিচ শোয়ার্জকে ধন্যবাদ 6 বাইট সংরক্ষণ করা ।

n->sum(i=-n,n,x^i^2)^2\x^n%x

বিল্ট-ইনগুলি ব্যবহার করে, 33 বাইট ( মিচ শোয়ার্জকে 1 বাইট সংরক্ষণ করা হয়েছে )):

n->if(n,2*qfrep(matid(2),n)[n],1)

qfrep (q, B, {ফ্ল্যাজ = 0}): সংখ্যাকাল এবং সুনির্দিষ্ট চতুষ্কোণ রূপের জন্য 1 থেকে বি পর্যন্ত নিয়মের ভেক্টরের সংখ্যা (অর্ধেক) এর ভেক্টর Q। পতাকা যদি 1 হয়, 1 থেকে 2 বি পর্যন্ত সমমানের ভেক্টরগুলি গণনা করুন।



matid(2)একটি বাইট সংরক্ষণ করে।
মিচ শোয়ার্টজ

1
উত্পাদিত ফাংশন পদ্ধতির জন্য এবং নীচে 28-এ চলে যান:n->sum(i=-n,n,x^i^2)^2\x^n%x
মিচ শোয়ার্জ

1

মতলব, 72 বাইট

n=input('');m=fix(sqrt(n));m=(-m:m).^2;disp(nnz(bsxfun(@plus,m,m')==n))


@ স্টেভিগ্রিফিন ধন্যবাদ! তবে এক্ষেত্রে এটি একটি প্রোগ্রাম, কোনও ফাংশন নয়। সুতরাং আপনার লিঙ্কে গৃহীত উত্তর অনুযায়ী এটি প্রয়োজন, তাই না?
লুইস মেন্ডো

1

মতলব, 63 50 বাইট

@(y)nnz(~mod(sqrt(y-power((1:sqrt(y)),2)),1))*4+~y

  • এটি অন্যান্য একই-এনটাইটেল কোডকে পরাজিত করে, এইভাবে আমি এটি রেখেছি: ডি।

  • প্রোগ্রামটি ইতিবাচক পূর্ণসংখ্যার সমাধানগুলি সন্ধান করে তারপরে negativeণাত্মক বিষয়গুলি অন্তর্ভুক্ত করতে 4 দিয়ে গুণ করে।

  • এটি সমস্ত 25 প্রথম পরীক্ষার কেস সম্পাদন করতে পারে

    for i=1:25 ans(i)
    end
    
       1
    
       4
    
       4
    
       0
    
       4
    
       8
    
       0
    
       0
    
       4
    
       4
    
       8
    
       0
    
       0
    
       8
    
       0
    
       0
    
       4
    
       8
    
       4
    
       0
    
       8
    
       0
    
       0
    
       0
    
       0
    
       12
    


ধন্যবাদ @ স্টিভি গ্রিফিন আমি এটিকে লুইসের সাথে সম্পর্কিত একটি ফেয়ার-গেম হিসাবে অন্তর্ভুক্ত করেছি
আব্র 001am

টিপস: আপনি যখন ম্যাটল্যাব থেকে ফলাফল পোস্ট করার পরিকল্পনা করছেন, ব্যবহার format compact=)
স্টিভি গ্রিফিন

1

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

n=prompt()
p=Math.pow
for (x=c=(+n?0:1);x<=n;x++)if(x&&p(n-p(x,2),.5)%1===0)c+=4
alert(c)

আমি জানি আমি / i লাইনগুলি সরিয়ে ফেললেও এটি জাভাস্ক্রিপ্টের সবচেয়ে কম উত্তর নয়, তবে আমি মনে করি এটি কয়েক মুহূর্তের মধ্যে দশ মিলিয়ন ফলাফল আমাকে প্রদানের সেরা পারফরম্যান্স জেএস উত্তর is মিনিট)।


আপনি === এর পরিবর্তে == ব্যবহার করতে পারেন?
lirtosiast

আমি পারলাম, স্রেফ সেরা অনুশীলন, হা হা।
অ্যাডাম ডেলি

1

পিএইচপি, 70 বাইট, প্রতিযোগিতা নয়

for($x=-1;$x++<=$n=$argv[1];)$s+=(-($n%($x-~$x)<1))**$x*4;echo$n?$s:1;

পাইথনের উত্তর থেকে চুরি করা অ্যালগরিদম উত্তর ... আমি ভুলে গিয়েছিলাম কোনটি; কমপক্ষে আংশিকভাবে বুঝতে চেয়েছিলাম যে আমি পোস্ট করার আগে কী হচ্ছে।


for(;$x<=$n=$argv[1];)$s+=(-($n%(2*$x+1)<1))**$x++*4;echo$n?$s:1;5 টি বাইট সাশ্রয় করে। $x-~$xসমান 2*$x+1এবং আপনি এখন ভেরিয়েবল বরাদ্দ না করে শুরু করতে পারেন।
জার্গ হালসারম্যান
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.