项目欧拉#1使用Haskell [英] Project Euler #1 using Haskell
本文介绍了项目欧拉#1使用Haskell的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
import Data.Set
euler :: Int
euler = sum [x | x -
其中
nums = Data.Set.toList(Data.Set.union(Data.Set.fromList [3,6..999])
(Data。 Set.fromList [5,10..999]))
我正在学习Haskell,希望你不要不介意我问这个。有没有更好的方法来获得一个列表,其中所有自然数都低于1000,是3或5的倍数? (例如使用zip或map?)
编辑:
import Data.List
euler :: Int
euler = sum(union [3,6..999] [5,10..999])
感谢您的帮助,各位。
解决方案<使用列表理解:
sum [x | x < - [1..999],x`mod` 3 == 0 || x`mod` 5 == 0]
import Data.Set euler :: Int euler = sum [ x | x <- nums ] where nums = Data.Set.toList (Data.Set.union (Data.Set.fromList [3,6..999]) (Data.Set.fromList [5,10..999]))
I am learning Haskell and hope you don't mind me asking this. Is there a nicer way to get a list holding all natural numbers below one thousand that are multiples of 3 or 5? (E.g. with zip or map?)
Edit:
import Data.List euler :: Int euler = sum (union [3,6..999] [5,10..999])
Thanks for your help, guys.
解决方案Use list comprehension:
sum [x | x <- [1..999], x `mod` 3 == 0 || x `mod` 5 == 0]
这篇关于项目欧拉#1使用Haskell的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文