ত্রিভুজাকার স্কোয়ার নম্বর


11

স্কোয়ার সংখ্যাগুলিn^2 হ'ল n যেখানে পূর্ণসংখ্যা হয় সেখানে রূপ নেয় । এগুলিকে নিখুঁত স্কোয়ারও বলা হয়, কারণ আপনি যখন তাদের বর্গমূল গ্রহণ করবেন আপনি পূর্ণসংখ্যা পাবেন।

প্রথম 10 বর্গ সংখ্যা: ( ওইআইএস )

0, 1, 4, 9, 16, 25, 36, 49, 64, 81


ত্রিভুজীয় সংখ্যার নম্বর একটি সমবাহু ত্রিভুজ গঠন করতে পারেন আছে। N-th ত্রিভুজ সংখ্যাটি 1 থেকে n পর্যন্ত সমস্ত প্রাকৃতিক সংখ্যার যোগফলের সমান।

প্রথম দশটি ত্রিভুজাকার সংখ্যা হ'ল : ( ওইআইএস )

0, 1, 3, 6, 10, 15, 21, 28, 36, 45


বর্গাকার ত্রিভুজাকার সংখ্যাগুলি এমন সংখ্যা যা দুটি বর্গ এবং ত্রিভুজাকৃতির।

প্রথম 10 বর্গাকার ত্রিভুজাকার সংখ্যাগুলি: ( ওইআইএস )

0, 1, 36, 1225, 41616, 1413721, 48024900, 1631432881, 55420693056, 1882672131025, 63955431761796


বর্গ সংখ্যা, ত্রিভুজ সংখ্যা এবং বর্গাকার ত্রিভুজাকার সংখ্যাগুলির একটি অসীম সংখ্যা।

এমন একটি প্রোগ্রাম লিখুন বা একটি ফাংশন নামক একটি ইনপুট (পরামিতি বা স্টিডিন) নম্বর দিয়েছে n, nতম বর্গ ত্রিভুজাকার সংখ্যা গণনা করে এবং আউটপুটগুলি / ফেরত দেয়, যেখানে এনটি ধনাত্মক ননজারো সংখ্যা। (এন = 1 রিটার্ন 0 এর জন্য)

প্রোগ্রাম / ফাংশনটি বৈধ জমা দেওয়ার জন্য এটি কমপক্ষে সমস্ত স্কোয়ার ত্রিভুজ সংখ্যা 2 ^ 31-1 এর চেয়ে কম আকারে ফিরিয়ে দিতে সক্ষম হওয়া উচিত।

বোনাস

2 ^ 63-1 এর চেয়ে কম বর্গাকার ত্রিভুজাকার সংখ্যাগুলি আউটপুট দিতে সক্ষম হওয়ার জন্য -4 বাইট

তাত্ত্বিকভাবে যে কোনও আকারের বর্গাকার ত্রিভুজাকার সংখ্যাকে আউটপুট করতে সক্ষম হওয়ার জন্য -4 বাইট

অ-পোলিওনোমিয়াল সময় নেয় এমন সমাধানগুলির জন্য +8 বাইট জরিমানা।

বোনাসস স্ট্যাক

এটি কোড-গল্ফ চ্যালেঞ্জ, সুতরাং সবচেয়ে কম বাইটের সাথে উত্তরটি জিতল।


যারা দ্রষ্টব্য কোডের দিকে লক্ষ্য রাখেন তাদের জন্য এটিকে আরও সুষ্ঠু করার জন্য> ও (এন) সময় লাগে এমন সমাধানগুলির জন্য আমি একটি 8 বাইট জরিমানা যুক্ত করেছি।
রডলফিটো

@ রোলডলভার্টিস আমার মনে হয় না আপনি লিনিয়ার সময় বোঝাচ্ছেন। আমার পুনরাবৃত্তির সমাধানটি দ্বিখণ্ডিত সময় কারণ এখানে nপদক্ষেপ রয়েছে এবং প্রতিটি ধাপে পাটিগণিত লিনিয়ার সময় নেয় কারণ সংখ্যার সংখ্যা লৈখিকভাবে বৃদ্ধি পায় n। আমি মনে করি না যে লিনিয়ার সময় সম্ভব। যদি না আপনি পাটিগণিতের অপারেশনগুলি ধ্রুবক সময় বলে থাকেন?
xnor

