   {:pre [(coord? point)]}
   [board point]
   (let [neighbors (coord-neighbors point)
-        walls (filter #(= :wall (get-in board % :wall)) neighbors)]
-    (+ 1 (* (count walls) 0.25))))
+        walls (filter #(= :wall (get-in board % :wall)) neighbors)
+        count-wall (count walls)]
+    (+ 1 (* count-wall count-wall 0.25))))
 
 (defn with-cells-strength
   "Adds to a given game the strength of each of its cells"


(defn- move-strength
  "Compute the strength of a move, based on the converted cells"
  [cells-strength converted-filter [move converted]]
  {:pre [(fn? converted-filter) (every? move? converted)]}
  (transduce
    (comp
      (filter converted-filter) ;; TODO - Extract this part (specific to worst move)
      (mapcat :taken)
      (map cells-strength))
    + converted))

(defn- worst-immediate-loss
  "Return the next worse lost game move for 'looser' if 'player' plays"


(defn scores? [s]
  (and
    (<= 0 (reduce + (vals s)) max-score)
    (every? s players)))


