From 68058d6abf91496417eca26635e674baaea438d6 Mon Sep 17 00:00:00 2001 From: Stephanie Clay Date: Thu, 27 Dec 2018 22:33:57 -0600 Subject: [PATCH 1/2] submisson --- src/structured_data.clj | 93 ++++++++++++++++++++++++----------------- 1 file changed, 54 insertions(+), 39 deletions(-) diff --git a/src/structured_data.clj b/src/structured_data.clj index ebfe1ce4..d6fc95b4 100644 --- a/src/structured_data.clj +++ b/src/structured_data.clj @@ -1,16 +1,20 @@ (ns structured-data) (defn do-a-thing [x] - :-) + (let [xx (+ x x)] + (Math/pow xx xx) + )) (defn spiff [v] - :-) + (+ (get v 0) (get v 2))) (defn cutify [v] - :-) + (conj v "<3")) (defn spiff-destructuring [v] - :-) + (let [[x y z] v] + (+ x z) + )) (defn point [x y] [x y]) @@ -18,97 +22,108 @@ (defn rectangle [bottom-left top-right] [bottom-left top-right]) -(defn width [rectangle] - :-) +(defn width [[[x1 y1] [x2 y2]]] + (- x2 x1)) -(defn height [rectangle] - :-) +(defn height [[[x1 y1] [x2 y2]]] + (- y2 y1)) (defn square? [rectangle] - :-) + (= (width rectangle) (height rectangle))) (defn area [rectangle] - :-) + (* (width rectangle) (height rectangle))) -(defn contains-point? [rectangle point] - :-) +(defn contains-point? [[[rx1 ry1] [rx2 ry2]] [px py]] + (and (<= rx1 px rx2) (<= ry1 py ry2)) + ) -(defn contains-rectangle? [outer inner] - :-) +(defn contains-rectangle? [outer [inner1 inner2]] + (and (contains-point? outer inner1) (contains-point? outer inner2)) + ) (defn title-length [book] - :-) + (count (:title book))) (defn author-count [book] - :-) + (count (:authors book))) (defn multiple-authors? [book] - :-) + (> (author-count book) 1)) (defn add-author [book new-author] - :-) + (let [authors (:authors book) + new-authors (conj authors new-author)] + (assoc book :authors new-authors) + )) (defn alive? [author] - :-) + (not (contains? author :death-year))) (defn element-lengths [collection] - :-) + (map count collection)) (defn second-elements [collection] - :-) + (let [second (fn [x] (first (rest x)))] + (map second collection))) (defn titles [books] - :-) + (map :title books)) (defn monotonic? [a-seq] - :-) + (or (apply <= a-seq) + (apply >= a-seq) + )) (defn stars [n] - :-) + (apply str (repeat n "*"))) (defn toggle [a-set elem] - :-) + (if (contains? a-set elem) (disj a-set elem) (conj a-set elem))) (defn contains-duplicates? [a-seq] - :-) + (> (count a-seq) (count (set a-seq)))) (defn old-book->new-book [book] - :-) + (assoc book :authors (set (:authors book)))) (defn has-author? [book author] - :-) + (contains? (:authors book) author)) (defn authors [books] - :-) + (apply clojure.set/union (map :authors books))) (defn all-author-names [books] - :-) + (set (map :name (authors books)))) (defn author->string [author] - :-) + (let [date-suffix (if (contains? author :birth-year) (str " (" (:birth-year author) " - " (:death-year author) ")") "")] + (str (:name author) date-suffix))) (defn authors->string [authors] - :-) + (apply str (interpose ", " (map author->string authors)))) (defn book->string [book] - :-) + (str (:title book) ", written by " (authors->string (:authors book)))) (defn books->string [books] - :-) + (let [num-books (count books) + book-str (cond (== num-books 0) "No books" (== num-books 1) "1 book. " :else (str num-books " books. "))] + (str book-str (apply str (interpose ". " (map book->string books))) "."))) (defn books-by-author [author books] - :-) + (filter (fn [book] (has-author? book author)) books)) (defn author-by-name [name authors] - :-) + (first (filter (fn [author] (= name (:name author))) authors))) (defn living-authors [authors] - :-) + (filter alive? authors)) (defn has-a-living-author? [book] - :-) + (not (empty? (living-authors (:authors book))))) (defn books-by-living-authors [books] - :-) + (filter has-a-living-author? books)) ; %________% From 7ee9a1eff29dff4201edf071f7577e338fa11e66 Mon Sep 17 00:00:00 2001 From: Stephanie Clay Date: Thu, 27 Dec 2018 22:38:06 -0600 Subject: [PATCH 2/2] Fix lein in yml file --- .travis.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.travis.yml b/.travis.yml index 455f3c0e..45c29f60 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,6 +1,6 @@ language: clojure -lein: lein2 -script: lein2 midje :config .midje-grading-config.clj +lein: lein +script: lein midje :config .midje-grading-config.clj jdk: - openjdk7 notifications: