ত্রিভুজাকার নির্ভরতা


25

একটি ত্রিকোণ সংখ্যা একটি সংখ্যা সমষ্টি যে n1 থেকে স্বাভাবিক সংখ্যার n। উদাহরণস্বরূপ 1 + 2 + 3 + 4 = 10তাই 10একটি ত্রিভুজাকার সংখ্যা।

একটি ইতিবাচক পূর্ণসংখ্যা দেওয়া ( 0 < n <= 10000) ইনপুট হিসাবে (একটি পূর্ণসংখ্যা হিসাবে নেওয়া যেতে পারে, বা একটি স্ট্রিং হিসাবে), আরও ত্রিভুজাকার সংখ্যা তৈরি করতে ইনপুটটিতে যুক্ত করা যেতে পারে এমন সবচেয়ে ছোট সম্ভাব্য ত্রিভুজাকার সংখ্যাটি প্রদান করুন।

উদাহরণস্বরূপ প্রদত্ত ইনপুট 26, 10ফলাফল যুক্ত করা 36, যা ত্রিভুজাকার সংখ্যাও। এর চেয়ে কম ত্রিভুজাকার সংখ্যা নেই 10যা 26অন্য ত্রিভুজাকার সংখ্যা তৈরি করতে যুক্ত করা যায়, তাই 10এই ক্ষেত্রে সঠিক ফলাফল।

0 একটি ত্রিভুজাকার সংখ্যা, অতএব যদি ইনপুটটি নিজেই ত্রিভুজাকার সংখ্যা হয় তবে আউটপুট হওয়া উচিত 0

Testcases

কেসগুলি ফরম্যাটে দেওয়া হয় input -> output (resulting triangular number)

0     -> 0   (0)
4     -> 6   (10)
5     -> 1   (6)
7     -> 3   (10)
8     -> 28  (36)
10    -> 0   (10)
24    -> 21  (45)
25    -> 3   (28)
26    -> 10  (36)
34    -> 21  (55)
10000 -> 153 (10153)

স্কোরিং

এই তাই অল্পসংখ্যক পরিষেবা বাইট প্রতিটি ভাষার মধ্যে জিতেছে!


তাই না 26 -> 2?
Okx

@Okx আমি একই ভুল করেছেন, আপনি একটি বের করতে হবে ত্রিদলীয় বর্তমান পরস্পর ত্রিদলীয় সংখ্যা করতে জুড়তে সংখ্যা।
মার্টিন ইন্ডার

2
সম্পর্কিত। (বর্ডারলাইন সদৃশ)
মার্টিন ইন্ডার

উত্তর:


21

জাভা 8, 58 57 বাইট

n->{int i=0,m=0;while(n!=0)n+=n<0?++i:--m;return-~i*i/2;}

অনলাইন পরীক্ষা স্যুট

1 বাইট সংরক্ষণের জন্য ডেনিসকে ধন্যবাদ ।


6
এখন এই জাভা, গল্ফড! :)
অলিভিয়ার গ্রোগোয়ার

4
@ কমপোট্রোনিয়াম, অপারেশনের ক্রমটি জাভা ল্যাঙ্গুয়েজ স্পেসিফিকেশন দ্বারা গ্যারান্টিযুক্ত । জাভা ইচ্ছাকৃতভাবে সি এর কিছু দুর্বলতা এড়িয়ে চলেছে
পিটার টেলর


2
return-~i*i/2;একটি বাইট সংরক্ষণ করে।
ডেনিস

1
@ অক্স জাভা হ'ল আদিম ধরণের জন্য পাস-বাই-মান এবং অবজেক্টের (অ্যারে সহ) পাস-বাই-রেফারেন্স। আপনি যদি একই ভেরিয়েবলটিতে প্রকৃতপক্ষে আউটপুট দিতে চান তবে আপনাকে পাস-বাই-রেফারেন্স প্রসঙ্গে থাকতে হবে (স্পষ্টভাবে আপনার লিঙ্কে বলা হয়েছে)। আমি কাজ করতে পারি বলে বাই-রেফারেন্সটি দেখতে পাবার একমাত্র উপায় হ'ল আর্গুমেন্টের int[]পরিবর্তে একটি পাস করা int। তবে এর অর্থ পরে অ্যারেগুলি নিয়ে কাজ করা। এটি কাজ করতে পারে: x->{int i=0,m=0,n=x[0];while(n!=0)n+=n<0?++i:--m;x[0]=-~i*i/2;}তবে এটি 63 বাইট।
অলিভিয়ার গ্রাগোয়ার

