diff --git a/otus-01/src/otus/homework.clj b/otus-01/src/otus/homework.clj index 82c8e9d..b496ead 100644 --- a/otus-01/src/otus/homework.clj +++ b/otus-01/src/otus/homework.clj @@ -1,5 +1,5 @@ (ns otus.homework) - -(defn solution "Add your solution as fuction body here" []) - +(defn solution "Add your solution as fuction body here" [] + (double (/ (+ 5 (+ 4 (- 2 (- 3 (+ 6 (/ 4 5)))))) + (* 3 (* (- 2 7) (- 6 2)))))) diff --git a/otus-02/src/otus_02/homework/palindrome.clj b/otus-02/src/otus_02/homework/palindrome.clj index 591f98e..75f7b31 100644 --- a/otus-02/src/otus_02/homework/palindrome.clj +++ b/otus-02/src/otus_02/homework/palindrome.clj @@ -1,6 +1,7 @@ (ns otus-02.homework.palindrome (:require [clojure.string :as string])) - -(defn is-palindrome [test-string]) +(defn is-palindrome [test-string] + (let [normal-str (string/upper-case (string/replace test-string #"[^a-zA-Z0-9]" "")) + invert-str (string/reverse normal-str)] (= normal-str invert-str))) diff --git a/otus-02/src/otus_02/homework/pangram.clj b/otus-02/src/otus_02/homework/pangram.clj index dc5d34c..4d32fb8 100644 --- a/otus-02/src/otus_02/homework/pangram.clj +++ b/otus-02/src/otus_02/homework/pangram.clj @@ -1,6 +1,19 @@ (ns otus-02.homework.pangram (:require [clojure.string :as string])) +;;(defn is-pangram [test-string] +;; (let [alphabet "abcdefghijklmnopqrstuvwxyz" +;; alph-vec (map str (vec alphabet)) +;; normal-string1 (string/lower-case test-string) +;; normal-string (map str +;; (filter #(> (.indexOf alphabet (str %1)) -1) +;; normal-string1)) +;; chr-in-alpha-list (map #(.indexOf normal-string %) alph-vec)] +;; (= (count (filter #(= % -1) chr-in-alpha-list)) 0))) -(defn is-pangram [test-string]) - +(defn is-pangram [test-string] + (let [alphabet "abcdefghijklmnopqrstuvwxyz" + normal-string (-> test-string + (string/replace #"[\s\W]" "") + string/lower-case)] + (= (set alphabet) (set normal-string)))) diff --git a/otus-02/test/otus_02/homework/fizzbuzz.clj b/otus-02/test/otus_02/homework/fizzbuzz.clj index f11a446..d4c4f8f 100644 --- a/otus-02/test/otus_02/homework/fizzbuzz.clj +++ b/otus-02/test/otus_02/homework/fizzbuzz.clj @@ -2,14 +2,13 @@ (:require [clojure.test :refer :all])) - (defn fizz-buzz [n] - "Создайте программу, которая выводит числа от 1 до n. - - Если число делится на 3, выведите 'Fizz'; - - если число делится на 5, выведите 'Buzz'; - - если число делится и на 3 и на 5, выведите 'FizzBuzz'." - "implement me") - + (map + #(cond + (true? (and (= 0 (mod % 3)) (= 0 (mod % 5)))) "FizzBuzz" + (= 0 (mod % 3)) "Fizz" + (= 0 (mod % 5)) "Buzz" + :else %) (range 1 (+ n 1) 1))) (deftest fizz-buzz-test (is (= (fizz-buzz 10) diff --git a/otus-04/src/otus_04/homework/scramblies.clj b/otus-04/src/otus_04/homework/scramblies.clj index f76d335..9719d76 100644 --- a/otus-04/src/otus_04/homework/scramblies.clj +++ b/otus-04/src/otus_04/homework/scramblies.clj @@ -7,4 +7,6 @@ "Функция возвращает true, если из букв в строке letters можно составить слово word." [letters word] - nil) + (let [letters-set (set (mapv str letters)) + word-set (set (mapv str word))] + (= (clojure.set/intersection letters-set word-set) word-set)))