gpt4 book ai didi

clojure - 使用 Clojure 检查闰年

转载 作者:行者123 更新时间:2023-12-02 02:04:27 25 4
gpt4 key购买 nike

我无法使用and运算符,如何测试多个条件。我已经非常接近了,但我坚持用 clojure 来解决这个问题。

(defn leap [year] (cond (and (zero? (rem year 4)) (zero? (rem year 100))) true :else false))

感谢您的帮助。

最佳答案

您正确使用了and,但您的逻辑是错误的,不应该使用and

(defn leap
[year]
(cond (zero? (mod year 400)) true
(zero? (mod year 100)) false
(zero? (mod year 4)) true
:default false))

(这是根据 wikipedia page for Leap Year 中列出的公历闰年规则)。

我避免使用任何嵌套逻辑运算符,因为 cond 的目的是将复杂的嵌套条件简化为线性选择序列,其中选择第一个适当的选择。

理想情况下,应该使用像 clj-time 这样的库对于任何时间/日期逻辑,因为这些事情总是比预期的正确和普遍地困难得多。

此外,可以使用 condp,尽管在​​这种情况下,我认为它的混淆程度多于它的澄清程度:

(condp #(zero? (mod %2 %))
year
400 true
100 false
4 true
false)

关于clojure - 使用 Clojure 检查闰年,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22951049/

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