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


20

সম্পর্কিত OEIS ক্রম: A008867

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

ত্রিভুজাকার সংখ্যার একটি সাধারণ সম্পত্তি হ'ল এগুলি একটি ত্রিভুজটিতে সাজানো যায়। উদাহরণস্বরূপ, 21 নিন এবং oএর ত্রিভুজের মধ্যে সাজান :

     ণ 
    ওও
   OOO
  উহ
 ooooo
oooooo

আসুন একটি "কাটা:" সংজ্ঞা দিন প্রতিটি কোণ থেকে একই আকারের ত্রিভুজগুলি কাটা। 21 কেটে যাওয়ার একটি উপায় নিম্নরূপ:

     । 
    । ।
   OOO
  উহ
 । ওও।
। । ওও ।

(এর ত্রিভুজগুলি .মূল থেকে কাটা হয়)।

12 oটি বাকি আছে, সুতরাং 12 একটি কাটা ত্রিভুজ সংখ্যা।

কার্য

আপনার কাজটি এমন কোনও প্রোগ্রাম বা একটি ফাংশন (বা সমতুল্য) লিখতে হবে যা একটি পূর্ণসংখ্যার গ্রহণ করে এবং ফিরে আসে (বা কোনও মানক আউটপুট পদ্ধতি ব্যবহার করে) কোনও সংখ্যা কাটা ত্রিভুজ সংখ্যা কিনা।

বিধি

  • কোনও মানক ফাঁক নেই।
  • ইনপুটটি একটি অ-নেতিবাচক পূর্ণসংখ্যা।
  • একটি কাটের মূল ত্রিভুজটির অর্ধেকের বেশিের পার্শ্বের দৈর্ঘ্য থাকতে পারে না (অর্থাত্ কাটগুলি ওভারল্যাপ করতে পারে না)
  • একটি কাটা পাশের দৈর্ঘ্য শূন্য থাকতে পারে।

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

Truthy:

0
1
3
6
7
10
12
15
18
19

Falsy:

2
4
5
8
9
11
13
14
16
17
20

50 পর্যন্ত সমস্ত পূর্ণসংখ্যার জন্য পরীক্ষার কেস: টিআইও লিঙ্ক

এটি , তাই প্রতিটি ভাষার পক্ষে সংক্ষিপ্ততম বাইট গণনা সহ জমা দেওয়া!

code-golf  math  decision-problem  number-theory  integer  code-golf  number  decision-problem  functional-programming  code-golf  array-manipulation  matrix  code-golf  string  classification  string  code-challenge  binary  compression  decode  code-golf  string  string  code-challenge  balanced-string  encode  code-golf  number-theory  integer  base-conversion  code-golf  math  number-theory  geometry  abstract-algebra  code-golf  array-manipulation  sorting  optimization  code-golf  math  geometry  image-processing  generation  code-golf  string  cops-and-robbers  repeated-transformation  grammars  cops-and-robbers  repeated-transformation  grammars  code-challenge  restricted-source  tips  source-layout  javascript  code-challenge  kolmogorov-complexity  restricted-source  code-golf  combinatorics  counting  math  fastest-code  linear-algebra  code-golf  math  permutations  matrix  linear-algebra  code-golf  string  decision-problem  restricted-source  code-golf  number  array-manipulation  subsequence  code-golf  number  array-manipulation  matrix  code-golf  brainfuck  code-golf  color  code-golf  quine  source-layout  code-golf  subsequence  code-golf  string  ascii-art  code-golf  string  ascii-art  alphabet  code-golf  decision-problem  interpreter  hexagonal-grid  halting-problem  code-golf  string  polynomials  calculus  code-golf  math  decision-problem  matrix  complex-numbers  code-golf  random  code-golf  number  arithmetic 

1
আমরা কি সত্যবাদী এবং মিথ্যা আউটপুট আউটপুট দেব বা দুটি ধারাবাহিক মান ঠিক আছে?
গম উইজার্ড

@ ওয়েট উইজার্ড দুটি ধারাবাহিক মান গ্রহণযোগ্য।
জংহওয়ান মিন

