স্কয়ার ত্রিভুজ


23

ধনাত্মক পূর্ণসংখ্যার x হল বর্গাকার ত্রিভুজ সংখ্যা, যদি দুটি আলাদা ধনাত্মক পূর্ণসংখ্য, y এবং z থাকে , যা x এর চেয়ে ছোট হয় তবে সমস্তগুলি যোগফল হয়

x + y

x + z

y + z

নিখুঁত স্কোয়ার হয়।

উদাহরণস্বরূপ 30 একটি বর্গাকার ত্রিভুজ সংখ্যা কারণ

30 + 6 = 6 2

30 + 19 = 7 2

6 + 19 = 5 2


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

এটি তাই কম বাইট ভাল হওয়ার সাথে বাইটে উত্তরগুলি দেওয়া হবে।

Testcases

এখানে 1000 এর নীচে সমস্ত বর্গক্ষেত্রের ত্রিভুজ সংখ্যা রয়েছে

30,44,47,48,60,66,69,70,78,86,90,92,94,95,96,98,108,113,116,118,120,122,124,125,126,132,138,142,147,150,152,154,156,157,158,159,160,165,170,176,180,182,185,186,188,190,192,194,195,196,197,198,200,207,212,214,216,218,221,222,224,227,230,232,234,236,237,238,239,240,246,248,253,258,260,264,266,267,268,270,273,274,275,276,278,280,281,282,283,284,285,286,290,296,298,302,303,306,308,310,312,314,317,318,320,322,323,324,326,328,329,330,331,332,333,334,335,336,338,340,344,347,350,351,352,356,357,360,362,364,368,370,371,372,374,376,377,378,380,382,384,385,386,387,388,389,390,392,394,396,402,405,408,410,413,414,415,418,420,422,423,424,426,429,430,432,434,435,436,438,440,442,443,444,445,446,447,448,449,452,456,458,462,464,466,467,468,470,472,476,477,479,480,482,484,485,488,490,491,492,494,496,497,498,500,501,502,503,504,505,506,507,508,509,510,512,515,516,518,522,523,524,527,528,530,533,536,538,540,542,543,546,548,549,550,551,552,554,557,558,560,562,563,564,566,568,569,570,571,572,573,574,575,576,578,579,582,585,588,590,592,593,594,598,600,602,603,604,605,606,608,610,612,613,614,615,616,618,620,621,623,624,626,627,628,630,632,633,634,636,638,639,640,641,642,643,644,645,646,650,652,656,657,658,659,660,662,666,667,668,670,672,674,677,678,680,682,683,686,687,689,690,692,694,695,696,698,700,701,702,704,706,707,708,709,710,711,712,713,714,715,716,717,718,719,720,722,723,726,728,730,734,737,739,740,742,744,745,746,750,752,755,756,758,760,762,764,765,767,768,770,772,773,774,776,778,779,780,782,783,784,785,786,788,789,790,791,792,793,794,795,796,797,798,800,802,803,804,805,810,812,814,816,817,818,819,820,822,825,826,827,828,829,830,832,833,834,836,837,838,840,842,846,847,848,849,850,851,852,854,855,856,858,860,861,862,863,864,866,867,868,869,870,871,872,873,874,875,876,877,878,879,880,882,884,888,890,891,893,896,897,898,902,903,904,905,908,912,913,914,915,916,918,920,923,924,926,927,928,929,931,932,933,935,936,938,940,941,942,944,946,947,948,950,952,953,954,955,956,957,958,959,960,961,962,963,964,965,966,967,968,970,972,974,976,978,980,981,984,986,987,988,992,993,995,996,998

ওইআইএস এ 242445



@ মিঃ এক্সকোডার ধন্যবাদ! আমার সম্ভবত প্রথমে OEIS পরীক্ষা করা উচিত ছিল। এটি আরও অনুসন্ধানযোগ্য করতে আমি এটি শরীরে যুক্ত করব।
গম উইজার্ড

