Sha256: 35aa5896f3d83521f79d56842c3f9af201fd45a0444a4288de997e73c94eaba3

Contents?: true

Size: 778 Bytes

Versions: 396

Compression:

Stored size: 778 Bytes

Contents

(ns minesweeper
  (:require [clojure.pprint :refer [cl-format]]
            [clojure.string :refer [split-lines]]))

(defn- windows [field]
  (->> field
       (map #(partition 3 1 `(nil ~@% nil)))
       (apply map #(partition 3 1 `(nil ~@%& nil)))
       (apply map vector)))

(defn- count-mines-around [[[a b c]
                            [d e f]
                            [g h i]]]
  (if-let [mines-count (and (= \space e)
                            (count (filter #{\*} [a b c d f g h i])))]
    (if (zero? mines-count)
      \space
      mines-count)
    e))

(defn draw [field]
  (if (empty? field) ""
      (->> field
           split-lines
           windows
           (map (fn [line] (map count-mines-around line)))
           (cl-format nil "~{~{~a~}~^~%~}"))))

Version data entries

396 entries across 396 versions & 1 rubygems

Version Path
trackler-2.2.1.139 tracks/clojure/exercises/minesweeper/src/example.clj
trackler-2.2.1.138 tracks/clojure/exercises/minesweeper/src/example.clj
trackler-2.2.1.137 tracks/clojure/exercises/minesweeper/src/example.clj
trackler-2.2.1.136 tracks/clojure/exercises/minesweeper/src/example.clj
trackler-2.2.1.135 tracks/clojure/exercises/minesweeper/src/example.clj
trackler-2.2.1.134 tracks/clojure/exercises/minesweeper/src/example.clj
trackler-2.2.1.133 tracks/clojure/exercises/minesweeper/src/example.clj
trackler-2.2.1.132 tracks/clojure/exercises/minesweeper/src/example.clj
trackler-2.2.1.131 tracks/clojure/exercises/minesweeper/src/example.clj
trackler-2.2.1.130 tracks/clojure/exercises/minesweeper/src/example.clj
trackler-2.2.1.129 tracks/clojure/exercises/minesweeper/src/example.clj
trackler-2.2.1.128 tracks/clojure/exercises/minesweeper/src/example.clj
trackler-2.2.1.127 tracks/clojure/exercises/minesweeper/src/example.clj
trackler-2.2.1.126 tracks/clojure/exercises/minesweeper/src/example.clj
trackler-2.2.1.125 tracks/clojure/exercises/minesweeper/src/example.clj
trackler-2.2.1.124 tracks/clojure/exercises/minesweeper/src/example.clj
trackler-2.2.1.123 tracks/clojure/exercises/minesweeper/src/example.clj
trackler-2.2.1.122 tracks/clojure/exercises/minesweeper/src/example.clj
trackler-2.2.1.121 tracks/clojure/exercises/minesweeper/src/example.clj
trackler-2.2.1.120 tracks/clojure/exercises/minesweeper/src/example.clj