তবুও অনেকগুলি কাটা ওভারল্যাপ হয়, ফলাফলটি ছোট কাটকাঠামো সহ একটি ছোট ত্রিভুজের সমতুল্য (যদি কাটা অংশের দৈর্ঘ্য 0 থাকতে পারে) can
অসোন তুহিদ

উত্তর:



7

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

f n=or[mod(gcd(p^n)(4*n-1)-5)12<3|p<-[1..4*n]]

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

সমস্যায় একাধিক সংখ্যা তত্ত্ব নিক্ষেপ করে (ধন্যবাদ @ ফ্লোয়ার), আমি এই বৈশিষ্ট্যটি পেয়েছি:

n হ'ল একটি কাটা ত্রিভুজাকার সংখ্যা হ'ল যদি 4n-1 এর মৌলিক অনুষঙ্গটিতে , 5 মিম 12 বা 7 মড 12 ফর্মের যেকোন প্রাইম একাধিকবার প্রদর্শিত হয়।

এর অর্থ, উদাহরণস্বরূপ, 4n-1 5 দ্বারা বিভাজ্য নাও হতে পারে যদি না এটি আরও 5 2 = 25 দ্বারা বিভাজ্য হয় এবং 5 টি কারণের মোট সংখ্যা সমান হয়।

হাস্কেলের অন্তর্নির্মিত গুণক নেই, তবে আমরা উন্নতি করতে পারি। যদি আমরা 12 = 3 * 4 এর মতো প্রাইমস পাওয়ারগুলিতে ফ্যাক্টরীকরণের সাথে কাজ করি , আমরা সমতুল্য বিবৃতিটি ব্যবহার করতে পারি:

এন একটি ছেঁটে ফেলা ত্রিদলীয় সংখ্যা ঠিক করে এর গুণকনির্ণয় হয় 4n -1 প্রধানমন্ত্রী ক্ষমতা মধ্যে ফর্মের কোনো পদ রয়েছে 5 গেলিক ভাষার 12 বা 7 গেলিক ভাষার 12

আমরা যেমন কে হিসাবে প্রদর্শিত একটি প্রাইম পি এর শক্তি বের করতে পারি । তারপরে আমরা পরীক্ষা করে দেখি যে ফলাফল r হিসাবে 5 বা 7 মডুলো 12 নয় । দ্রষ্টব্য যে r বিজোড়। আমরা কম্পোজিটগুলি পি হিসাবেও যাচাই করি , প্রাইমগুলি থেকে সেগুলি বলার উপায় নেই, তবে চেকটি যতক্ষণ না এর কারণগুলি ততক্ষণ পার হয়ে যাবে।gcd(p^k)kmod(r-5)12>2

অবশেষে, অবহেলা >2করা <3এবং আউটপুটে স্যুইচ করা True/ পরিবর্তে Falseআমাদের orপরিবর্তে ব্যবহারের মাধ্যমে বাইট সংরক্ষণ করে and


একটি সম্পর্কিত বৈশিষ্ট্য হ'ল 4n-1 নেওয়া মডুলো 12 এর বিভাজক 5 এবং 7 এর চেয়ে বেশি মোট 1 এবং 11 এর রয়েছে।

53 বাইট

f n=sum[abs(mod k 12-6)-3|k<-[1..4*n],mod(4*n)k==1]<0

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


সত্যিই চমৎকার ব্যাখ্যা!
উভচর

6

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

f=lambda n,b=1:b>n+1or(8*n-2+3*b*b)**.5%1>0<f(n,b+1)

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

আউটপুট True/ Falseউল্টানো এই বৈশিষ্ট্যটি ব্যবহার করে:

এন একটি ছেঁটে ফেলা ত্রিদলীয় সংখ্যা ঠিক যদি 8n-2 ফর্ম আছে একটি 2 -3b 2 কিছু পূর্ণসংখ্যার জন্য A, B

আমরা যাচাই কিনা কোনো 8*n-2+3*b*bকোনো জন্য একটি নিখুঁত বর্গাকার হয় bথেকে 1থেকে n+1। আমরা এড়াতে পারি b=0কারণ এটি যখন নেতিবাচক বর্গমূলের জন্য ত্রুটি দেয় n==0তবে এটি আঘাত করতে পারে না কারণ কেবলমাত্র বিজোড়ই bকাজ করতে পারে।

