项目欧拉#1使用Haskell [英] Project Euler #1 using Haskell

查看:112
本文介绍了项目欧拉#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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