वर्ग त्रिकोण


23

एक धनात्मक पूर्णांक x एक वर्गाकार त्रिभुज संख्या है यदि दो अलग-अलग धनात्मक पूर्णांक होते हैं, y और z , जो x से छोटे हैं जैसे कि सभी sums

x + y

x + z

y + z

सही वर्ग हैं।

उदाहरण के लिए 30 एक वर्ग त्रिकोण संख्या है क्योंकि

30 + 6 = 6 2

30 + 19 = 7 2

6 + 19 = 5 2


आपका कार्य कुछ कोड लिखना है जो इनपुट के रूप में एक सकारात्मक पूर्णांक लेता है और यह निर्धारित करता है कि यह एक वर्ग त्रिकोण संख्या है या नहीं। आपको दो अलग-अलग मानों में से एक का उत्पादन करना चाहिए, एक यदि इनपुट एक वर्ग त्रिकोण संख्या है और दूसरा अन्यथा।

यह इसलिए उत्तर बाइट्स में कम बाइट के साथ बेहतर स्कोर किए जाएंगे।

परीक्षण के मामलों

यहाँ 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

OEIS A242445



@ Mr.Xcoder धन्यवाद! मुझे शायद पहले OEIS की जाँच करनी चाहिए थी। मैं इसे और अधिक खोज करने के लिए शरीर में जोड़ दूँगा।
गेहूं जादूगर

स्पष्टीकरण के प्रयोजनों के लिए, "... अगर दो अलग-अलग सकारात्मक पूर्णांक हैं, तो y और z, जो x से छोटे हैं ..." का अर्थ है कि y < xऔर z < xया y+z < x?
जे। साले

2
@ जे.सैल पूर्व
गेहूं जादूगर

यहाँ इनपुट और आउटपुट के साथ परीक्षण का मामला अनुपस्थित है
RosLuP

जवाबों:



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 equal के लिए $_(यानी, $ जेड), और समारोह के सभी संयोजनों के लिए सच है कि क्या $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 बाइट्स को हटाने के लिए धन्यवाद @Wheat विज़ार्ड!


4

जावास्क्रिप्ट (ईएस 7), 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 मिनट के लिए निंजा चाहते हो। :) हमारे जवाब बहुत करीब हैं, तो क्या मुझे मेरा हटाना होगा?
अरनुलद

@Arnauld नहीं, मुझे यकीन है कि आप स्वतंत्र रूप से अपने समाधान पर पहुंचे हैं।
नील

4

05AB1E , 18 बाइट्स

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

इसे ऑनलाइन आज़माएं!

 -3  -1 बाइट और एक फिक्स के लिए एमिग्ना के लिए धन्यवाद !


तुम दोनों के रूप में 2 की जरूरत नहीं है nऔर Oवेक्टर। यह भी काम नहीं करता है क्योंकि अंतिम 2 बाइट्स कम से कम 1 मान के साथ किसी भी सूची के लिए सही वापस आ जाएंगे, भले ही केवल झूठे मूल्य शामिल हों। इसके Zबजाय उपयोग करके इसे ठीक किया जा सकता है (और छोटा किया जा सकता है) ।
इमीना

@Emigna धन्यवाद! (BTW मुझे ज़रूरत थी €Oऔर इसीलिए पिछले दृष्टिकोण के साथ काम किया था )
श्री एक्सकोडर

हालांकि यह काम नहीं किया। उदाहरण के लिए जाँच करें 45, कि झूठे वापस आना चाहिए।
एमिगा

उम हुह, ठीक है। वैसे भी, अब अद्यतन। धन्यवाद
श्री जेकोडर

@ सेंचुरीज़ फिक्स्ड। धन्यवाद
श्री

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

जावास्क्रिप्ट (ईएस 7), 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कर रहा है?
एमडी एक्सएफ

@MDXF प्रकार की कास्ट की तुलना में अधिक पूर्वता है ==, इसलिए ((int)sqrt(n))==sqrt(n)जैसे आपने अनुमान लगाया था , अभिव्यक्ति अभिव्यक्त हुई है ।
स्टेयडबॉक्स


2

जेली , 15 बाइट्स

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

इसे ऑनलाइन आज़माएं!

कैसे?

ṖŒc; € ŒcS € ṖŒ €। || पूरा कार्यक्रम।
                ||
Ṗ || कटा हुआ रेंज। पैदावार [1, एन) N N।
 Œc || जोड़े (दो-तत्व संयोजन)।
   ; € || प्रत्येक में एन जोड़ें।
            Ɗ € || प्रत्येक सूची के लिए, जाँच करें कि:
           Ạ || ... सब ...
       S € || ... उनके प्रत्येक के योग ...
     Œc || ... जोड़े को खारिज करें
         Ʋ || ... सही वर्ग हैं।
              Ẹ || परीक्षण करें कि क्या कोई मूल्य है जो उपरोक्त को संतुष्ट करता है।    



1

जूलिया 0.6 , 61 बाइट्स

समारोह से पढ़ना शुरू करें all। पहला तर्क एक अनाम फ़ंक्शन है जो यह जाँचता है कि किसी संख्या का वर्गमूल एक पूर्णांक है, यह दूसरे तर्क में प्रत्येक मान पर लागू होता है। करने के लिए एक तर्क anyएक है Generatorछोरों के लिए दो, जो प्रत्येक यात्रा के लिए के उत्पादन में शामिल हैं के साथ allकार्य करते हैं।

-2 बाइट्स के लिए मिस्टर एक्सकोडर का धन्यवाद।

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

इसे ऑनलाइन आज़माएं!


1

Pyt , 63 बाइट्स

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

Y, z जैसे कि 1 possiblez <y <x के सभी संभावित संयोजनों का परीक्षण करें

1 रिटर्न अगर x एक वर्ग त्रिकोण संख्या है, तो अन्यथा

इसे ऑनलाइन आज़माएं!


1

MATL , 20 19 18 बाइट्स

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

इसे ऑनलाइन आज़माएं! झूठे के लिए 1, सच्चाई के लिए 0।

500 तक टेस्टकेस: इसे ऑनलाइन आज़माएं! (के Hबजाय का उपयोग कर G)। रनटाइम इनपुट आकार में द्विघात है, इसलिए टेस्टकेस 1को nरन से इन्यूमरेट करना है O(n^3), यही कारण है कि टीआईओ पर 1000 बार तक सभी टेस्टकेस की गणना करना।

  • -1 बाइट और एक अनुमान कम @LuisMendo का धन्यवाद
  • पूर्णांक-नेस की अधिक चतुर जांच द्वारा -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.

@LuisMendo धन्यवाद। बहुत बुरा, मैं अपने अनुमान के जवाब की उम्मीद कर रहा था, लेकिन मैं इसे सिर्फ Math.SE में नहीं पूछ सकता। बिना किसी प्रमाण के कुछ प्रयास दिखाए ...
Sanchises

1
qchu.wordpress.com/2009/07/02/… यहाँ पर आप जाते हैं
mudkip201

-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 
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.