
(Sorry, rizwan, first e-mail wasn't sent to the list)
On Tue, Jun 29, 2010 at 8:35 PM, rizwan hudda
I have recently started learning haskell, and was trying to write a code for this problem http://www.spoj.pl/problems/KAMIL in haskell. The aim is to write a shortest possible code for the given task. I have previously solved this in c,c++,perl,python.My best was 57 characters using perl. So here's my code in HASKELL:
main = interact $ unlines. map (show.foldl (\a x-> if null $ filter (==x) "TDLF" then a else a+a) 1) .lines
It is 107 characters [ non white space and newline ]. I was interested in knowing how i could further optimize the size of this code.
Well, we have: null (filter (== x) cs) = x `notElem` cs = not (x `elem` cs) So we get: main = interact $ unlines . map (show . foldl (\a x -> if elem x "TDLF" then a+a else a) 1) . lines I'm not looking at the problem, but if I understood the line above correctly, each line should print 2^n where n is the number of elements TDLF in that line: main = interact $ unlines . map (show . (2^) . length . filter (`elem` "TDLF")) . lines That's 70 non-whitespace characters. This one-liner is pretty readable, probably more than the Perl one ;D. Cheers, -- Felipe.