7

এমএটিএল , 13 12 বাইট

Emigna এর 05AB1E উত্তর থেকে একটি ধারণা (সেট ছেদ) ব্যবহার করে 1 বাইট সরানো হয়েছে

Q:qYstG-X&X<

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

ব্যাখ্যা

দিন t(n) = 1 + 2 + ··· + nবোঝাতে n-th ত্রিদলীয় সংখ্যা।

কোডটি এই সত্যটিকে কাজে লাগায় যে, প্রদত্ত n, সমাধানটি উপরের-সীমানা দ্বারা আবদ্ধ t(n-1)। এটি দেখতে, এটি t(n-1) + nসমান t(n)এবং এটি ত্রিভুজাকার সংখ্যা হিসাবে পর্যবেক্ষণ করুন ।

8উদাহরণ হিসাবে ইনপুট বিবেচনা করুন ।

Q:q   % Input n implicitly. Push [0 1 2 ... n]
      % STACK: [0 1 2 3 4 5 6 7 8]
Ys    % Cumulative sum
      % STACK: [0 1 3 6 10 15 21 28 36]
t     % Duplicate
      % STACK: [0 1 3 6 10 15 21 28 36], [0 1 3 6 10 15 21 28 36]
G-    % Subtract input, element-wise
      % STACK: [0 1 3 6 10 15 21 28 36], [-8 -7 -5 -2  2  7 13 20 28]
X&    % Set intersection
      % STACK: 28
X<    % Minimum of array (in case there are several solutions). Implicit display
      % STACK: 28

Qসীমাবদ্ধতা সম্পর্কে আপনার যুক্তি দ্বারা আপনি নেতৃস্থানীয় অপসারণ করতে পারেন ?
জিউসেপে

@ জিউসেপ নো, এটি ইনপুটটির জন্য ব্যর্থ 8। যখন আউটপুট বাউন্ডের সমান হয় t(n-1), কোডটি এটি হিসাবে প্রাপ্ত হয় t(n)-n। তাই t(n)প্রয়োজনীয়। যাইহোক ধারণা জন্য ধন্যবাদ!
লুইস মেন্ডো

7

জাভা (ওপেনজেডিকে 8) , 83 বাইট

n->{int m=0,a=n,b;for(;a-->0;)for(b=0;b<=n;)m=2*n+b*~b++==a*~a?a*a+a:m;return m/2;}

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

ক্রেডিট


1
সুন্দর উত্তর (সর্বদা হিসাবে ..)। আমার পোস্ট করার সময় ইতিমধ্যে জাভা উত্তর আছে তা লক্ষ্য করা যায়নি .. আমার প্রাথমিকভাবে খাটো ছিল, তবে আর তা মনে হয় না। :)
কেভিন ক্রুইজসেন

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

আমি এখনও বুঝতে পারি না এখানে কী ঘটছে। এটা কেন কাজ করছে? আপনি প্রতিবার মি প্রতিস্থাপন করছেন, তাহলে কি লাভ?
ভি। কুর্তোয়া

2
@ ভি.কোর্তোইস প্রশ্নটি সবচেয়ে ছোটটির জন্য জিজ্ঞাসা করে m। সুতরাং আমি aনিচে থেকে যেতে 0। "কিন্তু আপনি হয়তো 100 বার একই মান বরাদ্দ করছি a*a+aকরার mমধ্যে b-loop", হাঁ, আমি এটা 100 বার যা করতে হবে না, কিন্তু আমি ভঙ্গ না করে বাইট হত্তন করছি bআগের -loop।
অলিভিয়ার গ্রাগোয়ার

