Update all new Tasks
This commit is contained in:
parent
00a190b0a6
commit
91df62d461
5697 changed files with 93386 additions and 804 deletions
21
Task/ABC-Problem/Clojure/abc-problem.clj
Normal file
21
Task/ABC-Problem/Clojure/abc-problem.clj
Normal file
|
|
@ -0,0 +1,21 @@
|
|||
(def blocks
|
||||
(-> "BO XK DQ CP NA GT RE TG QD FS JW HU VI AN OB ER FS LY PC ZM" (.split " ") vec))
|
||||
|
||||
(defn omit
|
||||
"return bs with (one instance of) b omitted"
|
||||
[bs b]
|
||||
(let [[before after] (split-with #(not= b %) bs)]
|
||||
(concat before (rest after))))
|
||||
|
||||
(defn abc
|
||||
"return lazy sequence of solutions (i.e. block lists)"
|
||||
[blocks [c & cs]]
|
||||
(if-some c
|
||||
(for [b blocks :when (some #(= c %) b)
|
||||
bs (abc (omit blocks b) cs)]
|
||||
(cons b bs))
|
||||
[[]]))
|
||||
|
||||
|
||||
(doseq [word ["A" "BARK" "Book" "treat" "COMMON" "SQUAD" "CONFUSE"]]
|
||||
(->> word .toUpperCase (abc blocks) first (printf "%s: %b\n" word)))
|
||||
Loading…
Add table
Add a link
Reference in a new issue