স্পষ্টকরণের উদ্দেশ্যে, "... যদি দুটি ভিন্ন ধনাত্মক পূর্ণসংখ্যক y এবং z থাকে, যা x এর চেয়ে ছোট ..." মানে কি y < xএবং z < xযে y+z < x?
জে। স্যালি

2
@ জে.সালোé প্রাক্তন
গম উইজার্ড

এখানে ইনপুট এবং আউটপুট সহ পরীক্ষার কেস অনুপস্থিত
রোজলুপি

উত্তর:



7

জেলি , 12 বাইট

R²_fṖŒcS€Æ²Ẹ

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

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

R²_fṖŒcS€Æ²Ẹ  Main link. Argument: x

R             Range; yield [1, 2, ..., x].
 ²            Square; yield [1², 2², ..., x²].
  _           Subtract; yield [1²-x, 2²-x, ..., x²-x].
    Ṗ         Pop; yield [1, 2, ..., x-1].
   f          Filter; keep those values of n²-x that lie between 1 and x-1.
              This list contains all integers n such that n+x is a perfect square.
              We'll try to find suitable values for y and z from this list.
     Œc       Yield all 2-combinations [y, z] of these integers.
       S€     Take the sum of each pair.
         Ʋ   Test each resulting integer for squareness.
           Ẹ  Any; check is the resulting array contains a 1.


7

ব্র্যাচল্যাগ , 19 বাইট

~hṪ>₁ℕ₁ᵐ≜¬{⊇Ċ+¬~^₂}

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

এছাড়াও 19 বাইট: ~hṪ>₁ℕ₁ᵐ≜{⊇Ċ+}ᶠ~^₂ᵐ

ব্যাখ্যা

~hṪ                    Ṫ = [Input, A, B]
  Ṫ>₁                  Ṫ is strictly decreasing (i.e. Input > A > B)
  Ṫ  ℕ₁ᵐ               All members of Ṫ are in [1, +∞)
  Ṫ     ≜              Assign values to A and B that fit those constraints
  Ṫ      ¬{       }    It is impossible for Ṫ…
           ⊇Ċ            …that one of its 2-elements subset…
            Ċ+           …does not sum…
              ¬~^₂       …to a square

4

পাওয়ারশেল , 150 বাইট

param($x)filter f($a,$b){($c=[math]::Sqrt($a+$b))-eq[math]::Floor($c)}1..($i=$x-1)|%{$y=$_;1..$i|%{$o+=+($y-ne$_)*(f $x $y)*(f $x $_)*(f $y $_)}};!!$o

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

ইনপুট নেয় $x। স্থাপন একটি filterদুটি ইনপুট উপর (এখানে একটি ফাংশন সমতূল্য) $a,$b, যা iff একটি বুলিয়ান ফেরৎ সত্য [math]::sqrtএর $a+$bহয় -eqকরতে ual Floorযে বর্গমূল (অর্থাৎ, এটি একটি পূর্ণসংখ্যা বর্গমূল এর)।

এটির বাকি অংশটি প্রোগ্রামের মাংস। আমরা লুপ আপ থেকে ডাবল 1জন্য $x-1। প্রতিটি পুনরাবৃত্তির, আমরা চেক কিনা $yহয় -nOT eগণদেবতা করতে $_(অর্থাত, $ z), বা এবং ফাংশন সব সমন্বয় জন্য সত্য কিনা $x, $yএবং $_। যদি এটি হয় তবে এটি একটি $oদ্বারা বাড়ানো হয় (এটি এটিকে শূন্য নয়)।

শেষ অবধি, আমরা ডাবল-বুলিয়ান-নেগেট $o, যা 0রূপান্তরিত হয় Falseএবং অ-শূন্যকে রূপান্তরিত করে True। এটি পাইপলাইনে রেখে গেছে এবং আউটপুট অন্তর্ভুক্ত।


4

হাস্কেল , 75 69 বাইট

f x=or[all(`elem`map(^2)[1..x])[x+y,x+z,y+z]|y<-[1..x-1],z<-[1..y-1]]

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

