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


12

ভূমিকা

গণিতে, একটি বহুভুজ সংখ্যা হ'ল একটি সংখ্যা যা নিয়মিত বহুভুজের আকারে সাজানো বিন্দু বা নুড়ি হিসাবে চিহ্নিত হয়। বিন্দুগুলিকে আলফাস (একক) হিসাবে ভাবা হয়। এগুলি এক ধরণের দ্বি-মাত্রিক অলঙ্কৃত সংখ্যা।

উদাহরণস্বরূপ 10 নম্বরটি একটি ত্রিভুজ হিসাবে সাজানো যেতে পারে:

*
**
***
****

তবে 10 টি বর্গ হিসাবে সাজানো যায় না। অন্যদিকে 9 নম্বরটি হতে পারে:

***
***
***

36 এর মতো কিছু নম্বর বর্গক্ষেত্র এবং ত্রিভুজ উভয়ভাবে সাজানো যেতে পারে:

******  *
******  **
******  ***
******  ****
******  *****
******  ******

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

ত্রিভুজাকার সংখ্যা:

ত্রিভুজাকার সংখ্যা

বর্গ সংখ্যা:

বর্গ সংখ্যা

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

পেন্টাগোনাল নম্বর:

পেন্টাগোনাল নম্বর

ষড়ভুজ সংখ্যা:

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

সূত্র: উইকিপিডিয়া

তোমার কাজ

ধনাত্মক পূর্ণসংখ্যা N (1 <= N <= 1000) দেওয়া, প্রতিটি ধরণের বহুভুজ সংখ্যা এন প্রান্তিকভাবে ট্রাইঙ্গুলার নম্বর থেকে শুরু হয়ে আইকোসাগোনাল (20-গন) নম্বরগুলি সহ অন্তর্ভুক্ত রয়েছে।

উদাহরণস্বরূপ, 10 নম্বরটি একটি ত্রিভুজাকার সংখ্যা এবং একটি দশকীয় সংখ্যা, সুতরাং আউটপুটটি এমন কিছু হওয়া উচিত (আপনি নিজের আউটপুট ফর্ম্যাটটি চয়ন করতে পারেন তবে এটি কিছুটা দেখতে হবে):

3 10

পরীক্ষার মামলা

1 -> 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
2 -> (None)
3 -> 3
6 -> 3 6
36 -> 3 4 13

অবগতির জন্য, n-th k-gonal সংখ্যা:

(কে -২) (এন) (এন -১) / ২ + এন

ক্রেডিট: এক্সএনওর

মনে রাখবেন, এটি , তাই সবচেয়ে কম বাইটের কোডটি জয়ী।


রেফারেন্সের জন্য, nth কে-জোনাল নম্বর (k-2)*n*(n-1)/2 + n
xnor

9
স্যান্ডবক্সের মূল বিষয় হল প্রশ্নগুলির উন্নতি করা। আপনি যদি স্যান্ডবক্সে কোনও প্রশ্ন পোস্ট করেন এবং আপনি কী জিজ্ঞাসা করছেন তা পরিষ্কার নয় তবে সঠিক প্রতিক্রিয়াটি স্যান্ডবক্সে কোনও মন্তব্য যুক্ত করা নয়, দুই ঘন্টা অপেক্ষা করুন এবং তারপরে প্রশ্নটি প্রধান অমার্জনিত করে পোস্ট করুন এবং স্যান্ডবক্সের প্রশ্ন মুছে ফেলুন কয়েক হাজারেরও কম সংখ্যক লোকের কাছ থেকে বর্ণিত মন্তব্য লুকিয়ে রাখা। সঠিক প্রতিক্রিয়া হ'ল রিফ্রেসিং বা রিফ্রেসিংয়ের জন্য পরামর্শ জিজ্ঞাসা করা এবং পুনরায় উত্তোলিত প্রশ্নটিতে এখনও সমস্যা আছে কিনা তা দেখার জন্য এটি আরও দু'এক দিন দিন।
পিটার টেলর

উত্তর:


2

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

lambda R:[s+2for s in range(1,19)if(s-2+(4+s*(s-4+8*R))**.5)/2%s==0]

প্রতিটি সম্ভাব্য সংখ্যক পক্ষের জন্য , ফলাফলটি পুরো সংখ্যা কিনা তা দেখার জন্য s+2চতুর্ভুজ সূত্রকে সমাধান করে ।R=s*n*(n-1)/2 + nn

(73 বাইট) তুলনা করুন:

lambda R:[s+2for s in range(1,19)if R in[n+s*n*~-n/2for n in range(R+1)]]

