From 49e289533be5d3aba9c33abab9753aa959f2dae2 Mon Sep 17 00:00:00 2001 From: Jason Date: Wed, 26 Jun 2019 16:53:26 -0500 Subject: [PATCH 1/4] Moved `:use` items into `:require`. --- src/boggle/core.clj | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/boggle/core.clj b/src/boggle/core.clj index ead0c7a..7711bc9 100644 --- a/src/boggle/core.clj +++ b/src/boggle/core.clj @@ -1,8 +1,8 @@ (ns boggle.core - (:use [clojure.math.numeric-tower :only [abs]] - [clojure.java.io :as io]) - (:require [clojure.string :as string]) - (:gen-class)) + (:require [clojure.string :as string] + [clojure.java.io :as io] + [clojure.math.numeric-tower :refer [abs]]) + (:gen-class)) (def dict (io/resource "ospd.txt")) From 7512df3d5aac2c79e0466adb82fc0155e4b07ff9 Mon Sep 17 00:00:00 2001 From: Jason Date: Wed, 26 Jun 2019 16:55:14 -0500 Subject: [PATCH 2/4] Added function that allows using a 1-line string as a board. The new `boggle.utils/str->board` function converts a 1-line string board into the multi-line format expected by `boggle.core/load-board`. --- src/boggle/utils.clj | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) create mode 100644 src/boggle/utils.clj diff --git a/src/boggle/utils.clj b/src/boggle/utils.clj new file mode 100644 index 0000000..64183ba --- /dev/null +++ b/src/boggle/utils.clj @@ -0,0 +1,16 @@ +(ns boggle.utils + (:require [clojure.string :as str] + [clojure.math.numeric-tower :refer [sqrt]])) + +(defn str->board + "Converts a string, `s`, into a board formatted to be accepted by + `boggle.core/load-board`. nil is returned if `s` cannot be a square board." + [s] + (let [board-size (sqrt (count s))] + (when (integer? board-size) + (->> s + str/upper-case + (map #(if (= \Q %) "QU" %)) + (partition board-size) + (map #(str/join \ %)) + (str/join "\n"))))) From b18fe2a815013d7622dbb11149853354e45d2007 Mon Sep 17 00:00:00 2001 From: Jason Date: Thu, 27 Jun 2019 19:12:20 -0500 Subject: [PATCH 3/4] Added test for creating a board matrix from a 1-line string. --- test/boggle/core_test.clj | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/test/boggle/core_test.clj b/test/boggle/core_test.clj index 5957679..677cd63 100644 --- a/test/boggle/core_test.clj +++ b/test/boggle/core_test.clj @@ -1,6 +1,7 @@ (ns boggle.core-test (:require [clojure.test :refer :all] - [boggle.core :refer :all])) + [boggle.core :refer :all] + [boggle.utils])) (deftest test-valid-word? (testing "valid-word?" @@ -127,3 +128,13 @@ [["A" "B" "C"] ["D" "E" "F"] ["P" "QU" "R"]]))))) + +(deftest test-load-board-from-string + (testing "correctly parses a 1-line string into a board matrix" + (let [board (boggle.utils/str->board "abcdefpqr") + actual (load-board board) + expected [["A" "B" "C"] + ["D" "E" "F"] + ["P" "QU" "R"]]] + (is (= "A B C\nD E F\nP QU R" board)) + (is (= expected actual))))) From c3cacf7378415b7b7fee6ac829aeab147aa6d609 Mon Sep 17 00:00:00 2001 From: Jason Date: Sun, 25 Aug 2019 14:57:52 -0500 Subject: [PATCH 4/4] Added deps.edn so the repo can be used as a dependency. The Clojure CLI tools require dependencies referenced by Git SHA to have a deps.edn file. See https://www.reddit.com/r/Clojure/comments/8m39p9/github_ethagnawltoolsdepsexperiments/dzl50v6/. --- deps.edn | 8 ++++++++ 1 file changed, 8 insertions(+) create mode 100644 deps.edn diff --git a/deps.edn b/deps.edn new file mode 100644 index 0000000..6e52a04 --- /dev/null +++ b/deps.edn @@ -0,0 +1,8 @@ +{:paths ["src"] + :deps {org.clojure/clojure {:mvn/version "1.8.0"} + org.clojure/math.numeric-tower {:mvn/version "0.0.4"} + ;org.clojure/tools.namespace {:mvn/verson "0.2.11"} + } + :aliases {:uberjar {:extra-deps {uberdeps {:mvn/version "0.1.4"}} + :main-opts ["-m" "uberdeps.uberjar"]}}} +