বহুভুজ সংখ্যা


12

একটি বহুভুজ সংখ্যা হ'ল kএকক-আকারের বিন্দুর সংখ্যা n

আপনাকে দেওয়া হবে nএবং k, এবং আপনার কাজটি এমন একটি প্রোগ্রাম / ফাংশন লিখতে হবে যা সংশ্লিষ্ট নম্বরটি আউটপুট করে / প্রিন্ট করে।

স্কোরিং

এটি । বাইটস মধ্যে সংক্ষিপ্ত সমাধান।

উদাহরণ

তৃতীয় ষড়ভুজ সংখ্যা

3য় ষড়ভূজ নম্বর ( k=6, n=3) হল 28কারণ আছে 28বিন্দু উপরে।

Testcases

এই পাইথ পরীক্ষার স্যুট থেকে উত্পন্ন করা যেতে পারে ।

ব্যবহার: nউপরে, kনীচে টেস্টকেসগুলিতে দুটি লাইন ।

n    k  output
10   3  55
10   5  145
100  3  5050
1000 24 10990000

আরো তথ্য


1
ছবিতে এটি কি চতুর্থ ষড়ভুজ সংখ্যা নয়?
নিল

@ নীল আমরা শূন্য থেকে গণনা করি।
লিকি নুন

2
আপনি সত্যিই একটি পোস্ট পোস্ট স্প্রি চলছে, আপনি না?
আর কাপ,

উদাহরণটি বন্ধ হতে পারে। আপনি যদি নিজের পরীক্ষার স্যুটে রাখেন n=3এবং k=6পাবেন 15। যদি আপনি putোকান n=4এবং k=6, আপনি পাবেন 28
ননলাইনারফ্রুট

উত্তর:


9

জেলি , 7 বাইট

’;’;PH+

এটি সূত্র ব্যবহার করে

সূত্র

n তম s- আঞ্চলিক সংখ্যা গণনা করা ।

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

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

’;’;PH+  Main link. Arguments: s, n

’        Decrement; yield s - 1.
 ;       Concatenate; yield [s - 1, n].
  ’      Decrement; yield [s - 2, n - 1].
   ;     Concatenate; yield [s - 2, n - 1, n].
    P    Product; yield (s - 2)(n - 1)n.
     H   Halve; yield (s - 2)(n - 1)n ÷ 2.
      +  Add; yield (s - 2)(n - 1)n ÷ 2 + n.

4

হেক্সাগনি , 25 বাইট

