One-dimensional cellular automata: Difference between revisions

m (→‎{{header|PureBasic}}: still a minor change)
Line 473:
__##________________</pre>
 
=={{header|Clojure}}==
<lang clojure>(ns one-dimensional-cellular-automata
(:require (clojure.contrib (string :as s))))
 
(defn next-gen [cells]
(loop [cs cells ncs (s/take 1 cells)]
(let [f3 (s/take 3 cs)]
(if (= 3 (count f3))
(recur (s/drop 1 cs)
(str ncs (if (= 2 (count (filter #(= \# %) f3))) "#" "_")))
(str ncs (s/drop 1 cs))))))
 
(defn generate [n cells]
(if (= n 0)
'()
(cons cells (generate (dec n) (next-gen cells)))))
</lang>
<lang clojure>one-dimensional-cellular-automata> (doseq [cells (generate 9 "_###_##_#_#_#_#__#__")]
(println cells))
_###_##_#_#_#_#__#__
_#_#####_#_#_#______
__##___##_#_#_______
__##___###_#________
__##___#_##_________
__##____###_________
__##____#_#_________
__##_____#__________
__##________________
nil
</lang>
=={{header|Common Lisp}}==
Based upon the Ruby version.
Anonymous user