ट्राइथागोरियन ट्राइएंगल


16

एक पायथागॉरियन ट्रिपल समीकरण को एक सकारात्मक पूर्णांक समाधान है:

पायथागॉरियन ट्रिपल

एक ट्राइथागोरियन ट्रिपल समीकरण का एक सकारात्मक पूर्णांक समाधान है:

ट्राइथागोरियन समीकरण

जहाँ trin को n n त्रिकोणीय संख्या मिलती है । सभी ट्राइथागोरियन त्रिभुज भी समीकरण के समाधान हैं:

यहाँ छवि विवरण दर्ज करें

कार्य

एक सकारात्मक पूर्णांक को देखते हुए c, सभी पूर्णांक के धनात्मक पूर्णांक को आउटपुट करते हैं a,bजैसे कि aवें और bवें त्रिकोणीय संख्याओं का योग वें त्रिकोणीय संख्या है c। आप जोड़े को आउटपुट कर सकते हैं जो कुछ भी सबसे सुविधाजनक है। आपको केवल प्रत्येक जोड़ी को एक बार आउटपुट करना चाहिए।

यह

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

2: []
3: [(2, 2)]
21: [(17, 12), (20, 6)]
23: [(18, 14), (20, 11), (21, 9)]
78: [(56, 54), (62, 47), (69, 36), (75, 21), (77, 12)]
153: [(111, 105), (122, 92), (132, 77), (141, 59), (143, 54), (147, 42), (152, 17)]
496: [(377, 322), (397, 297), (405, 286), (427, 252), (458, 190), (469, 161), (472, 152), (476, 139), (484, 108), (493, 54), (495, 31)]
1081: [(783, 745), (814, 711), (836, 685), (865, 648), (931, 549), (954, 508), (979, 458), (989, 436), (998, 415), (1025, 343), (1026, 340), (1053, 244), (1066, 179), (1078, 80), (1080, 46)]
1978: [(1404, 1393), (1462, 1332), (1540, 1241), (1582, 1187), (1651, 1089), (1738, 944), (1745, 931), (1792, 837), (1826, 760), (1862, 667), (1890, 583), (1899, 553), (1917, 487), (1936, 405), (1943, 370), (1957, 287), (1969, 188)]
2628: [(1880, 1836), (1991, 1715), (2033, 1665), (2046, 1649), (2058, 1634), (2102, 1577), (2145, 1518), (2204, 1431), (2300, 1271), (2319, 1236), (2349, 1178), (2352, 1172), (2397, 1077), (2418, 1029), (2426, 1010), (2523, 735), (2547, 647), (2552, 627), (2564, 576), (2585, 473), (2597, 402), (2622, 177), (2627, 72)]
9271: [(6631, 6479), (6713, 6394), (6939, 6148), (7003, 6075), (7137, 5917), (7380, 5611), (7417, 5562), (7612, 5292), (7667, 5212), (7912, 4832), (7987, 4707), (8018, 4654), (8180, 4363), (8207, 4312), (8374, 3978), (8383, 3959), (8424, 3871), (8558, 3565), (8613, 3430), (8656, 3320), (8770, 3006), (8801, 2914), (8900, 2596), (8917, 2537), (9016, 2159), (9062, 1957), (9082, 1862), (9153, 1474), (9162, 1417), (9207, 1087), (9214, 1026), (9229, 881), (9260, 451), (9261, 430), (9265, 333)]

क्या हम बार-बार जोड़े का उत्पादन कर सकते हैं? उदाहरण के लिए, 21आउटपुट के लिए[(17, 12), (20, 6), (12, 17), (6, 20)]
लुइस मेंडो

7
मुझे लगा कि आप हमें खोजने के लिए कह रहे हैं a^3+ b^3 = c^3। : डी
बीटा डिके

@LuisMendo No. मैं इसे प्रश्न में शामिल करूँगा।
पोस्ट रॉक गार्फ हंटर

3
@ बेताडेई MATL, 0 बाइट्स
लुइस

3
@EriktheOutgolfer के a^3+ b^3 = c^3पास पूर्णांक समाधान नहीं है; देख फर्मेट के अंतिम प्रमेय
लुइस Mendo

जवाबों:


7

गणितज्ञ, ५३ ४ ९ ४ by बाइट्स

