在Haskell:
ghci> let rightTriangles' = [ (a,b,c) | c <- [1..10], a <- [1..c], b <- [1..a],
a^2 + b^2 == c^2, a+b+c == 24]
ghci> rightTriangles'
[(6,8,10)]
Python中有这么优雅的列表解析解决方案吗?
答案 0 :(得分:4)
非常简单的句法交换:
>>> [ (a,b,c) for c in range(1,11)
... for b in range(1,c+1)
... for a in range(1,b+1)
... if a**2 + b**2 == c**2 ]
[(3, 4, 5), (6, 8, 10)]
我跳过了你的a+b+c == 24
支票,但如果这是你真正需要的话,你可以添加它。
答案 1 :(得分:4)
有直接翻译。
[(a, b, c)
for c in range(1, 11)
for a in range(1, c + 1)
for b in range(1, a + 1)
if a**2 + b**2 == c**2 and a + b + c == 24]