Haskell Euler 75怎么了,我有所有的原始三角形和倍数,但仍然有一些失败

Haskell Euler 75怎么了,我有所有的原始三角形和倍数,但仍然有一些失败,haskell,pythagorean,Haskell,Pythagorean,Basetri看起来就像维基百科对欧几里得的定义 算法(但我只保存周长),并且似乎生成所有 三角形 Timesify提供这些三角形的所有倍数(120三角形 显示3次) 然后,我连接、排序和分组,以给出每个 将同一组中的周长,然后过滤超过1的周长 只有一种方法可以到达周界 这应该给我所有的三角形,可以用一种方法,但是长度euler75=157730似乎不是有效的答案 euler75 = filter justOneElement $ group $ sort $ concat $ timesif

Basetri看起来就像维基百科对欧几里得的定义 算法(但我只保存周长),并且似乎生成所有 三角形

  • Timesify提供这些三角形的所有倍数(120三角形 显示3次)

  • 然后,我连接、排序和分组,以给出每个 将同一组中的周长,然后过滤超过1的周长 只有一种方法可以到达周界

  • 这应该给我所有的三角形,可以用一种方法,但是
    长度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
    
    euler75=filter justOneElement$group$sort$concat$timesify(takeWhile(更改为

    triangs :: Integer -> [Integer]
    triangs l = [p | n <- [2..1000],
                   m <- [1..n-1],
                   gcd m n == 1,
                   odd (m+n),
                   let p = 2 * (n^2 + m*n),
                   p <= l]
    
    triangs::Integer->[Integer]
    
    三角形l=[p | n你是在用“长度euler75=157730”作为答案吗?因为我认为你应该用“157730”作为答案。意外地处理了同一个问题:)+1@DamienBlack:仅限“157730”