18 lines
496 B
Plaintext
18 lines
496 B
Plaintext
open list monad io char
|
|
|
|
:::IO
|
|
|
|
null = foldr (\_ _ -> false) true
|
|
|
|
mapM_ f = foldr ((>>-) << f) (return ())
|
|
|
|
abc _ [] = [[]]
|
|
abc blocks (c::cs) =
|
|
[b::ans \\ b <- blocks | c `elem` b, ans <- abc (delete b blocks) cs]
|
|
|
|
blocks = ["BO", "XK", "DQ", "CP", "NA", "GT", "RE", "TG", "QD", "FS",
|
|
"JW", "HU", "VI", "AN", "OB", "ER", "FS", "LY", "PC", "ZM"]
|
|
|
|
mapM_ (\w -> putLn (w, not << null $ abc blocks (map char.upper w)))
|
|
["", "A", "BARK", "BoOK", "TrEAT", "COmMoN", "SQUAD", "conFUsE"]
|