
Hello While learning Haskell I'm trying to solve some simple problems on spoj.ploccasionally. Currently I'm working on: http://www.spoj.pl/problems/BWHEELER/. I figured out how to solve it but I have some problems with reading input (that's my guess) Here is my solution: import Data.List import Data.Array import qualified Data.ByteString.Lazy.Char8 as BS import IO traverse :: Array Int (Char, Int) -> Int -> Int -> String -> String traverse endings n k acc = let (c,i) = endings ! n in if k == 0 then acc else traverse endings i (k-1) (c:acc) solve :: (Int, String) -> String solve (n,w) = let l = length w endings = sort $ zip w [0..] endingsArray = array (0, l) (zip [0..] endings) in reverse $ traverse endingsArray (n-1) l "" parseCases :: [BS.ByteString] -> [(Int, String)] parseCases (l:l':ls) = let n = readInt l w = BS.unpack l' in (n,w):parseCases ls parseCases _ = [] main :: IO () main = do ls <- BS.lines `fmap` (BS.readFile "input.txt") --BS.getContents putStr $ unlines $ map solve $ parseCases ls readInt :: BS.ByteString -> Int readInt x = case BS.readInt x of Just (i,_) -> i Nothing -> error ("Unparsable Int" ++ (show x)) The input.txt file contains following text: 2 bacab 3 rwlb 11 baaabaaaabbbaba 0 When I compile and execute this code i get follwing output: aaaaaa lllll bbb It's different when compared to this in ghci ( this is what I expect):
map solve [(2,"bacab"), (3, "rwlb"), (11,"baaabaaaabbbaba")] ["abcba","rbwl","baaabbbbaaaaaab"]
Can you explain me what I'm doing wrong? I appreciate any tips how to improve this code also. Thanks for help! Artur Tadrała