আমি @ অলিভিয়ারগ্রোওয়েরকে দেখতে পাচ্ছি। সুতরাং এটি উদ্দেশ্যবিরোধী: ডি
ভি.কোর্টস


4

নিম , 12 9 বাইট

tS𝕊Λt𝕚)0𝕔

এটি গণনা করতে খুব বেশি সময় নেয় (তবে অসীম সময় এবং স্মৃতি দিয়ে কাজ করে), সুতরাং লিঙ্কটিতে আমি কেবল প্রথম 143 ত্রিভুজাকার সংখ্যা উত্পন্ন করি - ব্যবহার করে £𝕖, যা 10,000 এর ইনপুট পরিচালনা করতে যথেষ্ট, তবে সময় বের হওয়ার পক্ষে যথেষ্ট নয়।

সতর্কতা: এটি ভবিষ্যতের সংস্করণগুলিতে কাজ করতে পারে না। যদি তা হয় তবে 143 এর বিকল্প £

ব্যাখ্যা:

t                 Infinite list of triangular numbers
 [ 𝕖]             Select the first  v  numbers
 [£ ]                              143
     S𝕊           Subtract the input from each element
       Λ  )       Only keep elements that are
        t𝕚          triangular
           0𝕔     Get the value closest to 0 - prioritising the higher number if tie

চেষ্টা করে দেখুন!


0 এবং 10000 এর মধ্যে কোনও ইনপুটের জন্য প্রথম 143 ত্রিভুজ সংখ্যাগুলি কীভাবে যথেষ্ট? ইনপুট সহ 9998, প্রত্যাশিত ফলাফলটি 3118753যা 143 ত্রি ত্রিভুজ সংখ্যার (যা 10296 ডলার) এর উপরে।
অলিভিয়ার গ্রাগোয়ার

@ অলিভিয়ারগ্রোগোয়ার কারণThis takes too long to compute (but works given infinite time and memory)
স্টিফেন

আপনাকে @ স্টেপহেন ধন্যবাদ জানাই তবে আমি যা বলেছিলাম তা তা নয়। আমি যেটা বুঝিয়েছি তা হল "প্রথম 143 ত্রিভুজাকার সংখ্যা [10,000] একটি ইনপুট হ্যান্ডেল করার জন্য যথেষ্ট" 10,000 এর বাক্যটি ভুল। আমি গণিতগুলি করি নি, তবে আমি বিশ্বাস করি যে 10000 পর্যন্ত মামলা পরিচালনা করতে আপনার প্রায় 10000 (দেওয়া বা নেওয়া) ত্রিভুজ নম্বর থাকা উচিত
অলিভিয়ের গ্রাগোয়ার

@ অলিভিয়ারগ্রোগোয়ার আমি বলেছি যে 10,000 এর ইনপুট পরিচালনা করতে এটি যথেষ্ট, তবে এর চেয়ে কোনও সংখ্যা কম নয়। £200 এর মতো উচ্চতর সংখ্যায় পরিবর্তন করতে নির্দ্বিধায় মনে করুন
Okx

@ ওকক্স ঠিক আছে, আমি যখন এটি প্রথম পড়ি তখন ব্যাখ্যা করার জন্য সময় দেওয়ার জন্য আপনাকে ধন্যবাদ জানতাম :)
অলিভিয়ার গ্রাগোয়ার

4

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

for(;!$$t;$t+=++$i)${$argn+$t}=~+$t;echo~$$t;

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

এর সংক্ষিপ্ত রূপটি for(;!$r[$t];$t+=++$i)$r[$argn+$t]=~+$t;echo~$r[$t];

সম্প্রসারিত

for(;!$$t;  # stop if a triangular number exists where input plus triangular number is a triangular number
$t+=++$i) # make the next triangular number
  ${$argn+$t}=~+$t; # build variable $4,$5,$7,$10,... for input 4 
echo~$$t; # Output result 

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

for(;$d=$t<=>$n+$argn;)~$d?$n+=++$k:$t+=++$i;echo+$n;

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

পিএইচপি 7 এ নতুন স্পেসশিপ অপারেটরটি ব্যবহার করুন

সম্প্রসারিত

