99 questions/Solutions/82

From HaskellWiki
< 99 questions‎ | Solutions
Revision as of 04:14, 25 February 2012 by ZiyaoWei (talk | contribs) (Solution to Problem 82 using list comprehension added)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigation Jump to search
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.

Brute-force search from the source, using list comprehension:

import Data.List (partition)
cycle' :: Int -> [(Int, Int)] -> [ [Int] ]
cycle' n g = search n []
  where search [] result = result
        search cur result = search (go active) (arrive ++ result)
          where split = partition end cur
                end s = (last s == n) && (length s /= 1)
                active = snd split
                arrive = fst split
                go ls = [ x ++ [snd y] | x <- ls, y <- g, last x == fst y, not (snd y `elem` tail x)]