APL (NARS), 373 자, 746 바이트
C←{h←{0=k←⍺-1:,¨⍵⋄(k<0)∨k≥i←≢w←⍵:⍬⋄↑,/{w[⍵],¨k h w[(⍳i)∼⍳⍵]}¨⍳i-k}⋄1≥≡⍵:⍺h⍵⋄⍺h⊂¨⍵}⋄P←{1≥k←≢w←,⍵:⊂w⋄↑,/{w[⍵],¨P w[a∼⍵]}¨a←⍳k}⋄d←{∪×/¨{k←≢b←1,π⍵⋄∪{b[⍵]}¨↑∪/101 1‼k k}⍵}⋄t←{(-/k),(×/2,⍵),+/k←⍵*2}⋄b←{⍬≡a←3 C d w←⍵:(⊂1,⍵,1)⋄(⊂1,⍵,1),a/⍨{⍵[2]>⍵[3]}¨a←↑∪/P¨,a/⍨{w=×/⍵}¨a}⋄u←{(↑⍵),2÷⍨(+/a),-/a←1↓⍵}⋄t1←{(↑¨⍵)×t¨1↓¨⍵}⋄f1←{0=2∣⍵:↑¨t1 b⍵÷2⋄{2⊃⍵}¨t1 u¨b⍵}⋄f←{m←⎕ct⋄⎕ct←0⋄r←f1⍵⋄⎕ct←m⋄r}
논평:
C: ⍺ combination in ⍵ list
P: permutations in ⍵ list
d: divisors of ⍵ unsigned
t: Pythagorian triple from ⍵ list 2 unsigned
b: if argument ⍵ is one unsigned it would return the list of (k,i,j) where
k,i,j are all divisors of ⍵, and ⍵=k×i×j and i>j
u: from one triple (k,i,j) return (k,(i+j)/2,(i-j)/2)
t1: apply (k,i,j) to t in the way k×t i,j
f: the function of this exercise
이 아이디어는 입력 값을 다리로 갖는 모든 피타 고리아 트리플을 사용하여 생성 할 수있는 가능한 m, n을 알기위한 입력 값을 고려합니다. 테스트:
f 18298292829831839x
167413760243137645229428509060960 15219432749376149566311682641900 99808869980900940
1383584795397831778755607512840
f 5
12
f 28
195 96 21 45
f 101
5100
f 1001
501000 6468 38532 2880 468 660 168 5460 45540 4080 71568 3432 10200
≢f 1001
13
f 1663481166348349x
1383584795397831778755607512900
f 198820182831x
19764732550476133587280 346749693868002343608 5664631173992 6083327962596530720 613900915408 115583231289334114460
18249983887789596492 1883559626820 1040249081604007030900 54749951663368790920 6588244183492044529092
265093577108 2196081394497348176360