aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTyler Wardhaugh <tyler.wardhaugh@gmail.com>2020-10-13 09:10:28 -0700
committerTyler Wardhaugh <tyler.wardhaugh@gmail.com>2020-10-13 10:24:31 -0700
commitc0bc7cca5b312832af50c6f03dac2565b58bac4c (patch)
tree688727f441c78fb8b8f2654d6c988656211230fc
parent880c625c67d348ddb591740ece65c38cb2a70648 (diff)
downloadperlweeklychallenge-club-c0bc7cca5b312832af50c6f03dac2565b58bac4c.tar.gz
perlweeklychallenge-club-c0bc7cca5b312832af50c6f03dac2565b58bac4c.tar.bz2
perlweeklychallenge-club-c0bc7cca5b312832af50c6f03dac2565b58bac4c.zip
Ch80: Task 2
-rw-r--r--challenge-082/tyler-wardhaugh/clojure/src/tw/weekly/c82/core.clj9
-rw-r--r--challenge-082/tyler-wardhaugh/clojure/src/tw/weekly/c82/t2.clj27
-rw-r--r--challenge-082/tyler-wardhaugh/clojure/test/tw/weekly/c82_test.clj9
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")))))