;; clojure solver for given problem at ;; http://programmingpraxis.com/2010/07/13/word-cube (ns cube (:use [clojure.contrib.duck-streams :only (read-lines)]) (:use clojure.set)) (defn words-solver [string words-file] ;; find middle character (let [middle (get string 4)] ;; do magic line by line (doseq [line (read-lines words-file)] (and (< 3 (count line)) (not (empty? (filter #(= middle %) line))) (empty? (difference (set line) (set string))) (println line) )) )) ;; usage (words-solver "ncbcioune" "words.txt")