সমাধানের বিকল্প বিকল্পটি sপাইথন 3 এ 62 বাইট দেয়, কিন্তু ব্যর্থ হয় R=1

lambda R:{(R-n)*2/n/~-n+2for n in range(2,R+1)}&{*range(3,21)}

1

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

n=>[...Array(21).keys(n--)].slice(3).filter(i=>(Math.sqrt(i*i+8*i*n-16*n)+i-4)%(i+i-4)==0)

চতুর্ভুজ সমীকরণ সমাধান করে। ফায়ারফক্সের নতুন পর্যাপ্ত সংস্করণগুলিতে 73 বাইট:

n=>[for(i of Array(18).keys())if(((~-i**2+8*n*-~i)**.5+~-i)/2%-~i==0)i+3]

1

> <>, 62 + 3 = 65 বাইট

&1v
v0<;?)+8a:+1~~<
1.292:{<>+n}ao^
>:&:&=?^:&:&)?^:@:@$-{:}++

স্ট্যাকের শীর্ষে ইনপুটটি আশা করে, তাই -vপতাকাটির জন্য +3 বাইট ।

এটি আমার <>>> এ প্রথমবারের প্রোগ্রামিং, তাই কোডটি ছোট করার জন্য আমি কিছু স্পষ্ট কৌশল মিস করতে পারি।

ব্যাখ্যা:

আরম্ভ

&1v
v0<
1

মানসম্পন্ন এন নিবন্ধন করতে, স্ট্যাকে কাউন্টার পাহাড় জমে (থেকে শুরু 1যা ত্রিদলীয় নম্বরে অনুরূপ,), এবং মান ক্রম আরম্ভ 0এবং 1

প্রধান লুপ

 :&:&=?^:&:&)?^:@:@$-{:}++

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

ছাপা

 .292:{<>+n}ao^
       ^

একটি নতুন লাইন পরে কাউন্টার + 2 মুদ্রণ করে, তারপরে পুনরায় সেট করা রুটিনে চলে যায়।

রিসেট

v0<;?)+8a:+1~~<
1             ^

শীর্ষ দুটি স্ট্যাক আইটেমগুলি সরিয়ে দেয় এবং কাউন্টারকে বাড়িয়ে দেয়। যদি কাউন্টারটি 18 এর চেয়ে বেশি হয় তবে প্রোগ্রামটি শেষ হয়, অন্যথায় শুরুর সংখ্যাগুলি 0এবং 1স্ট্যাকটিকে ধাক্কা দেয় এবং মূল লুপটিতে ফিরে আসে।


1

জেলি , 22 বাইট

18pȷµḢ×’×H+µ€_³¬FT:ȷ+3

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

ব্যাখ্যা

18pȷµḢ×’×H+µ€_³¬FT:ȷ+3
18pȷ                   - All possible (k-2,n) pairs
    µ      µ€          - to each pair compute the corresponding polygonal number:
     Ḣ                 -   retrieve k-2
      ×’               -   multiply by n-1
        ×H             -   multiply by half of n
          +            -   add n
             _³        - subtract the input. There will now be 0's at (k-2,n) pairs which produce the input
               ¬FT     - retrieve all indices of 0's. The indices are now (k-2)*1000+n
                  :ȷ   - floor division by 1000, returning k-3
                    +3 - add 3 to get all possible k.

1

