1
  • 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
4

1 に答える 1