Mercurial > coderloop
view src/decrypt.clj @ 0:307a81e46071 tip
initial committ
author | Robert McIntyre <rlm@mit.edu> |
---|---|
date | Tue, 18 Oct 2011 01:17:49 -0700 |
parents | |
children |
line wrap: on
line source
1 (ns coderloop.decrypt2 (:use [clojure.contrib3 [duck-streams :only [read-lines]]4 [seq :only [find-first]]5 [string :only [map-str]]6 [combinatorics :only [cartesian-product]]])7 (:use rlm.shell-inspect)8 (:use [clojure [string :only [split]]])9 (:import Crypt))11 (def t "/home/r/coderloop-test/test.txt")13 (defn strcat [coll]14 (apply str coll))16 (def numerals [0 2 4 8 ])18 (defn crypt [salt s]19 (Crypt/crypt salt s))21 (defn cross-text [text]22 (let [symbols (filter23 (fn [s] (<= (count s) 8))24 (split (.toLowerCase text) #"[^a-z]+"))]25 (filter26 (fn [s]27 (let [len (count s)]28 (and29 (>= len 5)30 (<= len 8))))31 (map (partial apply str)32 (cartesian-product symbols numerals symbols)))))34 (defn process-file [f]35 (let [file (read-lines f)36 [salt pass] (map (partial apply str) (split-at 2 (first file)))37 text (strcat (interleave (repeat \newline) (rest file)))]38 (find-first (fn [s] (= (str salt pass) (crypt salt s)))39 (cross-text text))))42 (if (command-line?)43 (println (process-file (first *command-line-args*))))