অ্যাক্সিয়োম 203 বাইট

 l(x)==(local q,m,a;v:List INT:=[];for i in 3..20 repeat(q:=solve((i-2)*n*(n-1)+2*n-2*x=0,n);if #q>1 then(m:=rhs q.1;a:=rhs q.2;if(m>0 and denom(m)=1)or(a>0 and denom(a)=1)then v:=cons(i,v)));v:=sort v;v)

এখানে কম গল্ফযুক্ত এবং রুটিন যা সংখ্যা দেখায়

 l(x)==
  local q,m,a
  v:List INT:=[]
  for i in 3..20 repeat 
     q:=solve((i-2)*n*(n-1)+2*n-2*x=0,n)  -- this would find only rational solutions as r/s with r,s INT
     if #q>1 then -- if exist rational solution and denominator =1=> add to list of result
        m:=rhs q.1;a:=rhs q.2;
        if(m>0 and denom(m)=1)or(a>0 and denom(a)=1)then v:=cons(i,v) 
  v:=sort v
  v

 (2) ->  [[i,l(i)]  for i in 1..45]
    Compiling function l with type PositiveInteger -> List Integer

    (2)
    [[1,[3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20]], [2,[]], [3,[3]],
     [4,[4]], [5,[5]], [6,[3,6]], [7,[7]], [8,[8]], [9,[4,9]], [10,[3,10]],
     [11,[11]], [12,[5,12]], [13,[13]], [14,[14]], [15,[3,6,15]], [16,[4,16]],
     [17,[17]], [18,[7,18]], [19,[19]], [20,[20]], [21,[3,8]], [22,[5]],
     [23,[]], [24,[9]], [25,[4]], [26,[]], [27,[10]], [28,[3,6]], [29,[]],
     [30,[11]], [31,[]], [32,[]], [33,[12]], [34,[7]], [35,[5]], [36,[3,4,13]],
     [37,[]], [38,[]], [39,[14]], [40,[8]], [41,[]], [42,[15]], [43,[]],
     [44,[]], [45,[3,6,16]]]
                                                           Type: List List Any

0

এডাব্লুকে , 67 বাইট

{for(k=2;++k<21;)for(n=0;++n<=$1;)if((k/2-1)*(n*n-n)+n==$1)print k}

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

আমি আসলে চতুর্ভুজ সমাধানের চেষ্টা করেছি, তবে প্রতিটি মানটি এটির চেয়ে কম কিনা তা পরীক্ষা করে দেখছি (এবং আমার জন্য ত্রুটি-প্রবণতা কম)


0

আর, 68 66 বাইট

N=scan();m=expand.grid(k=1:18,1:N);n=m$V;m$k[m$k*n*(n-1)/2+n==N]+2

স্টিডিনের Nকাছ থেকে পড়ে। প্রথম Nকে-জোনাল সংখ্যাগুলি গণনা করে এবং xnor এর সূত্র ব্যবহার করে kতারা যেখানে সমান হয় সেখানে পায় N; তবে 1:18পরিবর্তে ব্যবহার করে 3:20এবং 2শেষে যুক্ত করে বন্ধনীগুলিতে বাইটস সংরক্ষণ করে ।

expand.gridডিফল্ট নাম দ্বারা কলাম Var1, Var2..., একটি নাম দেয়া হল না পারেন। $আংশিক মিলের দ্বারা সূচকগুলি, তাই দ্বিতীয় কলামের m$Vসাথে মিলে যায় m$Var2,

পুরনো সংস্করণ:

N=scan();m=expand.grid(k=3:20,1:N);n=m$V;m$k[(m$k-2)*n*(n-1)/2+n==N]

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



0

জেলি , 20 বাইট

আমি কেবল এই চ্যালেঞ্জের কার্যকর ডুপ লিখতে শুরু করেছি (তবে সমস্ত কে> 1 কেবল [1,20] নয়) coveringেকে রাখি ... সুতরাং পরিবর্তে আমি এর জবাব দেব!

Ṫð’××H+⁸
18pÇċ¥Ðf⁸+2

ফলাফলের জেলি তালিকা উপস্থাপনের একটি সম্পূর্ণ প্রোগ্রাম মুদ্রণ করছে *

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

* কোনও ফলাফল কিছুই প্রিন্ট করে না;
  একক ফলাফল কেবল সেই সংখ্যা প্রিন্ট করে;
  একাধিক ফলাফল সংখ্যার একটি []বদ্ধ, , পৃথক তালিকা মুদ্রণ করে

কিভাবে?

Ṫð’××H+⁸ - Link 1, ith (x+2)-gonal number: list [x,i]   e.g. [3,4] (for 4th Pentagonal)
Ṫ        - tail & modify (i.e. yield i & make input [x])     4
 ð       - new dyadic chain, i.e. left = i, right = [x]
  ’      - decrement i                                       3
   ×     - multiply by [x]                                   [9]
     H   - halve [x]                                         [2]
    ×    - multiply                                          [18]
       ⁸ - chain's left argument, i                          4
      +  - add                                               [22]

18pÇċ¥Ðf⁸+2 - Main link: number, n                      e.g. 36
18p         - Cartesian product of range [1,18] with n       [[1,1],[1,2],...,[1,36],[2,1],...,[18,1],[18,2],[18,36]]
            -   (all pairs of [(k-2),i] which could result in the ith k-gonal number being n)
      Ðf    - filter keep if this is truthy:
        ⁸   -   chain's left argument, n                     36
     ¥      -   last two links as a dyad:
   Ç        -     call the last link as a monad (note this removes the tail of each)
    ċ       -     count (this is 1 if the result is [n] and 0 otherwise)
            -                            filter keep result: [[1],[2],[11]]
         +2 - add two                                        [[3],[4],[13]]
            - implicit print ...due to Jelly representation: [3, 4, 13]
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.