Data commit
This commit is contained in:
parent
7387c8f97b
commit
cb5bb5e222
199093 changed files with 3378972 additions and 0 deletions
|
|
@ -0,0 +1,15 @@
|
|||
(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)))))
|
||||
|
|
@ -0,0 +1,12 @@
|
|||
one-dimensional-cellular-automata> (doseq [cells (generate 9 "_###_##_#_#_#_#__#__")]
|
||||
(println cells))
|
||||
_###_##_#_#_#_#__#__
|
||||
_#_#####_#_#_#______
|
||||
__##___##_#_#_______
|
||||
__##___###_#________
|
||||
__##___#_##_________
|
||||
__##____###_________
|
||||
__##____#_#_________
|
||||
__##_____#__________
|
||||
__##________________
|
||||
nil
|
||||
|
|
@ -0,0 +1,25 @@
|
|||
#!/usr/bin/env lein-exec
|
||||
|
||||
(require '[clojure.string :as str])
|
||||
|
||||
(def first-genr "_###_##_#_#_#_#__#__")
|
||||
|
||||
(def hospitable #{"_##"
|
||||
"##_"
|
||||
"#_#"})
|
||||
|
||||
(defn compute-next-genr
|
||||
[genr]
|
||||
(let [genr (str "_" genr "_")
|
||||
groups (map str/join (partition 3 1 genr))
|
||||
next-genr (for [g groups]
|
||||
(if (hospitable g) \# \_))]
|
||||
(str/join next-genr)))
|
||||
|
||||
;; ---------------- main -----------------
|
||||
(loop [g first-genr
|
||||
i 0]
|
||||
(if (not= i 10)
|
||||
(do (println g)
|
||||
(recur (compute-next-genr g)
|
||||
(inc i)))))
|
||||
|
|
@ -0,0 +1,23 @@
|
|||
(def rules
|
||||
{
|
||||
[0 0 0] 0
|
||||
[0 0 1] 0
|
||||
[0 1 0] 0
|
||||
[0 1 1] 1
|
||||
[1 0 0] 0
|
||||
[1 0 1] 1
|
||||
[1 1 0] 1
|
||||
[1 1 1] 0
|
||||
})
|
||||
|
||||
(defn nextgen [gen]
|
||||
(concat [0]
|
||||
(->> gen
|
||||
(partition 3 1)
|
||||
(map vec)
|
||||
(map rules))
|
||||
[0]))
|
||||
|
||||
; Output time!
|
||||
(doseq [g (take 10 (iterate nextgen [0 1 1 1 0 1 1 0 1 0 1 0 1 0 1 0 0 1 0 0]))]
|
||||
(println g))
|
||||
Loading…
Add table
Add a link
Reference in a new issue