【发布时间】:2014-10-27 05:59:47
【问题描述】:
我想在给定的时间内执行某个操作(例如,生成一个部落)。每次我想使用上一次迭代的输出作为下一次迭代的输入。
我通过对 n 个元素的集合进行虚拟减少来实现它,然后我只考虑累加器并从集合中丢弃元素。
(defn generate-game [world n-tribes]
(let [ game (create-game world)
game (reduce (fn [acc, _] (:game (generate-tribe acc))) game (repeat n-tribes :just_something))]
game))
我认为有更好的方法来做到这一点。你能帮我找到吗?
【问题讨论】:
-
迭代是我一直在寻找的。最终的解决方案略有不同,因为 generate-tribe 返回一个包含游戏的地图(它还包含生成部落)。对我来说,最终的解决方案是:``` (defn generate-game [world n-tribes] (let [ game (create-game world) game (nth (iterate #(:game (generate-tribe %)) game) n -tribes :just_something)] 游戏)) ```
标签: clojure functional-programming reduce