
On Wed, Jul 24, 2013 at 4:18 PM, Henk-Jan van Tuyl
On Tue, 23 Jul 2013 12:41:32 +0200, Nadav Chernin
wrote: Hi, all Below is my solution to SPOJ->Polybius squarehttp://www.spoj.com/problems/POLYBIUS
Please try to shorten it:
*import Data.Maybe* *d=[1..5]* *f s=unwords$map(\c->fromJust$lookup c((' ',""):('J',"24"):zip(['A'..'I']++['K'..'Z'])[show(x+10*y)|y<-d,x<-d]))s* *main=getLine>>(interact$unlines.map f.lines)* d="12345" f s = unwords $ map (\c -> let (Just x) = lookup c ((' ',"") : ('J',"24") : zip (['A'..'I'] ++ ['K'..'Z']) [y : [x] | y <- d, x <- d]) in x) s main = getLine >> (interact $ unlines . map f . lines)
Note that you can point-freeify that solution a little and sacrifice totality, yielding an even shorter solution. (I didn't remove the lambda expression, as it ends up being shorter than flipping lookup) Inline the definitions and remove redundant spaces and newlines in the code below: d = "12345" f = unwords . map $ \c -> fromJust $ lookup c ((' ',"") : ('J',"24") : zip (['A'..'Z']\\"J") [[y,x] | y <- d, x <- d]) main = interact $ unlines . map f . drop 1 . lines Just my two cents. Gesh