for(;$d=$t<=>$n+$argn;) # stop if triangular number is equal to input plus triangular number 
  ~$d
    ?$n+=++$k  # raise additional triangular number
    :$t+=++$i; # raise triangular number sum
echo+$n; # Output and cast variable to integer in case of zero

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

for(;fmod(sqrt(8*($t+$argn)+1),2)!=1;)$t+=++$i;echo+$t;

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


4

জাভা 8, 110 102 100 93 92 বাইট

n->{int r=0;for(;t(r)<-t(n+r);r++);return r;}int t(int n){for(int j=0;n>0;n-=++j);return n;}

-২ বাইটস @ পিটারটেলরকে ধন্যবাদ ।
-7 ধন্যবাদ বাইট @JollyJoker
-1 বাইট @ সিলিংক্যাট ধন্যবাদ ।

ব্যাখ্যা:

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

n->{                  // Method with integer as parameter and return-type
  int r=0;            //  Result-integer (starting at 0)
  for(;t(r)<-t(n+r);  //  Loop as long as neither `r` nor `n+r` is a triangular number
    r++);             //   And increase `r` by 1 after every iteration
  return r;}          //  Return the result of the loop

int t(int n){         // Separate method with integer as parameter and return-type
                      // This method will return 0 if the input is a triangular number
  for(int i=0;n>0;)   //  Loop as long as the input `n` is larger than 0
    n-=++j;           //   Decrease `n` by `j` every iteration, after we've raised `j` by 1
  return n;}          //  Return `n`, which is now either 0 or below 0

1
জাভা সমাধানগুলি পড়ার পক্ষে সহজ :)
জলি জোকার

@ জলি জোকার সম্ভবত সে কারণেই এটি সবচেয়ে দীর্ঘতম। ;) বা এটি আমার যুক্ত ব্যাখ্যার কারণে?
কেভিন ক্রুইজসেন

নাহ, আমি কোডটি নিয়ে ভাবছিলাম। পিটার টেলরের সমাধান কীভাবে কাজ করে তা ভেবে আমি সম্ভবত 15 মিনিট ব্যয় করেছি। আপনার মন্তব্যগুলি ছাড়াই পরিষ্কার।
জলি জোকার


3

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

lambda n:min((r-2*n/r)**2/8for r in range(1,2*n,2)if n%r<1)

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

এটি ত্রিভুজাকার সংখ্যা পেতে tযোগ করার পরিবর্তে ত্রিভুজাকার সংখ্যার নিম্নলিখিত বৈশিষ্ট্য ব্যবহার করে n:

8*t+1 = (r-2*s)^2ভাজক বিদ্যমান জোড়া জন্য (r,s)সঙ্গে r*s==nএবং rবিজোড়।

কোডটি এই জাতীয় সমস্ত ত্রিভুজাকার সংখ্যার সর্বনিম্ন নেয়।


3

জেলি , 8 বাইট

0r+\ðf_Ḣ

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

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

0r+\ðf_Ḣ  Main link. Argument: n

0r        Build [0, ..., n].
  +\      Take the cumulative sum, generating A := [T(0), ..., T(n)].
    ð     Begin a dyadic chain with left argument A and right argument n.
      _   Compute A - n, i.e., subtract n from each number in A.
     f    Filter; keep only numbers of A that appear in A - n.
       Ḣ  Head; take the first result.

3

জাপট , 24 23 16 15 বাইট

ò å+
m!nNg)æ!øU

এটা পরীক্ষা করো

1 বাইট ETH ধন্যবাদ সংরক্ষণ করা


ব্যাখ্যা

    :Implicit input of integer U.
ò   :Create an array of integers from 0 to U, inclusive.
å+  :Cumulatively reduce by summing. Result is implicitly assigned to variable V.
m   :Map over U.
!n  :From the current element subtract...
Ng  :  The first element in the array of inputs (the original value of U).
æ   :Get the first element that returns true when...
!øU :  Checking if U contains it.
    :Implicit output of resulting integer.

আমি মনে করি আপনি এটি দিয়ে একটি বাইট সংরক্ষণ করতে পারেন æ!øV। এটি
বাদে



