On Wed, 2011-05-04 at 07:13 -0600, Barbara Shirtcliff wrote:
> In the following solution to problem 24, why is nub ignored?
> I.e. if you do lexOrder of "0012," you get twice as many permutations as with 
> "012," even though I have used nub.

> lexOrder :: [Char] -> [[Char]]
> lexOrder s
>  | length s == 1    = [s]
>  | length s == 2    = z : [reverse z]
>  | otherwise        = concat $ map (\n -> h n) [0..((length s) - 1)]
>                     where z = sort $ nub s -- why is the nub ignored here?
>                           h :: Int -> [String]
>                           h n = map (z!!n :) $ lexOrder $ filter (\c -> lexI 
> c z /= n) z

You are using (length s) in the otherwise case.  If you want the results
to be identical with duplicates, perhaps you meant to say (length z)?

-- 
Chris


_______________________________________________
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe

Reply via email to