packages feed

toysolver-0.2.0: samples/programs/htc/htc.hs

{-# LANGUAGE ScopedTypeVariables #-}
{-# OPTIONS_GHC -Wall #-}
module Main where

import Control.Monad
import Data.List
import qualified Data.IntSet as IntSet
import System.Environment
import qualified ToySolver.Combinatorial.HittingSet.Simple as HittingSet

main :: IO ()
main = do
  args <- getArgs
  case args of
    [fname] -> do
      s <- readFile fname
      let xss = filter (not . IntSet.null) . fmap (IntSet.fromList . fmap read . words) . lines $ s
      forM_ (HittingSet.minimalHittingSets xss) $ \ys -> do
        putStrLn $ intercalate " " $ map show $ IntSet.toList ys