2

গণিত, 62 বাইট

(s=Min@Abs[m/.Solve[2#==(n-m)(n+m+1),{n,m},Integers]])(s+1)/2&

আমি ম্যাথমেটিকাকে চিনি না, তবে Solve[2*#==m(m+1)-n(n+1)ছোট হবে (যদি এটি কাজ করে)?
ক্রিটসি লিথোস

হ্যাঁ, আমি আমার উত্তর পোস্ট করেছি এবং এখনই এটি গল্ফ দেওয়ার চেষ্টা করছি
J42161217

2

পাইথন 2 , 78 71 70 বাইট

সাতটি বাইট সংরক্ষণ করা হয়েছে, ওভস এবং থিস্পিনোসাকে থ্যাঙ্কস

আরও একটি বাইট মন্তব্য কারণে সংরক্ষিত নিল , x+9suffisant এবং পরীক্ষিত সব প্রাকৃতিক সংখ্যার জন্য 0 <= n <= 10000। এছাড়া ছিল যাচাই জন্য x+1পরিবর্তে x+9, এটি কাজ করে।

x=input()
I={n*-~n/2for n in range(x+1)}
print min(I&{i-x for i in I})

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


2
আপনি ব্যবহার করতে পারেন n*-~n/2পরিবর্তেn*(n+1)/2
ovs

2
(X + 9) কাজ করবে?
নীল

2
আপনি ব্যবহার করতে পারেন {n*(n+1)/2for n in range(999)}স্পষ্ট পরিবর্তে setএবং ব্যবহার {}পরিবর্তে setতৃতীয় লাইনে
TheEspinosa

2

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

f=(n,a=s=0)=>n?f(n+=n>0?--s:++a,a):a*++a/2
<input type=number min=0 value=0 oninput=o.textContent=f(+this.value)><pre id=o>0

সম্পাদনা করুন: @ পিটারটেলরকে ধন্যবাদ 1 বাইট সংরক্ষিত


গ্লোবাল ভেরিয়েবল সেট করা একটি ডিফল্ট প্যারামিটারের একটি ঘৃণ্য আপত্তি। +1 টি। কিন্তু FWIW আপনি প্রতিস্থাপন আরও বাইট সংরক্ষণ করতে পারবেন -++sসঙ্গে --s, যেমন আমি আমার স্বাধীনভাবে উদ্ভূত কিন্তু খুবই অনুরূপ জাভা সংস্করণে করেনি। (সংযোজন: আপনারও পরীক্ষাটি পরিবর্তন করতে হবে n>0)।
পিটার টেলর

@ পিটারটেলর হুহ, তাই n>sচেকটি ছিল সব মিলিয়ে একটি লাল বর্ণ !
নীল


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

2

পাইথন 3 , 60 44 বাইট

f=lambda n,k=1:(8*n+1)**.5%1and f(n+k,k+1)+k

@ এক্সনোরকে এমন একটি পরামর্শের জন্য ধন্যবাদ যা 16 বাইট সংরক্ষণ করেছে!

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

পটভূমি

যাক এন একটি অ-নেতিবাচক পূর্ণসংখ্যা হতে। তাহলে এন হয় ত্রিদলীয় নম্বর, আমরা আছে

condition

যার অর্থ একটি প্রাকৃতিক সমাধান হবে যদি এবং কেবল যদি 1 + 8n একটি বিজোড়, নিখুঁত বর্গ হয়। স্পষ্টতই, 1 + 8n এর সমতা পরীক্ষা করার প্রয়োজন নেই।

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

রিকার্সিভ ফাংশন এন একটি একক, অ-নেতিবাচক পূর্ণসংখ্যাকে যুক্তি হিসাবে গ্রহণ করে। যখন একটি একক যুক্তির সাথে ডাকা হয়, কে 1 এ ডিফল্ট হয় ।

প্রথমত, nগুলি যদি ত্রিভুজাকার সংখ্যা হয় (8*n+1)**.5%1তবে পরীক্ষাগুলি : যদি (এবং কেবলমাত্র) এটি হয় তবে একটি পূর্ণসংখ্যার ফলস্বরূপ, সুতরাং 1 দ্বারা বিভাজন থেকে অবশিষ্টাংশ 0 প্রদান করবে ।(8*n+1)**.5

যদি মডুলাস 0 হয় তবেand শর্ত ব্যর্থ হবে, যার ফলে রিটার্ন 0 । এই প্রারম্ভিক কলে যদি সেটা হয় , নোট এই যেহেতু সঠিক আউটপুট যে এন ইতিমধ্যে ত্রিদলীয় হয়।

যদি মডুলাসটি ইতিবাচক হয় তবে andশর্তটি ধরে রাখে এবং f(n+k,k+1)+kসম্পাদিত হয়। এটি আবার এফ কল করে , এন দ্বারা বাড়িয়ে দিচ্ছে এবং K দ্বারা 1 , তারপর যোগ ফলাফলের জন্য।

যখন চ (ঢ 0 , K 0 ) পরিশেষে ফেরৎ 0 , আমরা পুনরাবৃত্তির আউট ব্যাক। প্রথম কলটিতে প্রথম যুক্তিটি ছিল এন , দ্বিতীয়টি এন + 1 , তৃতীয়টি এন + 1 + 2 , অবশেষে এন 0 পর্যন্ত = এন + 1 +… কে 0 -1 । মনে রাখবেন যে n 0 - n একটি ত্রিভুজাকার সংখ্যা।

অনুরূপভাবে, এই সমস্ত পূর্ণসংখ্যার অভ্যন্তরীণতম রিটার্ন মান ( 0 ) এ যুক্ত হবে, সুতরাং অন্তর্নিহিত কল এফ (এন) এর ফলাফল n 0 - এন কাঙ্ক্ষিত।


আপনি যদি nপুনরাবৃত্তি হিসাবেও বৃদ্ধি করেন তবে আপনি লেখার nচেয়ে লিখতে পারেন (n+k)
xnor


বাহ, আমি যা চেষ্টা করেছিলাম তা তার চেয়ে অনেক সুন্দর।
xnor

2

সি # (.নেট কোর) , 291 281 বাইট

class p{static int Main(string[]I){string d="0",s=I[0];int c=1,j,k;for(;;){j=k=0;string[]D=d.Split(' '),S=s.Split(' ');for(;j<D.Length;j++)for(;k<S.Length;k++)if(D[j]==S[k])return int.Parse(D[k]);j=int.Parse(D[0])+c++;d=d.Insert(0,$"{j} ");s=s.Insert(0,$"{j+int.Parse(I[0])} ");}}}

এটি অনলাইন চেষ্টা করুন! প্রোগ্রাম যা ইনপুট হিসাবে স্ট্রিং নেয় এবং প্রস্থান কোডের মাধ্যমে আউটপুট হয়।

কেভিন ক্রুইজসেনকে 10 বাইট সংরক্ষণ করা হয়েছে


1
হাই, পিপিসিজিতে আপনাকে স্বাগতম! চ্যালেঞ্জ অন্যথায় না জানিয়ে আপনার কোনও পূর্ণ প্রোগ্রামের দরকার নেই। ডিফল্টটি হল প্রোগ্রাম / ফাংশন, সুতরাং লাম্বদা সি # তেও অনুমোদিত। তবে আপনি যদি প্রোগ্রামটি ব্যবহার করতে চান তবে আপনি আপনার বর্তমান কোডে কিছু জিনিস গল্ফ করতে পারেন: class p{static int Main(string[]I){string d="0",s=I[0];int c=1,j,k;for(;;){j=k=0;string[]D=d.Split(' '),S=s.Split(' ');for(;j<D.Length;j++)for(;k<S.Length;k++)if(D[j]==S[k])return int.Parse(D[k]);j=int.Parse(D[0])+c++;d=d.Insert(0,$"{j} ");s=s.Insert(0,$"{j+int.Parse(I[0])} ");}}}( 281 বাইট )
কেভিন ক্রুইজসেন

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

আমি সি # ল্যাম্বডাস টিবিএইচ তেও খুব ভাল নই, আমি সাধারণত জাভাতে কোডগল্ফ করি। তবে আমি মনে করি এটি সঠিক হওয়া উচিত । ( 252 বাইট ) এছাড়াও, যদি কোন কারণে আপনার এটা এখনো দেখা যায়: C # কোড-golfing জন্য টিপস এবং <সমস্ত ভাষা> এ golfing জন্য টিপস মাধ্যমে পড়া আকর্ষণীয় হতে পারে। আবার আপনাকে স্বাগতম, এবং আমার কাছ থেকে +1 করুন। প্রথম উত্তর। উপভোগকর তোমার থাকা. :)
কেভিন ক্রুজসসেন

2

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

f=(n,x=r=0)=>(8*(n+x)+1)**.5%1?f(n,x+=++r):x

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

o.innerText=(
f=(n,x=r=0)=>(8*(n+x)+1)**.5%1?f(n,x+=++r):x
)(i.value=8);oninput=_=>o.innerText=f(+i.value)
<input id=i type=number><pre id=o>


1
চান r=x=0কাজ করে?
ক্রিটসি লিথোস

দুঃখের বিষয় নয়, @ ক্রিতিক্সিলিথস।
শেগি


1

ডায়ালগ এপিএল, 19 বাইট

6 ক্রাইটিক্সিলিথসকে ধন্যবাদ বাইটস সংরক্ষণ করেছে

{⊃o/⍨o∊⍨⍵+o←0,+\⍳⍵}

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

কিভাবে?

o←0,+\⍳⍵- oপ্রথম নিয়োগ ত্রিভুজাকার সংখ্যা

o/⍨ - ছাঁকনি o দ্বারা

o∊⍨⍵+o - ত্রিভুজাকার সংখ্যা যার সাথে মিলিত হয়েছে ত্রিভুজাকার উত্পাদন করে

- এবং প্রথম নিতে


+\⍳⍵ত্রিভুজাকার সংখ্যা উত্পন্ন করতে আপনি যা ব্যবহার করছেন তার পরিবর্তে কাজ করা উচিত।
ক্রিটসি লিথোস

আমি মনে করি এর পরিবর্তে কাজ করে⌊/
ক্রিটসি লিথোস



1

++ , 68 বাইট যুক্ত করুন

L,RBFEREsECAAx$pBcB_B]VARBFEREsB]GEi$pGBcB*A8*1+.5^1%!!@A!@*b]EZBF#@

এটি অনলাইন চেষ্টা করুন! , বা পরীক্ষার স্যুটটি দেখুন !

এমনকি জাভা আমাকে প্রহার করা হয়। আমাকে ++ যুক্ত করার জন্য কিছু সেট কমান্ড যুক্ত করতে হবে

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

L,    - Create a lambda function
      - Example argument:  8
  R   - Range;     STACK = [[1 2 3 4 5 6 7 8]]
  BF  - Flatten;   STACK = [1 2 3 4 5 6 7 8]
  ER  - Range;     STACK = [[1] [1 2] ... [1 2 3 4 5 6 7 8]
  Es  - Sum;       STACK = [1 3 6 10 15 21 28 36]
  EC  - Collect;   STACK = [[1 3 6 10 15 21 28 36]]
  A   - Argument;  STACK = [[1 3 6 10 15 21 28 36] 8]
  A   - Argument;  STACK = [[1 3 6 10 15 21 28 36] 8 8]
  x   - Repeat;    STACK = [[1 3 6 10 15 21 28 36] 8 [8 8 8 8 8 8 8 8]]
  $p  - Remove;    STACK = [[1 3 6 10 15 21 28 36] [8 8 8 8 8 8 8 8]]
  Bc  - Zip;       STACK = [[1 8] [3 8] [6 8] [10 8] [15 8] [21 8] [28 8] [36 8]]
  B_  - Deltas;    STACK = [-7 -5 -2 2 7 13 20 28]
  B]  - Wrap;      STACK = [[-7 -5 -2 2 7 13 20 28]]
  V   - Save;      STACK = []
  A   - Argument;  STACK = [8]
  R   - Range;     STACK = [[1 2 3 4 5 6 7 8]]
  BF  - Flatten;   STACK = [1 2 3 4 5 6 7 8]
  ER  - Range;     STACK = [[1] [1 2] ... [1 2 3 4 5 6 7 8]]
  Es  - Sum;       STACK = [1 3 6 10 15 21 28 36]
  B]  - Wrap;      STACK = [[1 3 6 10 15 21 28 36]]
  G   - Retrieve;  STACK = [[1 3 6 10 15 21 28 36] [-7 -5 -2 2 7 13 20 28]]
  Ei  - Contains;  STACK = [[1 3 6 10 15 21 28 36] [0 0 0 0 0 0 0 1]]
  $p  - Remove;    STACK = [[0 0 0 0 0 0 0 1]]
  G   - Retrieve;  STACK = [[0 0 0 0 0 0 0 1] [-7 -5 -2 2 7 13 20 28]]
  Bc  - Zip;       STACK = [[0 -7] [0 -5] [0 -2] [0 2] [0 7] [0 13] [0 20] [1 28]]
  B*  - Products;  STACK = [0 0 0 0 0 0 0 28]
  A   - Argument;  STACK = [0 0 0 0 0 0 0 28 8]
  8*  - Times 8;   STACK = [0 0 0 0 0 0 0 28 64]
  1+  - Increment; STACK = [0 0 0 0 0 0 0 28 65]
  .5^ - Root;      STACK = [0 0 0 0 0 0 0 28 8.1]
  1%  - Frac part; STACK = [0 0 0 0 0 0 0 28 0.1]
  !!  - To bool;   STACK = [0 0 0 0 0 0 0 28 1]
  @   - Reverse;   STACK = [1 28 0 0 0 0 0 0 0]
  A   - Argument;  STACK = [1 28 0 0 0 0 0 0 0 8] 
  !   - Not;       STACK = [1 28 0 0 0 0 0 0 0 0]
  @   - Reverse;   STACK = [0 0 0 0 0 0 0 0 28 1]
  *   - Multiply;  STACK = [0 0 0 0 0 0 0 0 28]
  b]  - Wrap;      STACK = [0 0 0 0 0 0 0 0 [28]]
  EZ  - Unzero;    STACK = [[28]]
  BF  - Flatten;   STACK = [28]
  #   - Sort;      STACK = [28]
  @   - Reverse;   STACK = [28]