1
@ রোডলভার্টাইস মানে আমার পুনরুক্তি সমাধানটি ও (এন) নয়। আমি মনে করি যে ক্লিনারটি করণীয় হ'ল তার পরিবর্তে "বহুবর্ষের সময়" বলা। আপনি যদি লিনিয়ার সময় গাণিতিক অনুমান করেন, আপনি এক্সটেনসিটিশন ব্যবহার করে সমাধানের মতো অদ্ভুত জিনিসগুলি ধ্রুবক সময় বলে ডাকা হয়। এমওরটিজেশন এখানে কার্যকর হয় না।
xnor


2
"প্রথম 10 বর্গাকার ত্রিভুজাকার সংখ্যা ..." নিশ্চয় আপনি 11 বোঝাতে চেয়েছিলেন? : পি
অ্যালেক্স এ।

উত্তর:


8

সিজেম, 12 8 বাইট

XUri{_34*@-Y+}*;

উইকিপিডিয়া নিবন্ধ থেকে পুনরাবৃত্তি সম্পর্ক ব্যবহার করে।

কোডটি 16 বাইট দীর্ঘ এবং উভয় বোনাসের জন্য যোগ্যতা অর্জন করে।

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

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

আমার কোডটি সর্বদা প্রতিটি দিকের মধ্যে xnor এর সাথে অভিন্ন হয়ে উঠেছে, আমি পরিবর্তকগুলির পরিবর্তে সিজেমের স্ট্যাক ব্যবহার করি।

XU               e# Push 1 and 0 on the stack.
                 e# Since 34 * 0 - 1 + 2 = 1, this compensates for 1-based indexing.
  ri{        }*  e# Do int(input()) times:
     _34*        e#   Copy the topmost integer and multiply it by 34.
         @-      e#   Subtract the bottommost integer from the result.
           Y+    e#   Add 2.
               ; e# Discard the last result.

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

@ রোলডলভার্টিস: আমি পুনরাবৃত্তি পদ্ধতির দিকে চলে এসেছি এটি আসলে খাটো এবং এটি স্মৃতিশক্তি কম হয়।
ডেনিস

8

পাইথন 2, 45 - 4 - 4 = 37

a=1;b=0
exec"a,b=b,34*b-a+2;"*input()
print a

পুনরুদ্ধার ব্যবহার করে আইট্রেটস

f(0) = 1
f(1) = 0
f(k) = 34*f(k-1)-f(k-2)+2

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

1185827220993342542557325920096705939276583904852110550753333094088280194260929920844987597980616456388639477930416411849864965254621398934978872054025

একটি পুনরাবৃত্ত সমাধানে 41 টি অক্ষর ব্যবহার করা হয় তবে এটি যোগ্য হওয়া উচিত নয় কারণ এটি ক্ষতিকারক সময় নেয়।

f=lambda k:k>2and 34*f(k-1)-f(k-2)+2or~-k

এটি বেশ প্রতারণাপূর্ণ, স্ট্রিং গুণ দ্বারা একটি 'লুপ', হাহা।
রডলফিটো

@ রোলডলভার্টাইস: আসলেই মোটেই ঠকানো নয়। বরং চতুর, এবং সত্যই সাইটে সাইটে মোটামুটি সাধারণ।
অ্যালেক্স এ

আমি বিশ্বাস করি যে আপনার পুনরাবৃত্ত সমাধানটি বোনাস # 1 এর জন্য যোগ্যতা অর্জন করে, যা execসমাধানের সাথে এটি যুক্ত করে। যদি আপনাকে পুনরাবৃত্তি সীমা পরিবর্তন করার অনুমতি দেওয়া হয়, তবে এটি # 2 এর জন্য যোগ্যতা অর্জন করে যে কোনও আকারের বর্গাকার ত্রিভুজ সংখ্যা গণনা করতে পারে। তবে, আমি নিশ্চিত নই যে এটি যোগ্যতা অর্জন করে কিনা (@ রোডলভার্টিস)।
কেদে

7

পাইথ, 16 - 4 - 4 = 8 বাইট

ওইআইএস নিবন্ধ থেকে পুনরাবৃত্ত সূত্র ব্যবহার করে।

K1uhh-*34G~KGtQZ

এটি পোস্ট-অ্যাসাইনড কমান্ডটি ব্যবহার করে যা বেশ নতুন এবং সত্যিই দুর্দান্ত। n-11-ভিত্তিক সূচকের কারণে পুনরাবৃত্তি বার ব্যবহার করে ।

K1            Set K=1
u       tQ    Reduce input()-1 times
         Z    With zero as base case
 hh            +2
  -           Subtract
   *34G       34 times iterating variable
   ~K         Assign to K and use old value
    G         Assign the iterating variable.