Solve[{x.(x+1)==#^2+#,a>=b>0},x={a,b},Integers]&

उदाहरण:

In[1]:= Solve[{x.(x+1)==#^2+#,a>=b>0},x={a,b},Integers]&[21]

Out[1]= {{a -> 17, b -> 12}, {a -> 20, b -> 6}}

ऊह, अच्छा वैश्वीकरण, जो मैंने किया है, उससे बेहतर होगा
ग्रेग मार्टिन

6

MATL , 17 13 बाइट्स

:Ys&+G:s=R&fh

प्रत्येक जोड़ी पहले छोटी संख्या के साथ आउटपुट है।

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

व्याख्या

इनपुट पर विचार करें 3

:      % Implicitly input n. Push [1 2 ... n]
       % STACK: [1 2 3]
Ys     % Comulative sum
       % STACK: [1 3 6]
&+     % All pairwise sums
       % STACK: [2 4 7; 4 6 9; 7 9 12]
G:s    % Push 1+2+...+n
       % STACK: [2 4 7; 4 6 9; 7 9 12], 6
=      % Is equal?
       % STACK: [0 0 0; 0 1 0; 0 0 0]
R      % Upper triangular part of matrix. This removes duplicate pairs
       % STACK: [0 0 0; 0 1 0; 0 0 0]
&f     % Push row and column indices (1-based) of non-zero entries
       % STACK: 2, 2
h      % Concatenate horizontally. Implicitly display
       % STACK: [2, 2]

कृपया स्पष्टीकरण दें?
द एग्री द आउटग्रीक

@EriktheOutgolfer ज़रूर, मैं इसे बाद में दिन में जोड़ूंगा
लुइस मेंडो

बस सुनिश्चित करें कि आप अद्वितीय जोड़े का उत्पादन करते हैं, मुख्यतः यही कारण है कि मैंने पूछा।
२४'१

@EriktheOutgolfer हां, वे अद्वितीय हैं (इस बात Rका ख्याल रखती हैं)
लुइस मेंडू

1
@EriktheOutgolfer स्पष्टीकरण में कहा गया है
लुइस

6

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

j‘c2ḅ-
ŒċçÐḟ

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

यह काम किस प्रकार करता है

ŒċçÐḟ   Main link. Argument: c

Œċ      Yield all 2-combinations w/repetition of elements of [1, ..., c].
  çÐḟ   Filterfalse; keep only 2-combinations for which the helper link returns 0.


j‘c2ḅ-  Helper link. Left argument: [a, b]. Right argument: c

j       Join [a, b] with separator c, yielding [a, c, b].
 ‘      Increment; yield [a+1, c+1, b+1].
  c2    Combination count; compute [C(a+1,c), C(c+1,c), C(b+1,c)], yielding
        [½a(a+1), ½c(c+1), ½b(b+1)].
    ḅ-  Convert from base -1 to integer, yielding
        ½(-1)²a(a+1) + ½(-1)¹c(c+1) + ½(-1)⁰b(b+1) = ½(a(a+1) - c(c+1) + b(b+1)),
        which is 0 if and only if a(a+1) + b(b+1) = c(c+1).

4

पायथन 2, 69 बाइट्स

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

lambda c:[(a,b)for a in range(c)for b in range(a+1)if~a*a==c*~c-~b*b]

-9 बाइट्स, @WheatWizard को धन्यवाद


और ~a*a==c*~c-~b*bएक बाइट से छोटी है। इसे ऑनलाइन आज़माएं!
पोस्ट रॉक गार्फ हंटर

@WheatWizard अच्छी सामग्री: D
मृत

4

जेली , 16 14 बाइट्स

RS
ŒċÇ€S$⁼¥ÐfÇ

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

यह सुनिश्चित करने के लिए बहुत लंबा है ...

स्पष्टीकरण:

ŒċÇ€S$⁼¥ÐfÇ (main) Arguments: z
Œċ             Return [[1, 1], [1, 2], ..., [1, z], [2, 2], ..., [z, z]]
          Ç    Return T(z)
  Ç€S$⁼¥Ðf     Only keep the pairs such as ΣT(a, b)=T(z)

RS (helper 1) Arguments: z
R  [1, 2, ..., z]
 S Take the sum

4

AWK , 72 बाइट्स

{for(n=$1;++i<=n;)for(j=i;j<=n;++j)if(i^2+j^2+i+j==n^2+n)$0=$0" "i":"j}1

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

आउटपुट है c a1:b1 a2:b2 ...। TIO लिंक में मल्टीलाइन i=0;इनपुट के लिए 4 अतिरिक्त बाइट्स हैं ।

यह सब कुशल नहीं है, लेकिन यह काम करता है। :)





2

Axiom, 281 204 196 191 बाइट्स

q(b,m)==(r:=1+4*m;v:=4.*b*(b+1);r<v=>0;(sqrt(r-v)-1)/2);g(c:NNI):Any==(r:List List INT:=[];i:=0;repeat(i:=i+1;i>=c=>break;w:=q(i,c^2+c);w>=i and fractionPart(w)=0=>(r:=cons([w::INT,i],r)));r)

परीक्षण और ungolf

-- if m=c^2+c than a^2+a+b^2+b-m=0 has the solutions [a,b] with a>0,b>0
-- if it is used a=(-1+sqrt(1+4*m-4*(b)*(b-1)))/2 because the other return a<0
-- o(b,m) return that solution if 1+4*m-4*(b)*(b-1)>0 [so exist in R sqrt] else return 0
o(b,m)==(r:=1+4*m;v:=4.*b*(b+1);r<v=>0;(sqrt(r-v)-1)/2)

--it Gets one not negative integer c; return one list of list(ordered) of 2 integers
--[a,b] with  a^2+a+b^2+b=c^2+c
gg(c:NNI):List List INT==
   r:List List INT:=[]  -- initialize the type make program more fast at last it seems 10x
   i:=0
   repeat
      i:=i+1
      i>=c=>break
      w:=o(i,c^2+c)
      w>=i and fractionPart(w)=0=>(r:=cons([w::INT,i],r))
   r

(6) -> [[i,g(i)]  for i in [2,3,21,23,78,153,496,1081,1978,2628,9271]]
   (6)
   [[2,[]], [3,[[2,2]]], [21,[[17,12],[20,6]]], [23,[[18,14],[20,11],[21,9]]],
    [78,[[56,54],[62,47],[69,36],[75,21],[77,12]]],
    [153,[[111,105],[122,92],[132,77],[141,59],[143,54],[147,42],[152,17]]],

     [496,
       [[377,322], [397,297], [405,286], [427,252], [458,190], [469,161],
        [472,152], [476,139], [484,108], [493,54], [495,31]]
       ]
     ,

     [1081,
       [[783,745], [814,711], [836,685], [865,648], [931,549], [954,508],
        [979,458], [989,436], [998,415], [1025,343], [1026,340], [1053,244],
        [1066,179], [1078,80], [1080,46]]
       ]
     ,

     [1978,
       [[1404,1393], [1462,1332], [1540,1241], [1582,1187], [1651,1089],
        [1738,944], [1745,931], [1792,837], [1826,760], [1862,667], [1890,583],
        [1899,553], [1917,487], [1936,405], [1943,370], [1957,287], [1969,188]]
       ]
     ,

     [2628,
       [[1880,1836], [1991,1715], [2033,1665], [2046,1649], [2058,1634],
        [2102,1577], [2145,1518], [2204,1431], [2300,1271], [2319,1236],
        [2349,1178], [2352,1172], [2397,1077], [2418,1029], [2426,1010],
        [2523,735], [2547,647], [2552,627], [2564,576], [2585,473], [2597,402],
        [2622,177], [2627,72]]
       ]
     ,

     [9271,
       [[6631,6479], [6713,6394], [6939,6148], [7003,6075], [7137,5917],
        [7380,5611], [7417,5562], [7612,5292], [7667,5212], [7912,4832],
        [7987,4707], [8018,4654], [8180,4363], [8207,4312], [8374,3978],
        [8383,3959], [8424,3871], [8558,3565], [8613,3430], [8656,3320],
        [8770,3006], [8801,2914], [8900,2596], [8917,2537], [9016,2159],
        [9062,1957], [9082,1862], [9153,1474], [9162,1417], [9207,1087],
        [9214,1026], [9229,881], [9260,451], [9261,430], [9265,333]]
       ]
     ]
                                                      Type: List List Any

1

सीजेएम , 30 28 बाइट्स

{_,2m*:$_&f+{{_)*}%~+=},1f>}

बेनामी ब्लॉक स्टैक पर अपने तर्क की उम्मीद करता है और स्टैक पर परिणाम छोड़ता है।

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

व्याख्या

मैं इनपुट के रूप में संदर्भित करूंगा n

_,     e# Copy n, and get the range from 0 to n-1.
2m*    e# Get the 2nd Cartesian power of this range.
:$_&   e# Sort the pairs and deduplicate, to get all unique pairs.
f+     e# Prepend n to each pair.
{      e# Filter these triplets; keep only those that give a truthy result:
 {     e#  Map this block over the triplet:
  _)*  e#   Multiply x by x+1. (i.e. x^2 + x)
 }%    e#  (end map)
 ~+=   e#  Check if the sum of the second and third is equal to the first.
},     e# (end filter)
1f>    e# Remove the first element from all remaining triplets.

1

पायथ - 23 21 बाइट्स

L*bhbfqyQ+yhTyeT.CUQ2

कोशिश करो

L*bhbfqyQ+yhTyeT.CUQ2
L*bhb                     Define y(b)=b*(b+1)
                .CUQ2     All pairs of numbers less than the input
     fqyQ+yhTyeT          Filter based on whether y(input) == y(1st elem. of pair) + y(2nd elem. of pair)

1

जावास्क्रिप्ट (ईएस 6), 83 बाइट्स

c=>[...Array(c*c)].map((_,x)=>[x%c,x/c|0]).filter(([a,b])=>a>=b&a++*a+b++*b==c*c+c)

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

यहां पर सबसे बड़ा इनपुट है जो स्निपेट के लिए बहुत अधिक समय लेता है।

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