野外有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