diff options
| author | Tyler Wardhaugh <tyler.wardhaugh@gmail.com> | 2020-10-13 09:10:28 -0700 |
|---|---|---|
| committer | Tyler Wardhaugh <tyler.wardhaugh@gmail.com> | 2020-10-13 10:24:31 -0700 |
| commit | c0bc7cca5b312832af50c6f03dac2565b58bac4c (patch) | |
| tree | 688727f441c78fb8b8f2654d6c988656211230fc | |
| parent | 880c625c67d348ddb591740ece65c38cb2a70648 (diff) | |
| download | perlweeklychallenge-club-c0bc7cca5b312832af50c6f03dac2565b58bac4c.tar.gz perlweeklychallenge-club-c0bc7cca5b312832af50c6f03dac2565b58bac4c.tar.bz2 perlweeklychallenge-club-c0bc7cca5b312832af50c6f03dac2565b58bac4c.zip | |
Ch80: Task 2
3 files changed, 41 insertions, 4 deletions
diff --git a/challenge-082/tyler-wardhaugh/clojure/src/tw/weekly/c82/core.clj b/challenge-082/tyler-wardhaugh/clojure/src/tw/weekly/c82/core.clj index 723a65d626..aa30c7428f 100644 --- a/challenge-082/tyler-wardhaugh/clojure/src/tw/weekly/c82/core.clj +++ b/challenge-082/tyler-wardhaugh/clojure/src/tw/weekly/c82/core.clj @@ -1,9 +1,12 @@ (ns tw.weekly.c82.core - (:require [tw.weekly.c82.t1 :as t1]) - (:gen-class)) + (:require [tw.weekly.c82.t1 :as t1]) + (:require [tw.weekly.c82.t2 :as t2]) + (:gen-class)) (defn -main "Run all tasks" [& _] (println "Task #1") - (t1/-main)) + (t1/-main) + (println "Task #2") + (t2/-main)) diff --git a/challenge-082/tyler-wardhaugh/clojure/src/tw/weekly/c82/t2.clj b/challenge-082/tyler-wardhaugh/clojure/src/tw/weekly/c82/t2.clj new file mode 100644 index 0000000000..0e397776b6 --- /dev/null +++ b/challenge-082/tyler-wardhaugh/clojure/src/tw/weekly/c82/t2.clj @@ -0,0 +1,27 @@ +(ns tw.weekly.c82.t2) + +;;; Task description for TASK #2 › Interleave String +; Submitted by: Mohammad S Anwar +; You are given 3 strings; $A, $B and $C. +; +; Write a script to check if $C is created by interleave $A and $B. +; +; Print 1 if check is success otherwise 0. +;;; + +(defn interleave-strings + "Determine if a and b can be interleaved to form c." + [a b c] + (cond (every? empty? [a b c]) true + (not= (+ (count a) (count b)) (count c)) false + :else + (let [[[ah at] [bh bt] [ch ct]] (map (juxt first rest) [a b c])] + (or (and (= ah ch) (interleave-strings at b ct)) + (and (= bh ch) (interleave-strings a bt ct)))))) + +(defn -main + "Run Task 2 with an input, defaulting to the example given in the task description." + [& args] + (let [[A B C] (or (some->> args (take 3)) ["XY" "X" "XXY"]) + result (interleave-strings A B C)] + (println (if result 1 0)))) diff --git a/challenge-082/tyler-wardhaugh/clojure/test/tw/weekly/c82_test.clj b/challenge-082/tyler-wardhaugh/clojure/test/tw/weekly/c82_test.clj index 20c4ddfd5b..4bd70b00ee 100644 --- a/challenge-082/tyler-wardhaugh/clojure/test/tw/weekly/c82_test.clj +++ b/challenge-082/tyler-wardhaugh/clojure/test/tw/weekly/c82_test.clj @@ -1,8 +1,15 @@ (ns tw.weekly.c82-test (:require [clojure.test :refer [deftest is testing]] - [tw.weekly.c82.t1 :refer [common-factors]])) + [tw.weekly.c82.t1 :refer [common-factors]] + [tw.weekly.c82.t2 :refer [interleave-strings]])) (deftest task-1 (testing "Task 1, Common Factors" (is (= (common-factors 12 18) #{1 2 3 6})) (is (= (common-factors 18 23) #{1})))) + +(deftest task-2 + (testing "Task 2, Interleave String" + (is (true? (interleave-strings "XY" "X" "XXY"))) + (is (true? (interleave-strings "XXY" "XXZ" "XXXXZY"))) + (is (false? (interleave-strings "YX" "X" "XXY"))))) |
