我已经开始将项目Euler站点作为一种学习Haskell的方法,并改进我的Python和Ruby.我认为Haskell和Python版本都可以,但我确信Ruby必须有一个更简洁的方法.
这不是关于如何使一种语言看起来像另一种语言.
这是问题1:
问:添加1000以下的所有自然数,即3或5的倍数.
哈斯克尔:
sum [ x | x <- [1..999], mod x 3 == 0 || mod x 5 == 0 ]
Run Code Online (Sandbox Code Playgroud)
蟒蛇:
sum ( [ x for x in range(1,1000) if x % 3 == 0 or x % 5 == 0 ] )
Run Code Online (Sandbox Code Playgroud)
红宝石:
(1..999) . map {|x| x if x % 3 == 0 || x % 5 == 0 } . compact . inject(:+)
Run Code Online (Sandbox Code Playgroud)
他们都给出了相同的答案.
好的,所以Python可以成为:
sum ( x for …
Run Code Online (Sandbox Code Playgroud)