       (map vec (gen-neighbours-by-row [row col] next-row-func))
     )))
     
+;; testing
 (gen-neighbours-for [0 1]) 
 ;; ((0 0)   ..   (0 2)
 ;;  (1 0) (1 1)  (1 2))
 
-matrix
+;; function outer
 (defn transpose-table->positions 
+  "given a matrix of cells(0 1) this function will map each dump-cell with it's corresponding
+   coordinates on the table"
   [[head-row-with-cols & tail-rows] row-counter transposed-table-acc]
     (letfn [(generate-row-with-cols-tuple [row-counter cols-counter]
               (map vec 

    (clean-alien-cels
      (gen-raw-neighbours-by-row [row col] row-func))))
  
(gen-neighbours-by-row [0 1] dec) ;; ()
(gen-neighbours-by-row [0 1] inc) ;; ((1 0) (1 1) (1 2))
(gen-neighbours-by-row [1 1] dec) ;; ((0 0) (0 1) (0 2))

(defn gen-neighbours-for [[row col :as cell-coordinates]]
  (letfn [(clean-alien-cels [cels-coordinates]
                      (filter (fn [cell-coordinate]
                                (= 2 (count (remove neg? cell-coordinate))))

(ns clojure-learning.game-of-life)
(require '[clojure.string :as str])

;http://www.4clojure.com/problem/94
;Each cell interacts with its eight neighbours (horizontal, vertical, diagonal)
;1) Any live cell with fewer than two live neighbours dies, as if caused by under-population.
;2) Any live cell with two or three live neighbours lives on to the next generation.
