Problem 79

http://projecteuler.net/index.php?section=problems&id=79
とりあえず、最短なので、各数字は高々一回しか現れないと勝手に解釈。
あとはそのまま。

import Data.Char
import Data.List
import Control.Monad
import Data.Graph

p079 xs =flip intersect use .topSort.buildG (0,9).concatMap mke $xs
    where mke (a:b:c:_) = [(a,b),(b,c)]
          use =nub.concat$xs
main = liftM((+0).read.map intToDigit.p079.map (map digitToInt).lines)
       .readFile$"keylog.txt"

Graphを使ってみた。