যদি কোনও সংখ্যা বর্গক্ষেত্র হয় তবে কেউ যদি পরীক্ষা করার জন্য আরও ছোট উপায় জানেন তবে সম্ভবত উন্নতি করা যেতে পারে। আমি নিশ্চিত sqrtযে floorব্যবহারগুলি দীর্ঘকাল দীর্ঘস্থায়ী হওয়া উচিত কারণ ফলাফলটি অবিচ্ছেদ্য ধরণের হয়ে যায় যাতে আপনি fromIntegralমূলটির সাথে তুলনা করার আগে আপনাকে কোথাও প্রবেশ করাতে হবে।

সম্পাদনা করুন: ধন্যবাদ @ ওয়েট উইজার্ড 6 বাইট ছাড়ার জন্য!


4

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

f=
n=>(g=i=>i?--j?[n+i,i+j,j+n].some(e=>e**.5%1)?g(i):1:g(j=i-1):0)(j=n-1)
<input type=number min=1 oninput=o.textContent=f(+this.value)><pre id=o>


মনে হচ্ছে আপনি 2 মিনিটের মধ্যে আমাকে নিনজা করেছেন। :) আমাদের উত্তরগুলি খুব কাছে, তাই আমি কি আমার মুছতে পারি?
আর্নল্ড

@ আরনাউল্ড না, আমি নিশ্চিত আপনি স্বাধীনভাবে সমাধানে এসেছেন।
নীল

4

05 এ বি 1 ই , 18 বাইট

Lns-IL¨Ãæ2ù€OŲO0›

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

 -3  -1 বাইট এবং একটি স্থির জন্য Emigna ধন্যবাদ !


আপনার দু'জনের উভয়ই nএবং Oভেক্টরাইজ করার দরকার নেই। এটিতেও কার্যকর হয় না কারণ চূড়ান্ত 2 বাইট অন্তত 1 মান সহ যে কোনও তালিকার ক্ষেত্রে সত্য ফিরে আসবে, এমনকি যদি কেবলমাত্র ভ্যালু মান থাকে। Zপরিবর্তে ব্যবহার করে এটি স্থির (এবং সংক্ষিপ্ত) করা যায় ।
Emigna

@ এমিগনা আপনাকে ধন্যবাদ! (বিটিডব্লিউ আমার প্রয়োজন ছিল €Oএবং সে কারণেই পূর্ববর্তী পদ্ধতিটি কাজ করেছিল )
মিঃ এক্সকোডার

যদিও এটি কাজ করে না। উদাহরণস্বরূপ চেক করুন 45, এটি মিথ্যা প্রত্যাবর্তন করা উচিত।
Emigna

হুম, ঠিক আছে। যাইহোক, এখন আপডেট হয়েছে। ধন্যবাদ
মিঃ এক্সকোডার

পছন্দ করুন ধন্যবাদ
মিঃ এক্সকোডার

3

আর , 79 বাইট

function(x){s=(1:x)^2
S=outer(y<-(z=s-x)[z>0&z<x],y,"+")
diag(S)=0
any(S%in%s)}

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

এর y,zসাথে সমস্ত মানগুলি y<-(z=s-x)[z>0&z<x]গণনা করে, তারপরে তাদের সমস্ত অঙ্কগুলি গণনা করে outer(y,y,"+")। এটি একটি বর্গক্ষেত্রের ম্যাট্রিক্স দেয় যেখানে অফ-তির্যক এন্ট্রিগুলি সম্ভাব্য স্কোয়ার হয়, y==zকেবল যদি সেগুলি তির্যক হয়। তাই, diag(S)=0শুন্যতে কর্ণ, যা নিখুঁত স্কোয়ার নয় সেট করে, এবং আমরা কিনা তা দেখতে পরীক্ষা anyউপাদান Sহল %in%s


3

এসডাব্লুআই-প্রোলগ , 88 বাইট

s(A,B,C):-between(A,B,C),C<B,between(1,B,X),B+C=:=X*X.
g(X):-s(1,X,Y),s(Y,X,Z),s(Y,Z,Y).

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

