rlm@0
|
1 (ns coderloop.spy
|
rlm@0
|
2 (use rlm.ns-rlm)
|
rlm@0
|
3 (use [clojure.contrib [string :only [trim]]])
|
rlm@0
|
4 (use clojure.java.io)
|
rlm@0
|
5 (use rlm.shell-inspect)
|
rlm@0
|
6 (use [clojure.contrib [duck-streams :only [read-lines slurp*]]]))
|
rlm@0
|
7
|
rlm@0
|
8 ;;(rlm.ns-rlm/ns-clone rlm.light-base)
|
rlm@0
|
9
|
rlm@0
|
10
|
rlm@0
|
11
|
rlm@0
|
12 (def data "Yvru hlrikvi, Dljbrjy zj jgvrbzex. Kyv jvtivk ivtzgv wfi kyv wrdflj Tfuvicffg vevixp uizeb zj efn befne.")
|
rlm@0
|
13
|
rlm@0
|
14 (def rotate? 69)
|
rlm@0
|
15
|
rlm@0
|
16
|
rlm@0
|
17 (def data-2 "71ds7
|
rlm@0
|
18 !45DMUXLY?IQI9uYr MI2zQBhOQPzOx Hs2OfOVK8YV9W? gCF!UL9onPax,?AE1!U9wDTaCl6Dc vpM0EAMF?snpWCDpyTG1TIUGcq1x3
|
rlm@0
|
19 GnNnon,t!wRERh o6DcD 4ElBLHSd3fOh1w FjnVJasWNYdIwmh2FfCy")
|
rlm@0
|
20
|
rlm@0
|
21
|
rlm@0
|
22
|
rlm@0
|
23 (def data-3
|
rlm@0
|
24 "-80
|
rlm@0
|
25 b1LxafSh9m
|
rlm@0
|
26 SRKJy3FB5aHYVEyzYTUmvM!hrU1LS Onve!IW7LTyyVwgu gAhF?v9XzVMooq6SczGm. 1GeNd xMzSP8bFsce
|
rlm@0
|
27 .sxcauv2G4e78UDdlit xHqCEIJ?mq7yXv!? lsneLk hq9HMqhZ?OF5 TwY0tyzeOM825myFL4r32!
|
rlm@0
|
28 jzIzpRWDlFFl?f0VxNSpK6ASH6YZ 2IXPU.7oHBMOI!Fq1cdExFRsJm! o45gBS,zF.AO!PfYG q0DJF T
|
rlm@0
|
29 jeZamr jLz1Y,0.1NoFwrPzXOejWV2x6W V0fsisEau4zhvrK3b3 !ObV!, tmmEb0D6qr
|
rlm@0
|
30 xDyrh7cKGUnAgeR8!G.i2yK !JC.1wen12Tz,wl8GO0rwSn czJT!WSshzgzI0BA3WbtI sTTt9 ZoudC4?4RFn,iHNtIRxBrMw?TdI
|
rlm@0
|
31 JJvK,ds2yi,rpafNlu7wYt! 8lhSBu7P4sesKJllvyOz1wode OhVDL qwowelZXTiEfvsDfFV40Gjf KvIj2y4
|
rlm@0
|
32 IiUoIyBd6H8r2 I0cDYkrfN3O cF?X Y7AqEculz4jFxrS.Fa.t S7YkXc
|
rlm@0
|
33 N?aPxe747sfXoDezv.M3LA TUhT67.rLpDdcm VkH27x9bJtOanedL?? Hwt8c5mkXDJ.bv UqvT
|
rlm@0
|
34 8ByXq4!3urp4cW1 SffqmrfAzdzEMtPJ.ridlaWT ALlzEgsnZzMq5 EzsMnbe?MJzsx?DF8FWi cBRECtT.no5AWGq.
|
rlm@0
|
35 iB17xp.1wv0FRklW3 dlAOMrIRAT 19h4?frfRi BkzWHAuZvM xd3epKg0Ky8vU?OZVjkonHD9TFu
|
rlm@0
|
36 170r 3HDC ERCECa5VcO Z6iKYjhFR50N6pr,?.5f3Mm9 Z5pdLlgGGuG
|
rlm@0
|
37 OPYKRPG966.t2UoG6mb9jE wt052uClYUnLo3Um,RbjKwMTt1xqz4 KmIEg5 E5gtHIld.a.MY99M qDDzg0
|
rlm@0
|
38 tnt,Gp9Okg8trkMfA tAYuSTbzy!5zznCH K,bc 9bHqBWJ y3HyobsD2G7.jVznh21UUUuTw2
|
rlm@0
|
39 !PI7p GDvl, d6wOhHqHrjZZ5VxOHrN96a8n DsPrfFGd4z CEIupKxlhi1sMFqJio.EvgWzBfkga9
|
rlm@0
|
40 fEtMx4AXdkMI?U2Y4h.0PVXty4T6UT ?aICKEEjlt xhJphCJWEesfMDzhYw2ekRr gwxCXe5IYD,kJY6Sgp, uNTw0KPlf6OYuBF
|
rlm@0
|
41 jZRmGFJSIEmrvbbfrxRq8iSdfid okWKno.vw8B5Dqm1FCX,1qg!O,S X,YYX NACZx1Z?.GhyZrfy XDYLW,iFMVIMvkex
|
rlm@0
|
42 gjejzPt9suoM H PH?n0WvLs6ccf7OHe,p O8xMqg16sZg8J kIsVyaS!4,,I9R0pV
|
rlm@0
|
43 o cToV UWxTjH3v2PG jYKW XWEWZbopjFYMcPk1B3zK,KBCTWnV
|
rlm@0
|
44 ZI7XRVav DVDDlkVJaaD1o3 t7yDmwqn7oZMYcY9hV o6qYGGbM0CG .Dd4tNkUJ
|
rlm@0
|
45 XbN?bNV,WYuAZ2JeFKkNPyVxTB 4zLI.rbmGs06B0rG jUi gI6, Rk2Um.
|
rlm@0
|
46 17jgXKpFJkILPTP1 1gHYe8kwjbFJO3ZNdjorLv2?5EF z92OgAO0Z?vlS2.iv,xOya5mK cE5 WTjOjDT!EVp189vvjgkUw8xrl9e
|
rlm@0
|
47 EaoeuKwTSDJzc?Rz!ZJyhvv sh0ShfWp5ZJrO6YiAJ9eAO52PDO!1Z lkJ3GqP.nS8 i5WD8iE mVadphvgywr
|
rlm@0
|
48 X23f H LbPjYK5EJcMoBjDiNnTvYDb9cT393 PDfjofvln7A!nGbss TZcTG3TmMKkFO!
|
rlm@0
|
49 vz4NJ 2IiuxrIdX!?aRIiKg auth9 xv0rZKH3VumHa,p?odN7px I5k4oE4M5pNkrawk,eL
|
rlm@0
|
50 6YlwoD0 v,x4tV?Xcu WX?8 RtoFM!BI3q7iw6Ihw6dePR3vY GzWEfo!GvEY!R3gMaSJm27jUc!mUm
|
rlm@0
|
51 !vDL2l2uvp1ve pZXFVjvLhThYJJWx1Li bziUJS9ZCeKwf 41HoBr7nrF?A4rPdnu5LBD CGniTXB5P6B7Yu3naAbe8Gxa.
|
rlm@0
|
52 U0nbg mGO5iU?!O5 Prs5Fw mtgzIS9hRl0?Sl0igj5WaISN 86XDtwtcPHmmFI5sIv0vwkRVe
|
rlm@0
|
53 wr90G77hBpRwEk4 JZ4EvB2x!pVF01?vi,vsxtM? hkfHf TgJbPOUADYzN0RBx13ijp ,d
|
rlm@0
|
54 XCGgky FjSX?pb6r2IqHOcYGZl.RyR6wyDP0 GE cg3E71.1Ye0R6Za mNPAiK?6RG5.O
|
rlm@0
|
55 1ujx1fn XpGX7DaWCCnUEIj7E2 ApVDhCoS8J5mimw7i!X67diPl ?h?tm2 774BnMY.JoUxyRTOqNKHxduf
|
rlm@0
|
56 OUA3Ma IV5xk7lvk6i0L1N FbB56xzPBuS77wxHEt7spidOfANs3d Z4q61cXGfGcbDLN V9MCnwi4OkG9fmmihRgyw3gSY8w
|
rlm@0
|
57 LAykYnorzLjr? rVWT33nySaS!tT!fcCh1okf P4e lUiPr4mi?M9HrS0Xo15E5d9iAd!SW I8ruOUr35gG5p,LrJ1iF9cl7Zpz4
|
rlm@0
|
58 .NHx52BPj6JCCFw2UcCLYKJe,Hic bzWrkHke ")
|
rlm@0
|
59
|
rlm@0
|
60 (defn decryptor [n]
|
rlm@0
|
61 (let [ALAPHABET (reverse (map char (range 65 91)))
|
rlm@0
|
62 alaphabet (reverse (map char (range 97 123)))
|
rlm@0
|
63 n (if (> 0 n) (+ 26 (rem n 26)) n)]
|
rlm@0
|
64 (fn [c]
|
rlm@0
|
65 (first
|
rlm@0
|
66 (drop n
|
rlm@0
|
67 (drop-while
|
rlm@0
|
68 (comp not #{c})
|
rlm@0
|
69
|
rlm@0
|
70
|
rlm@0
|
71 (cond (Character/isUpperCase c) (cycle ALAPHABET)
|
rlm@0
|
72 (Character/isLowerCase c) (cycle alaphabet)
|
rlm@0
|
73 true (repeat c))))))))
|
rlm@0
|
74
|
rlm@0
|
75 (defn decrypt [n s]
|
rlm@0
|
76 (apply str (map (decryptor n) (seq s))))
|
rlm@0
|
77
|
rlm@0
|
78 (defn str->int [s]
|
rlm@0
|
79 (Integer/parseInt (trim s)))
|
rlm@0
|
80
|
rlm@0
|
81 (def a ["/home/r/coderloop-test/spiesstory-a.in"])
|
rlm@0
|
82
|
rlm@0
|
83
|
rlm@0
|
84 (defn doit [a]
|
rlm@0
|
85 (let [lines (read-lines (first a))
|
rlm@0
|
86 num (str->int (first lines))
|
rlm@0
|
87 text (rest lines)]
|
rlm@0
|
88 (dorun (map
|
rlm@0
|
89 (fn [line]
|
rlm@0
|
90 (println (decrypt num line)))
|
rlm@0
|
91 text))))
|
rlm@0
|
92
|
rlm@0
|
93 (if (command-line?)
|
rlm@0
|
94 (doit *command-line-args*))
|
rlm@0
|
95
|