野外有100只水牛。 在场上有100只whis子。 每个站立的水牛吃5个威士忌。 每个躺着的水牛吃3个威士忌。 每3只老水牛吃1个威士忌。 这个字段上有多少种水牛?Clojure的宏的正确使用方法
这是我的Clojure代码来解决这个问题:
;; s: number of Standing buffaloes
;; l: number of Lying buffaloes
;; o: number of Old buffaloes
(for [s (range 101) l (range 101) o (range 101)
:while (and
(= 100 (+ s l o)
(= 100 (+ (* s 5) (* l 3) (* o 1/3)))))]
[s l o])
我的代码不能正常工作。它应该返回每种类型的水牛,但我的代码只返回一个空序列。这似乎在逻辑上不正确。它出什么问题了?
这是太含糊。那它不起作用呢?你有调试过吗?我也不知道for循环是否是这里工作的最佳工具。我认为你把Clojure的循环与典型的循环命令混为一谈。 Clojure的for循环就像Python的列表理解。 – Carcigenicate
不工作意味着:结果不正确。它应该返回场上有多少站立,躺着的老水牛。但我的代码只返回一个空序列。这在逻辑上是不正确的。 –
同样,我不认为在这里for循环是适当的。当你想产生一些东西时,你使用for循环。这是它的主要用例。这听起来不像你想在这里做什么。 – Carcigenicate