Thanks for help David! It was indeed really silly thing: encoding of end of the line on Windows. BS.unlines does not remove CR from input ByteString. In my case that was crucial.<br><br>Regards<br>Artur<br><br><div class="gmail_quote">
W dniu 15 stycznia 2012 09:54 użytkownik David McBride <span dir="ltr">&lt;<a href="mailto:toad3k@gmail.com">toad3k@gmail.com</a>&gt;</span> napisał:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
It works fine for me, whether compiled or interpretted.  Are you sure<br>
there isn&#39;t some residual files left from a previous compile that you<br>
are running?  Try rm *.o *.hi.  Or something more mundane, not saving<br>
the file, or running the wrong executable.<br>
<br>
2012/1/14 Artur Tadrała &lt;<a href="mailto:artur.tadrala@gmail.com">artur.tadrala@gmail.com</a>&gt;:<br>
<div><div class="h5">&gt; Hello<br>
&gt;<br>
&gt; While learning Haskell I&#39;m trying to solve some simple problems on <a href="http://spoj.pl" target="_blank">spoj.pl</a><br>
&gt; occasionally. Currently I&#39;m working on:<br>
&gt; <a href="http://www.spoj.pl/problems/BWHEELER/" target="_blank">http://www.spoj.pl/problems/BWHEELER/</a>. I figured out how to solve it but I<br>
&gt; have some problems with reading input (that&#39;s my guess)<br>
&gt;<br>
&gt; Here is my solution:<br>
&gt;<br>
&gt; import Data.List<br>
&gt; import Data.Array<br>
&gt; import qualified Data.ByteString.Lazy.Char8 as BS<br>
&gt; import IO<br>
&gt;<br>
&gt; traverse :: Array Int (Char, Int) -&gt; Int -&gt; Int -&gt; String -&gt; String<br>
&gt; traverse endings n k acc =<br>
&gt;     let (c,i) = endings ! n<br>
&gt;     in if k == 0<br>
&gt;         then acc<br>
&gt;         else traverse endings i (k-1) (c:acc)<br>
&gt;<br>
&gt; solve :: (Int, String) -&gt; String<br>
&gt; solve (n,w) =<br>
&gt;     let l = length w<br>
&gt;         endings = sort $ zip w [0..]<br>
&gt;         endingsArray = array (0, l) (zip [0..] endings)<br>
&gt;     in reverse $ traverse endingsArray (n-1) l &quot;&quot;<br>
&gt;<br>
&gt; parseCases :: [BS.ByteString] -&gt; [(Int, String)]<br>
&gt; parseCases (l:l&#39;:ls) =<br>
&gt;     let n = readInt l<br>
&gt;         w = BS.unpack l&#39;<br>
&gt;     in (n,w):parseCases ls<br>
&gt; parseCases _ = []<br>
&gt;<br>
&gt; main :: IO ()<br>
&gt; main = do<br>
&gt;   ls &lt;- BS.lines `fmap` (BS.readFile &quot;input.txt&quot;)<br>
&gt; --BS.getContents<br>
&gt;   putStr $ unlines $ map solve $ parseCases ls<br>
&gt;<br>
&gt; readInt :: BS.ByteString -&gt; Int<br>
&gt; readInt x =<br>
&gt;   case BS.readInt x of Just (i,_) -&gt; i<br>
&gt;                        Nothing    -&gt; error (&quot;Unparsable Int&quot; ++ (show x))<br>
&gt;<br>
&gt;<br>
&gt; The input.txt file contains following text:<br>
&gt; 2<br>
&gt; bacab<br>
&gt; 3<br>
&gt; rwlb<br>
&gt; 11<br>
&gt; baaabaaaabbbaba<br>
&gt; 0<br>
&gt;<br>
&gt; When I compile and execute this code i get follwing output:<br>
&gt; aaaaaa<br>
&gt; lllll<br>
&gt; bbb<br>
&gt;<br>
&gt; It&#39;s different  when compared to this in ghci ( this is what I expect):<br>
&gt;  &gt; map solve [(2,&quot;bacab&quot;), (3, &quot;rwlb&quot;), (11,&quot;baaabaaaabbbaba&quot;)]<br>
&gt; [&quot;abcba&quot;,&quot;rbwl&quot;,&quot;baaabbbbaaaaaab&quot;]<br>
&gt;<br>
&gt; Can you explain me what I&#39;m doing wrong?<br>
&gt; I appreciate any tips how to improve this code also.<br>
&gt;<br>
&gt; Thanks for help!<br>
&gt; Artur Tadrała<br>
&gt;<br>
</div></div>&gt; _______________________________________________<br>
&gt; Beginners mailing list<br>
&gt; <a href="mailto:Beginners@haskell.org">Beginners@haskell.org</a><br>
&gt; <a href="http://www.haskell.org/mailman/listinfo/beginners" target="_blank">http://www.haskell.org/mailman/listinfo/beginners</a><br>
&gt;<br>
</blockquote></div><br>