s(A, B, C) :-
    between(A, B, C), % Find an integer C between A and B (inclusive),
    C < B,            % which is less than B.
    between(1, B, X), % Find an integer X between 1 and B (inclusive),
    B+C =:= X*X.      % of which (B+C) is the square.
g(X) :-
    s(1, X, Y), % Find Y: 1 <= Y < X, and X+Y is a perfect square
    s(Y, X, Z), % Find Z: Y <= Z < X, and X+Z is a perfect square
    s(Y, Z, Y). % Make sure that Z > Y and Y+Z is a perfect square

g(X) এটি এমন নিয়ম যা প্যারামিটার হিসাবে একটি পূর্ণসংখ্যা নেয় এবং এটি বর্গক্ষেত্র ত্রিভুজ সংখ্যা কিনা (সত্য / মিথ্যা) আউটপুট করে।


2

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

রিটার্ন 0বা 1

x=>(g=y=>z?y>z?![x+y,x+z,y+z].some(n=>n**.5%1)|g(y-1):g(x-1,z--):0)(z=x)

ডেমো


2

সি, 113 বাইট

p(n){return(int)sqrt(n)==sqrt(n);}f(x,y,z,r){for(r=y=0;++y<x;)for(z=y;++z<x;p(x+y)&p(x+z)&p(z+y)&&++r);return!r;}

ফেরত পাঠায় 0সংখ্যা বর্গ ত্রিভুজ, যদি 1অন্যথায়।

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


আমি অনুমান করছি যে আরও স্পষ্ট হিসাবে বিরোধী হিসাবে return(int)sqrt(n)==sqrt(n)পার্স করা হচ্ছে ? না পারলে কী করছে বুঝিয়ে দিতে ? return((int)sqrt(n))==sqrt(n)return(int)(sqrt(n)==sqrt(n))p
এমডি এক্সএফ

@ এমডিএক্সএফ প্রকারের কাস্টের চেয়ে বেশি অগ্রাধিকার রয়েছে ==, সুতরাং আপনার অনুমানের মতো প্রকাশটি পার্স করা হয়েছে ((int)sqrt(n))==sqrt(n)
স্টেডিবক্স


2

জেলি , 15 বাইট

ṖŒc;€ŒcS€Æ²ẠƊ€Ẹ

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

কিভাবে?

;C; € ŒcS € ƲẠƊ € Ẹ || পুরো প্রোগ্রাম।
                ||
Ṗ || পপ রেঞ্জ ফলন [1, এন) ∩ ℤ।
 ||c || জুড়ি (দ্বি-উপাদান সমন্বয়)।
   ; € || প্রতিটি এন যোগ করুন।
            । € || প্রতিটি তালিকার জন্য, পরীক্ষা করুন:
           Ạ || ... সব ...
       এস € || ... তাদের প্রত্যেকের যোগফল ...
     ||c || ... জোড়া লাগা
         Ʋ || ... নিখুঁত স্কোয়ার।
              Ẹ || উপরোক্ত বিষয়গুলিকে সন্তুষ্ট করে এমন কোনও মান আছে কিনা তা পরীক্ষা করুন।    



1

জুলিয়া 0.6 , 61 বাইট

ফাংশন থেকে পড়া শুরু করুন all। প্রথম যুক্তিটি একটি বেনামে ফাংশন যাচাই করে যে কোনও সংখ্যার বর্গমূল একটি পূর্ণসংখ্যা, এটি দ্বিতীয় আর্গুমেন্টে প্রতিটি মানের জন্য প্রয়োগ করা হয়। একক যুক্তিanyGeneratorলুপগুলির জন্য দুটি সহ একটি হ'ল যা প্রতিটি পুনরাবৃত্তির জন্য allফাংশনের আউটপুট ধারণ করে ।

-২ বাইটের জন্য মিঃ এক্সকোডারকে ধন্যবাদ।

x->any(all(x->√x%1==0,[x+y,x+z,y+z])for y=1:x-1for z=1:y-1)

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


