 (defn rand-dna []
   "Initializes a vector of random DNA."
   (defn rand-gene []
-    (nth actions (rand-int (count actions))))
-  (vec (repeatedly (** (count tiles) (count actions)) rand-gene)))
+    (rand-nth actions))
+  (vec (repeatedly (** (count tiles) 5) rand-gene)))
 
 (defn cross [a b]
   "Crosses two vectors of DNA."

  "Simulates the DNA on a map. Evaluates to the score the robot achieved in simul-steps."
  (defn make-step [[current-map pos score]]
    "Makes a single step on the map, according to the DNA sequence."
    (defn get-situation []
      "Returns the tile situation at the current pos."
      (def nearby-tiles (map (fn[v] (get-tile the-map (add-vec pos v))) dir-vects))

        (if (not= \w (get-tile current-map new-pos))
          [current-map new-pos score]
          [current-map pos (- score action-penalty)]))
      \x
      (do
        (def new-pos (add-vec pos (rand-nth (take 4 dir-vects))))
        (if (not= \w (get-tile current-map new-pos))
          [current-map new-pos score]
          [current-map pos (- score action-penalty)]))
      \p
      (do
        (if (= \g (get-tile current-map pos))