বহুবর্ষীয় বলে মনে হচ্ছে কারণ এটি বারবার গণিত করে এবং প্রতিটি পুনরাবৃত্তিকে অ্যাসাইনমেন্ট করে তবে আমি কম্পিউটার বিজ্ঞানী নই। প্রায় তত্ক্ষণাত্ n = 10000 সমাপ্ত।

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


আমি মনে করি আপনি যদি কোনও পুনরাবৃত্তি 1,0 এর পরিবর্তে 0,1 এ শুরু করেন তবে আপনি ইনপুট থেকে 1 টি বিয়োগ করা এড়াতে পারবেন - আমার পাইথন উত্তরটি দেখুন।
xnor

@ এক্সনর: আমি মনে করি তিনি ইতিমধ্যে এটি করেছেন। যাইহোক, লুপ দ্বারা ফিরে ফলাফল আপনার হয় b
ডেনিস

5

ওসিস , 7 - 4 - 4 = -1 (অ-প্রতিযোগী)

34*c-»T

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

ব্যবহারসমূহ a(0) = 0, a(1) = 1; for n >= 2, a(n) = 34 * a(n-1) - a(n-2) + 2

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

প্রতিযোগিতামূলক নয় কারণ ভাষা পোস্টডেটস চ্যালেঞ্জ করে।

ব্যাখ্যা:

34*c-»T -> 34*c-»10

a(0) = 0
a(1) = 1
a(n) = 34*c-»

34*c-»
34*    # 34*a(n-1)
   c-  # 34*a(n-1)-a(n-2)
     » # 34*a(n-1)-a(n-2)+2

বিকল্প সমাধান:

-35*d+T

পরিবর্তে ব্যবহার a(n) = 35*(a(n-1)-a(n-2)) + a(n-3)


প্রশ্নটি বলে For n=1 return 0, তবে এটি 1 প্রদান করে 1. এটি -O বিকল্পটি যুক্ত করে স্থিরযোগ্য
গ্রিমি

4

জাভাস্ক্রিপ্ট (ES6), 29-4 = 25 বাইট

n=>n>1?34*f(n-1)-f(n-2)+2:n|0

@ ইসমাইলমিগুয়েলকে 5 টি বাইট সংরক্ষণ করা হয়েছে !

অসীম পুনরাবৃত্তি এড়াতে আমাকে 0, 1 এবং নেতিবাচকদের হার্ডকোড করতে হয়েছিল।

কনসোল, আমি ফাংশনটির নাম দিয়েছি f,:

f(1);  // 0
f(13); // 73804512832419600
f(30); // 7.885505171090779e+42 or 7885505171090779000000000000000000000000000

সম্পাদনা : জাভাস্ক্রিপ্ট সংখ্যা 16 (15) ডিজিট (স্পেস) এর সাথে গোল করবে কারণ এই সংখ্যাগুলি খুব বেশি একটি অতিরিক্ত প্রবাহের কারণ। আপনার জাভাস্ক্রিপ্ট কনসোলে 714341252076979033 দিন এবং নিজের জন্য দেখুন। এটি জাভাস্ক্রিপ্টের সীমাবদ্ধতার বেশি


আমি মনে করি না এটি বোনাসের জন্য যোগ্যতা অর্জন করে। f(15)ফিরে আসা উচিত 85170343853180456676, না 85170343853180450000
ডেনিস

@ ডেনিস জাভাস্ক্রিপ্ট অবশ্যই এটি ছাঁটাই করা উচিত। .-। হ্যাঁ, জাভাস্ক্রিপ্টটি 16 ডিজিটের দিকে
ঘুরবে

এটি ব্যবহার করে দেখুন: n=>n?n<2?0:34*f(n-1)-f(n-2)+2:1(31 বাইট) আমি ৫ ম নম্বর পর্যন্ত পরীক্ষা করেছি।
ইসমাইল মিগুয়েল

1
এখানে আপনি এখন একটি 29 বাইট দীর্ঘ সমাধান আছে: n=>n>1?34*f(n-1)-f(n-2)+2:!!n। এটা তোলে ফেরৎ falseউপর 0, trueউপর 1এবং 36উপর 2। আপনি যদি এটি কোনও নম্বর ফিরিয়ে দিতে চান তবে আপনি এটির !!nসাথে প্রতিস্থাপন করতে পারেন +!!n
ইসমাইল মিগুয়েল