পুনরাবৃত্তিযোগ্যভাবে সম্পন্ন:

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

lambda n:0in[(8*n-2+3*b*b)**.5%1for b in range(~n,0)]

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


পুনরাবৃত্ত এবং অ-পুনরাবৃত্ত সমাধানগুলি পাইথনে সাধারণত একে অপরের সাথে প্রতিযোগিতামূলক?
ববাকউক

@boboquack সাধারণত পুনরাবৃত্ত দ্রবণটি কয়েক বাইট ছাড়িয়ে জয়ী হয় range। এটি এখানে কাছে কারণ b>n+1এটি একটি দীর্ঘ বেস মামলা এবং 0inসংক্ষিপ্ত।
xnor

5

আর , 45 43 বাইট

-২ বাইট ধন্যবাদ ভলোকে

(n=scan())%in%outer(T<-cumsum(0:n),3*T,"-")

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

আমি মোটামুটি নিশ্চিত যে এর জন্য আমাদের কেবল প্রথম nত্রিভুজাকার সংখ্যা পরীক্ষা করা দরকার ; ব্রুট ফোর্স nত্রিভুজাকার সংখ্যা এবং তাদের ত্রিভুজের জোড়া যুক্ত পার্থক্যের মধ্যে রয়েছে কিনা তা পরীক্ষা করে ।


scan() n<-scan();n%in%outer(T<-cumsum(0:n),3*T,"-")
ভেলো

@ ভ্যালো ফেসপাল আমি সর্বত্র ফাংশন ব্যবহার করার অভ্যাসে পেয়েছি ...
জিউসেপ্পে

এবং আমি সবেমাত্র <(এন = স্ক্যান ()) এর পরিবর্তে অ্যাসাইনমেন্ট ব্যবহার করার অভ্যাসে পেয়েছি ... tsk tsk
Vlo

5

জেলি , 10 বাইট

0r+\ð_÷3f⁸

একটি সংঘবদ্ধ লিঙ্কটি পূর্ণসংখ্যা গ্রহণ করে এবং সত্যবাদী মান (একটি খালি তালিকা নয়) বা একটি মিথ্যা মান (একটি খালি তালিকা) ফেরত দেয়।

এটি অনলাইন চেষ্টা করুন! (পাদদেশ[0]ফলাফল যেমন রয়েছে তেমনপাইথনের প্রতিনিধিত্ব করে)
... বা একটি পরীক্ষা-স্যুট দেখুন (0 থেকে 20 সহ অন্তর্ভুক্ত)

কিভাবে?

এন প্রদত্ত, প্রথম এন ত্রিভুজ সংখ্যা তৈরি করে, প্রতিটি থেকে এনকে বিয়োগ করে, প্রতিটি ফলাফলকে 3 দ্বারা বিভক্ত করে এবং যে কোনও ফলাফল প্রথম এন ত্রিভুজ সংখ্যার মধ্যে একটি রাখে।

0r+\ð_÷3f⁸ - Link: integer, N             e.g. 7
0r         - zero inclusive range N            [    0, 1, 2,   3,    4, 5,   6,   7]
  +\       - cumulative reduce with addition   [    0, 1, 3,   6,   10,15,  21,  28]
    ð      - start a new dyadic link with that, t, on the left and N on the right
     _     - t subtract N (vectorises)         [   -7,-6,-3,  -1,    3, 8,  14,  21]
      ÷3   - divivde by three (vectorises)     [-2.33,-2,-1.33,-0.33,1,2.67,4.67, 7]
         ⁸ - chain's left argument, t          [    0, 1, 3,   6,   10,15,  21,  28]
        f  - filter keep                       [                     1             ]
                                               - a non-empty list, so truthy

4

পাইট , 10 বাইট

Đř△Đ3*ɐ-Ƒ∈

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

ব্যাখ্যা:

        Implicit input
Đ       Duplicate input
ř       Push [1,2,...,input]
△       For each element k in the array, get the kth triangle number
Đ       Duplicate the top of the stack
3*      Multiply by 3
ɐ       ɐ - All possible:
 -                       subtractions between elements of the two arrays  