?(({"+!@/"*'+{/?('*})/2':

দুচোখে:

   ? ( ( {
  " + ! @ /
 " * ' + { /
? ( ' * } ) /
 2 ' : . . .
  . . . . .
   . . . .

রাউন্ডআপ kপ্রথম এবং nদ্বিতীয় (যে কোন বিভাজক ব্যবহার করে)।

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

ব্যাখ্যা

প্রোগ্রামটি সম্পূর্ণরূপে রৈখিক, তবে যথারীতি হেক্সাগনীতে, মৃত্যুদণ্ডের আদেশটি পুরো জায়গাটিতে রয়েছে:

এখানে চিত্র বর্ণনা লিখুন

পাথগুলি ধূসর , গা dark় নীল , লাল , হালকা নীল , গা dark় সবুজ , গোলাপী ক্রমে কার্যকর করা হয় । আপনি দেখতে পাচ্ছেন, তিনটি /কেবল প্রবাহকে পুনর্নির্দেশের জন্য কাজ করে। এছাড়াও, .কোন অপ্স হয়। সমস্ত ষড়ভুজ কৌতূহল কেটে ফেলা, ফলস্বরূপ লিনিয়ার প্রোগ্রামটি হ'ল:

?(({?('*})"*'+{2':"+!@

এটি স্ট্যান্ডার্ড সূত্রটি গণনা করে

সূত্র

অন্যান্য উত্তরগুলির মতো। এটি নীচের পাঁচটি মেমরি প্রান্ত ব্যবহার করে মেমরি পয়েন্টার (এমপি) লাল হিসাবে দেখানো হিসাবে শুরু করে:

এখানে চিত্র বর্ণনা লিখুন

এটি এখানে কীভাবে হয়:

?    Read integer input s into edge A.
((   Decrement twice to get (s-2).
{    Move the MP forwards onto edge B.
?    Read integer input n into edge B.
(    Decrement to get (n-1).
'    Move the MP backwards onto edge C.
*    Multiply edges A and B to store the result (s-2)(n-1) in edge C.
}    Move the MP forwards onto edge B.
)    Increment to restore the value n.
"    Move the MP backwards onto edge A.
*    Multiply edge B and C to store the result (s-2)(n-1)n in edge A.
'    Move the MP backwards onto edge D.
+    Add edges E (initially 0) and A to copy (s-2)(n-1)n into edge D.
{    Move the MP forwards onto edge E.
2    Set the memory edge to value 2.
'    Move the MP backwards onto edge A.
:    Divide edge D by edge E to store (s-2)(n-1)n/2 in edge A.
"    Move the MP backwards onto edge C.
+    Add edges A and B to store (s-2)(n-1)n/2+n in edge C.
!    Print as integer.
@    Terminate the program.

এই জাতীয় একটি সহজ সূত্র ... 25 বাইট প্রয়োজন ?!
লিকি নুন

4
@KennyLau এই হল সব পরে Hexagony ...
মার্টিন Ender

হেক্সাগনি মেটা প্রশ্ন
ডাউনরেপ_নেশন


3

ভোল্টেজ , 13 বাইট

?::(*?((*#/+!

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

ব্যাখ্যা

এর একক-চরিত্রের কমান্ডগুলির কারণে (যা কেবলমাত্র ভাষার 2D-ness এর প্রয়োজনীয়তা), ল্যাবরেথ আশ্চর্যজনকভাবে লিনিয়ার প্রোগ্রামগুলির জন্য গোলাপী হতে পারে।

এটি অন্যান্য বেশ কয়েকটি উত্তরের মতো একই সূত্র ব্যবহার করে:

সূত্র

Op  Explanation                 Stack
?   Read n.                     [n]
::  Make two copies.            [n n n]
(   Decrement.                  [n n (n-1)]
*   Multiply.                   [n (n*(n-1))]
?   Read s.                     [n (n*(n-1)) s]
((  Decrement twice.            [n (n*(n-1)) (s-2)]
*   Multiply.                   [n (n*(n-1)*(s-2))]
#   Push stack depth, 2.        [n (n*(n-1)*(s-2)) 2]
/   Divide.                     [n (n*(n-1)*(s-2))/2]
+   Add.                        [(n+(n*(n-1)*(s-2))/2)]
!   Print.                      []

এই মুহুর্তে, নির্দেশ পয়েন্টারটি একটি শেষ প্রান্তে আঘাত করে এবং ঘুরে ফিরে। এখন +আবার মৃত্যুদন্ড কার্যকর করা হয়েছে, যা কোনও অপ-অপশন (যেহেতু স্ট্যাকের নীচে সুস্পষ্টভাবে একটি অসীম পরিমাণ জিরো দিয়ে ভরাট করা হয়েছে), এবং তারপরে /শূন্যের বিভাজনের চেষ্টা করে যা প্রোগ্রামটি একটি ত্রুটির সাথে বন্ধ করে দেয়।


2

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

(k,n)=>n+n*--n*(k-2)/2

ব্যাখ্যা: প্রতিটি এন-গনকে এক পাশের পাশাপাশি এন -1 আকারের কে -2 ত্রিভুজ হিসাবে এন পয়েন্ট হিসাবে বিবেচনা করা যেতে পারে, যেমন এন + এন (এন -1) (কে -2) / 2 2


k--*n--+2-nযদিও পরীক্ষা হয়নি
লিকি নুন

@ কেনেনি লাউ দুঃখিত, তবে (k,n)=>n*(--k*--n-n+2)/2এখনও 24 বাইট রয়েছে।
নিল

@KennyLau ইন আসলে আমি সুস্পষ্ট ব্যবহার উপেক্ষিত --nজন্য (n-1)। ডি আহা!
নিল

@ নিই, ভাল
ফুটো নুন

আপনি কারিরিং দিয়ে একটি বাই বাঁচাতে পারেন: k=>n=>n+n*--n*(k-2)/2
ডেনিস


2

এপিএল (ডায়ালগ প্রসারিত) , 11 বাইট এসবিসিএস

এই বিকল্প সংস্করণের পরামর্শ দেওয়ার জন্য অ্যাডামকে তাঁর সহায়তার জন্য ধন্যবাদ।

⊢+-∘2⍤⊣×2!⊢

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

ব্যাখ্যা

⊢+-∘2⍤⊣×2!⊢  Right argument (⊢) is n. Left argument (⊣) is s.

        2!⊢  Binomial(n, 2) == n*(n-1)/2.
  -∘2⍤⊣×     Multiply (×) with by getLeftArgument (⊢) with (⍤) minus 2 (-∘2) called on it.
             In short, multiply binomial(n,2) with (s-2).
⊢+           Add n.

এপিএল (ডায়ালগ ইউনিকোড) , 12 11 বাইট এসবিসিএস

এটিকে গল্ফ করতে তার সহায়তার জন্য আদমকে ধন্যবাদ।

সম্পাদনা: এনজিএন থেকে -1 বাইট।

⊢+{⍺-22!⊢

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

Ungolfing

⊢+{⍺-22!⊢  Right argument (⊢) is n. Left argument (⊣) is s.

        2!⊢  Binomial(n, 2) == n*(n-1)/2.
  {⍺-2     Multiply it by s-2.
⊢+           Add n.

1

আসলে, 12 বাইট

3@n(¬@D3╟π½+

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

ব্যাখ্যা:

3@n(¬@D3╟π½+
3@n           push 3 copies of n (stack: [n, n, n, k])
   (¬         bring k to front and subtract 2 ([k-2, n, n, n])
     @D       bring an n to front and subtract 1 ([n-1, k-2, n, n])
       3╟π    product of top 3 elements ([n*(n-1)*(k-2), n])
          ½   divide by 2 ([n*(n-1)*(k-2)/2, n])
           +  add ([n*(n-1)*(k-2)/2 + n])

1

ডিসি , 14 বাইট

?dd1-*2/?2-*+p

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

ব্যাখ্যা

এটি নিম্নলিখিত সূত্রটি ব্যবহার করে (লক্ষ্য করুন যে টি এন = n*(n-1)/2):

বহুভুজ সংখ্যা

                # inputs              | N S                  | 10 5
?dd             # push N three times  | N, N, N              | 10, 10, 10
   1-           # subtract 1          | (N-1), N, N          | 9, 10, 10
     *          # multiply            | (N-1)*N, N           | 90, 10
      2/        # divide by two       | (N-1)*N/2, N         | 45, 10
        ?       # push S              | S, (N-1)*N/2, N      | 5, 45, 10
         2-     # subtract 2          | (S-2), (N-1)*N/2, N  | 3, 45, 10
           *    # multiply            | (S-2)*(N-1)*N/2, N   | 135, 10
            +   # add                 | (S-2)*(N-1)*N/2 + N  | 145
             p  # print to stdout

1

অ্যাসেটো , 18 15 বাইট

ব্রুস ফোর্টের ডিসির উত্তরটির বন্দর :

riddD*2/ri2-*+p

যে কোনও "খাঁটি" (কোনও সম্মিলিত আদেশ নেই) এসিটো প্রোগ্রামটি রৈখিকভাবে লেখা যেতে পারে তা বুঝতে পেরে 3 বাইট সংরক্ষণ করা হয়েছে।


1

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

_┐*½?⌡*+

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

এন=10,=5

_          duplicate first implicit input, stack is [10, 10]
 ┐         push TOS-1 without popping, stack is [10, 10, 9]
  *        multiply, stack is [10, 90]
   ½       halve TOS, stack is [10, 45]
    ?      rotate top 3 stack elements, popping k to the top: [10, 45, 5]
     ⌡     decrement TOS twice: [10, 45, 3]
      *    multiply: [10, 135]
       +   add: [145]

একটি বিকল্প 8-বাইটার হ'ল ┼┐*½\⌡*+, যা বিপরীত ক্রমে ইনপুট নেয়।



0

গণিত, 17 বাইট

(#2-2)#(#-1)/2+#&

সূত্রটি সরাসরি-ফরওয়ার্ড অ্যাপ্লিকেশন।

ব্যবহার

  f = (#2-2)#(#-1)/2+#&
  f[10, 3]
55
  f[10, 5]
145
  f[100, 3]
5050
  f[1000, 24]
10990000

0

জে, 14 বাইট

]++/@i.@]*[-2:

সূত্রের ভিত্তিতে।

P(k, n) = (k - 2) * T(n - 1) + n where T(n) = n * (n + 1) / 2
        = (k - 2) * n * (n - 1) / 2 + n

ব্যবহার

   f =: ]++/@i.@]*[-2:
   3 f 10
55
   5 f 10
145
   3 f 100
5050
   24 f 1000
10990000

ব্যাখ্যা

]++/@i.@]*[-2:
            2:  The constant function 2
          [     Get k
           -    Subtract to get k-2
        ]       Get n
     i.@        Make a range from 0 to n-1
  +/@           Sum the range to get the (n-1) Triangle number = n*(n-1)/2
                The nth Triangle number is also the sum of the first n numbers
         *      Multiply n*(n-1)/2 with (k-2)
]               Get n
 +              Add n to (k-2)*n*(n-1)/2

আমার পদ্ধতির ব্যবহার করে এটি কতক্ষণ থাকবে?
ফাঁস নুন



0

পাইথন 3, 31 30 28 বাইট

এই উইকি নিবন্ধ থেকে সরাসরি আপ সমীকরণ

lambda s,n:(s-2)*(n-1)*n/2+n

বাইট সংরক্ষণ করার জন্য @ মেগোকে ধন্যবাদ!


আপনি কোলন এবং প্রথম বন্ধনের মধ্যবর্তী স্থান সরাতে পারেন।
মেগো


0

এক্সেল, 22 বাইট

হিসাব করে A1তম B1-gonal সংখ্যা।

=(B1-2)*A1*(A1-1)/2+A1

0

জাভা 8, 21 বাইট

সমান বাইট-দৈর্ঘ্যের সমস্ত পৃথক উত্তর:

k->n->n+n*~-n*(k-2)/2
k->n->n+n*--n*(k-2)/2
k->n->n+n*~-n*~-~-k/2
k->n->n+n*--n*~-~-k/2

ব্যাখ্যা:

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

k->n->            // Method with two integer parameters and integer return-type
  n+              //  Return `n` plus
    n*            //   `n` multiplied by
      ~-n         //   `n-1`
         *(k-2)   //   Multiplied by `k-2`
               /2 //   Divided by 2
                  // End of method (implicit / single-line return-statement)



0

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

{⍵+(⍺-2)×+/⍳⍵-1}

এটি n × (n-1) / 2 = যোগ (1..n-1) পরীক্ষা বলে মনে হচ্ছে এমনটি থেকে তৈরি করা হয়েছে:

  f←{⍵+(⍺-2)×+/⍳⍵-1}
  10 f 3
27
  3 f 10
55
  5 f 19
532
  3 f 10
55
  5 f 10
145
  3 f 100
5050
  24 f 1000
10990000
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.