1
সমস্যা স্থির। এটি ব্যবহার করুন: n=>n>1?34*f(n-1)-f(n-2)+2:n|0(একই বাইট গণনা, এখন সর্বদা সংখ্যা ফিরে আসে)
ইসমাইল মিগুয়েল

3

এক্সেল ভিবিএ - 90 বাইট

উইকিপিডিয়া পৃষ্ঠা থেকে পুনরাবৃত্তি সম্পর্ক ব্যবহার করে:

n = InputBox("n")
x = 0
y = 1
For i = 1 To n
Cells(i, 1) = x
r = 34 * y - x + 2
x = y
y = r
Next i

যখন মৃত্যুদন্ড কার্যকর করা হয় আপনাকে এন এর জন্য অনুরোধ জানানো হবে, তারপরে এন পর্যন্ত এবং এর সাথে অনুক্রমটি কলাম এ এর ​​আউটপুট হবে:

আউটপুট

এটি একটি ওভারফ্লো ত্রুটি দেওয়ার আগে এন = 202 পর্যন্ত চালানো যায়।


2

[প্রতিযোগিতা নয়] পাইথ (14 - 4 - 4 = 6 বাইট)

K1u/^tG2~KGQ36

থেকে প্রথম পুনরাবৃত্তি ব্যবহৃত OEIS , যে 0,1,36 পরে আপনি একটি জানতে পারেন এন = (একটি এন -1 -1) 2 / এ এন-2 । একটি প্রতিযোগিতামূলক নয় কারণ এই সমাধানটি 36 থেকে শুরু হয়, আপনি যদি নীচে যান তবে শূন্য দ্বারা বিভাজন করুন (সুতরাং 0 এর ইনপুটটি 36 দেয়)। এছাড়াও হার্ডকোড 36 ছিল।

এখানে চেষ্টা করুন


2

জাভা, 53 - 4 = 49 বাইট

এটি অন্য একটি সাধারণ পুনরাবৃত্তি, তবে আমি প্রায়শই <50 স্কোর সহ জাভা পোস্ট করতে পারি না, তাই ...

long g(int n){return n<2?n<1?1:0:34*g(n-1)-g(n-2)+2;}

এখন, অ- প্রত্যাহারযোগ্য কোনও কিছুর জন্য, এটি বেশ খানিকটা দীর্ঘ হয়ে যায়। এটি উভয়ই দীর্ঘ (112-4 = 108) - এবং ধীর - সুতরাং আমি নিশ্চিত নই যে আমি কেন কিছু পোস্টের ব্যতীত তা পোস্ট করছি:

long f(int n){long a=0,b,c,d=0;for(;a<1l<<32&n>0;)if((c=(int)Math.sqrt(b=(a*a+a++)/2))*c==b){d=b;n--;}return d;}

2

জুলিয়া, 51 বাইট - 4 - 4 = 43

f(n)=(a=b=big(1);b-=1;for i=1:n a,b=b,34b-a+2end;a)

এটি বর্গাকার ত্রিভুজাকার সংখ্যার জন্য উইকিপিডিয়া পৃষ্ঠায় তালিকাভুক্ত প্রথম পুনরাবৃত্তির সম্পর্ক ব্যবহার করে। এটি 0.006 সেকেন্ডে n = 1000 এবং 6.93 সেকেন্ডে n = 100000 গণনা করে । এটি কয়েক বাইট একটি recursive সমাধান বেশি দীর্ঘ হওয়ার কিন্তু এটা উপায় দ্রুত।

অবহেলিত + ব্যাখ্যা:

function f(n)
    # Set a and b to be big integers
    a = big(1)
    b = big(0)

    # Iterate n times
    for i = 1:n
        # Use the recurrence relation, Luke
        a, b = b, 34*b - a + 2
    end

    # Return a
    a
end

উদাহরণ:

julia> for i = 1:4 println(f(i)) end
0
1
36
1225

julia> @time for i = 1:1000 println(f(i)) end
0
... (further printing omitted here)
elapsed time: 1.137734341 seconds (403573226 bytes allocated, 38.75% gc time)

2

পিএইচপি, 65 59 56-4 = 52 বাইট

while($argv[1]--)while((0|$r=sqrt($s+=$f++))-$r);echo$s;

বর্গমূল পর্যন্ত পুনরাবৃত্তি $s∈ℤ হল: অ্যাড $fসমষ্টি $s, বৃদ্ধি $f;
পুনরাবৃত্তি $argv[1]বার।
আউটপুট যোগফল


1