Ƒ       Flatten the nested array
∈       Is the input in the array

আপনি আমাকেও এটি মারধর করেছেন, +1 জিজি
ফ্যান্টাসি

@tfbninja আমি কি একটি nicer ব্যাখ্যা ছিল ɐ-না
mudkip201

1
যোগ করা হয়েছে, আপনি চাইলে রোলব্যাক করতে পারেন
ফ্যান্টাসি


3

জে , 22 বাইট

e.[:,@(-/3*])2![:i.2+]

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

সোজা এবং কিছুটা দুর্বল-গল্ফ পদ্ধতির।

ব্যাখ্যা

e.[:,@(-/3*])2![:i.2+]
             2![:i.2+]  Range of triangular numbers up to N
      (-/3*])           All possible subtractions of 3T from T 
                        where T is triangular up to the Nth triangular number
    ,@                  Flattened into a single list
e.                      Is N in the list?

e.2,@(!-/3*!)[:i.2+]
ফ্রাউনফ্রোগ

e.2,@(!-/3*!)1+i.,]হতে পারে
ফ্রাউনফ্রগ

3

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

tQ:qYst!3*-m

1সত্যবাদী, মিথ্যা জন্য আউটপুট 0

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

উদাহরণস্বরূপ এটি কীভাবে কাজ করে

ইনপুট বিবেচনা করুন 6

t      % Implicit input. Duplicate
       % STACK: 6, 6
Q:q    % Increase, range, decrease element-wise. Gives [0 1 ... n]
       % STACK: 6, [0 1 ... 6]
Ys     % Cumulative sum
       % STACK: 6, [0 1 3 6 10 15]
t!     % Duplicate, transpose
       % STACK: 6, [0 1 3 6 10 15], [0;
                                     1;
                                     3;
                                     6;
                                     10;
                                     15]
3*     % Times 3, element-wise
       % STACK: 6, [0 1 3 6 10 15 21 28 36 45 55], [0;
                                                    3;
                                                    9;
                                                    18;
                                                    30;
                                                    45]
-      % Subtract, element-wise with broadcast
       % STACK: 6, [  0   1   3   6  10  15  21;
                     -3  -2   0   3   7  12  18;
                     -9  -8  -6  -3   1   6  12;
                    -18 -17 -15 -12  -8  -3   3;
                    -30 -29 -27 -24 -20 -15  -9;
                    -45 -44 -42 -39 -35 -30 -24;
                     -63 -62 -60 -57 -53 -48 -42]
m      % Ismember. Implicit display
       % STACK: 1



1

05 এ বি 1 , 11 বাইট

ÅT3*+8*>ŲZ

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

ব্যাখ্যা

ÅT            # get a list of triangle numbers upto input
  3*          # multiply each by 3
    +         # add input to each
     8*       # multiply each by 8
       >      # increment each
        Ų    # check each for squareness
          Z   # max

এটি একটি বেজাদার নিখুঁত বর্গক্ষেত্রের মতো একটি সংখ্যা টি ত্রিভুজাকার এটি নির্ভর করে 8T+1
আমরা ত্রিভুজগুলির তালিকাটি শুরু করি যা আমরা কেটে ফেলতে পারি, তাদের উপর ভিত্তি করে সম্ভাব্য বৃহত্তর ত্রিভুজগুলির গণনা করতে পারি এবং এটি আসলে ত্রিভুজাকৃতির কিনা তা পরীক্ষা করে নিই।


1

জাপট , 16 বাইট

ò å+ d@Zd_-3*X¶U

চেষ্টা করে দেখুন | সমস্ত পরীক্ষার কেস পরীক্ষা করুন


ব্যাখ্যা

                     :Implicit input of integer U
ò                    :Range [0,U]
  å+                 :Cumulative reduction by addition
     d@              :Does any X in array Z return true when passed through this function?
       Zd_           :  Does any element in Z return true when passe through this function?
          -3*X       :    Subtract 3*X
              ¶U     :    Check for equality with U

বিকল্প

ò å+ £Zm-3*XÃdøU

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


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