;; 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")