প্রোলগ, 70 74 - 4 - 4 = 66

n(X,R):-n(X,0,1,R).
n(X,A,B,R):-X=0,R=A;Z is X-1,E is 34*B-A+2,n(Z,B,E,R).

চলমান n(100,R)আউটপুট:

X = 40283218019606612026870715051828504163181534465162581625898684828251284020309760525686544840519804069618265491900426463694050293008018241080068813316496

n(10000,X)আমার কম্পিউটারে চালাতে প্রায় 1 সেকেন্ড সময় নেয় ।

সম্পাদনা : 66 version সংস্করণটি পুচ্ছ-পুনরাবৃত্ত হয়। পূর্ববর্তী অ-পুচ্ছ-পুনরাবৃত্ত সংস্করণটি নিম্নলিখিত:

n(X,[Z|R]):-X>1,Y is X-1,n(Y,R),R=[A,B|_],Z is 34*A-B+2;X=1,Z=1,R=[0];Z=0.

বাইটে তাদের সমান দৈর্ঘ্য রয়েছে তবে অ-লেজ-পুনরাবৃত্ত একটি নির্দিষ্ট পয়েন্ট (আমার কম্পিউটারে, প্রায় 20500 এর কাছাকাছি) পেরিয়ে স্ট্যাক ওভারফ্লো উত্পন্ন করে।


1

জাভাস্ক্রিপ্ট ES6, 77 75 71 অক্ষর

// 71 chars
f=n=>{for(q=t=w=0;n;++q)for(s=q*q;t<=s;t+=++w)s==t&&--n&console.log(s)}

// No multiplication, 75 chars
f=n=>{for(s=t=w=0,q=-1;n;s+=q+=2)for(;t<=s;t+=++w)s==t&&--n&console.log(s)}

// Old, 77 chars
f=n=>{for(s=t=w=0,q=-1;n;s+=q+=2){for(;t<s;t+=++w);s==t&&--n&console.log(s)}}
  • সমাধানটি লিনিয়ার।
  • সমাধান সংখ্যার ধরণের কারণে 2 ^ 53 এর চেয়ে কম কম পরে সমস্ত সংখ্যা আউটপুট করতে পারে।
  • অ্যালগরিদম নিজেই সীমাহীন সংখ্যার জন্য ব্যবহার করা যেতে পারে।

টেস্ট:

f(11)

0
1
36
1225
41616
1413721
48024900
1631432881
55420693056
1882672131025
63955431761796


1

জেলি , 13 - 8 = 5 বাইট

এটি উভয় বোনাসের জন্য যোগ্যতা অর্জন করে।

×8‘,µÆ²Ạ
0Ç#Ṫ

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

পাশাপাশি সম্পন্ন caird coinheringaahing মধ্যে চ্যাট

ব্যাখ্যা

× 8 ', µÆ²Ạ ~ সহায়ক লিঙ্ক।

× 8 ~ 8 বার সংখ্যা।
  'Ment বৃদ্ধি।
   , ~ বর্তমান সংখ্যার সাথে যুক্ত।
    ~ a একটি নতুন monadic (1-arg) লিঙ্ক শুরু করে।
     ~ ~ ভেক্টরাইজড "ইস স্কয়ার?"
       ~ সব। উভয় সত্যবাদী হলেই 1 প্রত্যাবর্তন করুন।



0Ç # Ṫ ~ মূল লিঙ্ক।

0 # 0 থেকে শুরু করে, প্রয়োগ করা হলে, সত্যবাদী ফলাফলের সাথে প্রথম এন পূর্ণসংখ্যা সংগ্রহ করুন:
 Mon mon একটি মোনাদ হিসাবে শেষ লিঙ্ক।
   ~ ~ শেষ উপাদান। সুস্পষ্টভাবে আউটপুট।



0

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

r←f w;c;i;m
c←0⋄i←¯1⋄r←⍬
→2×⍳0≠1∣√1+8×m←i×i+←1⋄r←r,m⋄→2×⍳w>c+←1

পরীক্ষা:

  f 10
0 1 36 1225 41616 1413721 48024900 1631432881 55420693056 1882672131025 

চ, ত্রিভুজ সংখ্যাগুলির উপাদানগুলিও চতুর্ভুজ ক্রমের সন্ধান করবে, সুতরাং এপিএলগুলিতে তাদের ত্রিভুজাকার চেক সূত্রটি অনুসরণ করতে হবে: চেক করতে এম নম্বর সহ 0 = 1∣√1 + 8 × মি।

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