1

আর , 46 44 43 41 বাইট

function(x,y=cumsum(0:x))y[(x+y)%in%y][1]

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

একটি বাধ্যতামূলক যুক্তি সহ একটি বেনামী ফাংশন x; x+1কয়েকটি কোঁকড়া ধনুর্বন্ধনী আউট গল্ফ একটি alচ্ছিক যুক্তি হিসাবে প্রথম ত্রিভুজাকার সংখ্যা গণনা । আমি chooseলুইস মেন্ডোর অক্টাভা উত্তর দেখার আগে ব্যবহার করেছি ।

আমি লুই মেন্ডোর জবাবের কয়েকটি বাইট ছাঁটাই করেছিলাম তবে আমার উত্তরটিতে একই ধারণাটি ব্যবহার করতে ভুলে গিয়েছি।





0

Clojure, 74 বাইট

#(nth(for[t[(reductions +(range))]i t :when((set(take 1e5 t))(+ i %))]i)0)
#(nth(for[R[reductions]i(R + %(range)):when((set(R - i(range 1e5)))0)]i)0)

আপনার প্রিয় চয়ন করুন :) লুপগুলি সংক্ষিপ্ত হতে পারে ...


0

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

f=lambda n,R=[1]:n-sum(R)and f(n,[R+[R[-1]+1],R[1:]][sum(R)>n])or sum(range(R[0]))

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

সম্পর্কিত প্রশ্ন থেকে এই উত্তরটি পরিবর্তন করে এটি তৈরি করা হয়েছিল ।



It doesn't work for that on the related question either, because of the recursion depth. I'm not sure what the consensus is on that.
mbomb007

Some other answers have the same problem. I give only the info
Jörg Hülsermann
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.