1

পাইট , 63 বাইট

0←Đ⁻Đ`⁻Đ3ȘĐ3Ș+√ĐƖ=4ȘĐ3ȘĐ3Ș+√ĐƖ=4ȘĐ3ȘĐ3Ș+√ĐƖ=4Ș6Ș**4Ș↔+↔łŕ⁻Đłŕŕŕ

Y, z এর সমস্ত সম্ভাব্য সংমিশ্রণগুলি পরীক্ষা করে এটি 1≤z <y <x

X অন্যদিকে 0 বর্গাকার ত্রিভুজ সংখ্যা হলে 1 প্রদান করে

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


1

এমএটিএল , 20 19 18 বাইট

q:2XN!tG+wsvX^1\aA

এটি অনলাইন চেষ্টা করুন!ভুয়া জন্য 1, সত্যের জন্য 0 প্রদান করে।

500 টি পর্যন্ত টেস্টকেস: এটি অনলাইনে ব্যবহার করে দেখুন! ( Hপরিবর্তে ব্যবহার করে G)। রানটাইম ইনপুট আকার দ্বিঘাত, তাই থেকে testcases enumerating 1করার nমধ্যে রান O(n^3), যার কারণে সব testcases আপ 1000 বার Tio আউট enumerating।

  • -১ বাইট এবং একটি অনুমান কম লুইস মেন্ডোকে ধন্যবাদ
  • পূর্ণসংখ্যা-নেসের আরও চতুর চেক দ্বারা -1 বাইট।

অপসারণ qএকটি উপসেট হিসাবে কাঙ্ক্ষিত সিকোয়েন্স সহ একটি ক্রম উত্পন্ন করে, তবে তার সীমাবদ্ধতা ছাড়াই yএবং এর zচেয়ে কঠোরভাবে ছোট হোক x। একটি উদাহরণ x=18, y=7, z=18

q:    % Push 1...n-1
2XN   % Generate all permuations of choosing 2 numbers from the above.
!     % Transpose to take advantage of column-wise operators later on.
 G+   % Add n to these combinations, to have all combos of x+y and x+z
t  ws % Duplicate the combinations, swap to the top of the stack and sum to get y+z.
v     % Concatenate vertically. The array now contains columns of [x+y;x+z;y+z].
X^    % Element-wise square root of each element
1\    % Get remainder after division by 1.
a     % Check if any have remainders, columnwise. If so, it is not a square triangle.
A     % Check whether all combinations are not square triangle.

ধন্যবাদ লুইস মেন্ডো খুব খারাপ, আমি আমার অনুমানের উত্তর আশা করছিলাম, তবে আমি প্রমাণের জন্য কিছু প্রচেষ্টা না করে ম্যাথ.এসইতে এটি জিজ্ঞাসা করতে পারি না ...
সানচাইসেস

1
qchu.wordpress.com/2009/07/02/… এখানে আপনি যান
মুডকিপ ২০১201

-1

এপিএল ন্যারস, 340 বাইট

r←h n;i;j;k
   r←¯1⋄→0×⍳(n≤0)∨n≥9E9
   l←(-n)+2*⍨(⌈√n)..⌊√¯1+2×n
   l←(l>0)/l
   r←1⋄i←0⋄k←⍴l
A: →C×⍳k≤i+←1⋄j←i+1
B: →A×⍳j>k⋄→0×⍳0=1∣√(i⊃l)+j⊃l⋄j+←1⋄→B
C: r←0

পরীক্ষা

      :for i :in ⍳100⋄k←h i⋄:if 1=k⋄⍞←' ',i⋄:endif⋄:endfor⋄⎕←' '
  30  44  47  48  60  66  69  70  78  86  90  92  94  95  96  98 
      (¯5..5),¨h¨¯5..5
 ¯5 ¯1  ¯4 ¯1  ¯3 ¯1  ¯2 ¯1  ¯1 ¯1  0 ¯1  1 0  2 0  3 0  4 0  5 0 
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.