One-dimensional cellular automata: Difference between revisions
Content added Content deleted
m (→{{header|PureBasic}}: still a minor change) |
|||
Line 473: | Line 473: | ||
__##________________</pre> |
__##________________</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}}== |
=={{header|Common Lisp}}== |
||
Based upon the Ruby version. |
Based upon the Ruby version. |