gpt4 book ai didi

clojure - 这是 Clojure 惯用的吗?

转载 作者:行者123 更新时间:2023-12-03 00:30:35 24 4
gpt4 key购买 nike

我已经开始使用 Clojure 进行 Project Euler,作为学习 Clojure 的第一次尝试。我已经解决了第一个作业:

Find the sum of all the multiples of 3 or 5 below 1000.

我之前用 Python 解决过这个问题:

sum(i for i in xrange(1000) if i%3==0 or i%5==0)

这是我第一次尝试 Clojure:

(reduce +
(filter
(fn [x]
(or
(= 0 (mod x 3))
(= 0 (mod x 5))))
(range 1000)))

实际上,我对它变得如此冗长感到惊讶,但我很确定这是因为我的风格和对 Clojure 习惯用法的无知。

此 Clojure 代码的惯用版本会是什么样子?

最佳答案

我就是这样做的:

(apply +
(filter #(or (zero? (mod % 3))
(zero? (mod % 5)))
(range 1000)))

使我的解决方案稍微更惯用的是使用匿名函数读取器宏、#(...)零? fn

您的解决方案不同,但同样!

顺便说一句 - 解决欧拉问题是学习新语言的好方法 - 你无法从书中获得所有内容。

编辑:

我决定提供一个更符合你的 Python 版本的不同解决方案(在我看来不是很漂亮)

(apply +
(for [i (range 1000) :when (or (zero? (mod i 3))
(zero? (mod i 5)))]
i))

关于clojure - 这是 Clojure 惯用的吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15415493/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com