Basetri は、ウィキペディアのユークリッド アルゴリズムの定義とまったく同じように見えますが (ただし、私は周囲のみを保存します)、すべての三角形を生成するようです。
Timesify は、これらの三角形のすべての倍数を提供します (120 の三角形は 3 回表示されます)。
次に、連結、並べ替え、グループ化して、同じグループ内の各境界を含むリストのリストを作成し、複数の境界を1つの方法でフィルタリングして境界を作成します。
これにより、1つの方法で実行できるすべての三角形が得られるはず length euler75 = 157730
ですが、有効な答えではないようです。
euler75 = filter justOneElement $ group $ sort $ concat $ timesify (takeWhile (<=1500000) basetri)
justOneElement (x:[]) = True
justOneElement _ = False
basetri = [((x m n + y m n + z m n)) | m<-[1..700],n<-[1..(m-1)], odd (m-n),gcd m n == 1]
where
x m n = (m^2 - n^2)
y m n = 2*m*n
z m n = (m^2+n^2)
timesify [] = []
timesify (x:xs) = (takeWhile (<=1500000) $ (map (*x) [1..])) : timesify xs