set-cover-0.1: set-cover.cabal
Name: set-cover
Version: 0.1
License: BSD3
License-File: LICENSE
Author: Henning Thielemann, Helmut Podhaisky
Maintainer: Henning Thielemann <haskell@henning-thielemann.de>
Homepage: http://hub.darcs.net/thielema/set-cover/
Category: Math, Algorithms
Synopsis: Solve exact set cover problems like Sudoku, 8 Queens, Soma Cube, Tetris Cube
Description:
Solver for exact set cover problems.
Included examples:
Sudoku, Nonogram, 8 Queens, Domino tiling, Mastermind, Alphametics,
Soma Cube, Tetris Cube, Cube of L's,
Logika's Baumeister puzzle, Lonpos pyramid, Conway's puzzle.
The generic algorithm allows to choose between
slow but flexible @Set@ from @containers@ package
and fast but cumbersome bitvectors.
.
For getting familiar with the package
I propose to study the Queen8 example along with "Math.SetCover.Exact".
.
The Sudoku and Nonogram examples also demonstrate
how to interpret the set-cover solution in a human-friendly way.
.
Build examples with @cabal install -fbuildExamples@.
.
The package needs only Haskell 98.
There is also an experimental implementation using LLVM and @knead@.
Do not rely on that interface in released packages.
Tested-With: GHC==7.4.2, GHC==7.6.3, GHC==7.8.2
Cabal-Version: >=1.8
Build-Type: Simple
Extra-Source-Files:
Changes.md
Makefile
Flag buildExamples
Description: Build example executables
Default: False
Flag llvm
Description: Enable efficient signal processing using LLVM
Manual: True
Default: False
Source-Repository this
Tag: 0.1
Type: darcs
Location: http://hub.darcs.net/thielema/set-cover/
Source-Repository head
Type: darcs
Location: http://hub.darcs.net/thielema/set-cover/
Library
Build-Depends:
psqueues >=0.2 && <0.3,
enummapset >=0.1 && <0.7,
transformers >=0.2 && <0.6,
array >=0.4 && <0.6,
containers >=0.4 && <0.7,
non-empty >=0.2 && <0.4,
semigroups >=0.1 && <1.0,
utility-ht >=0.0.12 && <0.1,
prelude-compat ==0.*,
base >=4 && <5
GHC-Options: -Wall
Hs-Source-Dirs: src
Exposed-Modules:
Math.SetCover.Bit
Math.SetCover.BitSet
Math.SetCover.BitPosition
Math.SetCover.BitPriorityQueue
Math.SetCover.Queue
Math.SetCover.Exact
Math.SetCover.Exact.Priority
Math.SetCover.Exact.UArray
Math.SetCover.Cuboid
Other-Modules:
Math.SetCover.BitMap
Math.SetCover.EnumMap
Math.SetCover.Queue.Set
Math.SetCover.Queue.Map
Math.SetCover.Queue.Bit
Math.SetCover.Queue.BitPriorityQueue
Math.SetCover.Exact.Block
If flag(llvm)
Build-Depends:
knead >=0.4 && <0.5,
llvm-extra >=0.8 && <0.9,
llvm-tf >=3.1.1 && <3.2,
tfp >=1.0 && <1.1,
comfort-array >=0.3 && <0.5,
storable-endian >=0.2.6 && <0.3,
bool8 >=0.0 && <0.1,
lazyio >=0.1 && <0.2
Exposed-Modules:
Math.SetCover.Exact.Knead
Math.SetCover.Exact.Knead.Vector
Math.SetCover.Exact.Knead.Saturated
Other-Modules:
Math.SetCover.Exact.Knead.Symbolic
Test-Suite set-cover-test
Type: exitcode-stdio-1.0
Build-Depends:
set-cover,
transformers >=0.2 && <0.6,
enummapset,
containers,
array >=0.1 && <0.6,
utility-ht,
QuickCheck >=2.5 && <3.0,
base
Main-Is: Test.hs
Hs-Source-Dirs: test, example
If flag(llvm)
Hs-Source-Dirs: test/knead
Else
Hs-Source-Dirs: test/plain
GHC-Options: -Wall
Other-Modules:
Mastermind.Test
Mastermind.Guess
Mastermind.Utility
Test.Knead
Test.Utility
Executable tetris-cube
If flag(buildExamples)
Build-Depends:
haha >=0.3.1 && <0.4,
pooled-io >=0.0 && <0.1,
set-cover,
containers,
utility-ht,
base
Else
Buildable: False
GHC-Options: -Wall -rtsopts -threaded
Hs-Source-Dirs: example
Main-Is: TetrisCube.hs
Other-Modules:
Utility
Executable soma-cube
If flag(buildExamples)
Build-Depends:
set-cover,
containers,
utility-ht,
base
Else
Buildable: False
GHC-Options: -Wall -rtsopts -threaded
Hs-Source-Dirs: example
Main-Is: Soma.hs
Executable queen8
If flag(buildExamples)
Build-Depends:
set-cover,
containers,
array >=0.1 && <0.6,
utility-ht,
base
Else
Buildable: False
GHC-Options: -Wall -rtsopts -threaded
Hs-Source-Dirs: example
Main-Is: Queen8.hs
Executable sudoku-setcover
If flag(buildExamples)
Build-Depends:
set-cover,
haha >=0.3.1 && <0.4,
random >=1.0 && <1.2,
transformers >=0.2 && <0.6,
containers,
array >=0.1 && <0.6,
utility-ht,
base
Else
Buildable: False
GHC-Options: -Wall -rtsopts -threaded
Hs-Source-Dirs: example
Main-Is: Sudoku.hs
Other-Modules: Random, Mastermind.Utility
Executable lcube
If flag(buildExamples)
Build-Depends:
set-cover,
pooled-io >=0.0 && <0.1,
containers,
utility-ht,
base
Else
Buildable: False
GHC-Options: -Wall -rtsopts -threaded
Hs-Source-Dirs: example
Main-Is: LCube.hs
Other-Modules:
Utility
Executable baumeister
If flag(buildExamples)
Build-Depends:
set-cover,
containers,
utility-ht,
base
Else
Buildable: False
GHC-Options: -Wall -rtsopts -threaded
Hs-Source-Dirs: example
Main-Is: Baumeister.hs
Other-Modules:
Utility
Executable lonpos-pyramid
If flag(buildExamples)
Build-Depends:
set-cover,
containers,
utility-ht,
base
Else
Buildable: False
GHC-Options: -Wall -rtsopts -threaded
Hs-Source-Dirs: example
Main-Is: LonposPyramid.hs
Other-Modules:
Utility
Executable alphametics
If flag(buildExamples)
Build-Depends:
set-cover,
non-empty >=0.2 && <0.4,
transformers >=0.2 && <0.6,
containers,
utility-ht,
base
Else
Buildable: False
GHC-Options: -Wall -rtsopts -threaded
Hs-Source-Dirs: example
Main-Is: Alphametics.hs
Executable domino
If flag(buildExamples)
Build-Depends:
set-cover,
unicode >=0.0 && <0.1,
containers,
semigroups,
utility-ht,
base
Else
Buildable: False
GHC-Options: -Wall -rtsopts -threaded
Hs-Source-Dirs: example
Main-Is: Domino.hs
Executable nonogram
If flag(buildExamples)
Build-Depends:
set-cover,
non-empty >=0.2 && <0.4,
psqueues,
enummapset,
containers,
utility-ht,
base
Else
Buildable: False
GHC-Options: -Wall
Hs-Source-Dirs: example
Main-Is: Nonogram.hs
Other-Modules:
Nonogram.Example
Nonogram.Encoding.Combinatoric
Nonogram.Encoding.BlackWhite
Nonogram.Encoding.Plug
Nonogram.Encoding.Naive
Nonogram.Base
Executable mastermind-setcover
If flag(buildExamples)
Build-Depends:
set-cover,
random >=1.0 && <1.2,
transformers >=0.2 && <0.6,
enummapset,
containers,
array >=0.1 && <0.6,
utility-ht,
base
Else
Buildable: False
GHC-Options: -Wall
Hs-Source-Dirs: example
Main-Is: Mastermind.hs
Other-Modules:
Mastermind.Utility
Mastermind.Guess
Mastermind.Distinguish
Mastermind.Example
Random
Executable mastermind-knead
If flag(buildExamples) && flag(llvm)
GHC-Prof-Options: -rtsopts -auto-all
Build-Depends:
set-cover,
haha >=0.3.1 && <0.4,
random >=1.0 && <1.2,
lazyio,
transformers >=0.2 && <0.6,
enummapset,
containers,
array >=0.1 && <0.6,
utility-ht,
base
Else
Buildable: False
Extra-Libraries: stdc++
GHC-Options: -Wall
Hs-Source-Dirs: example
Main-Is: MastermindKnead.hs
Other-Modules:
Mastermind.Utility
Mastermind.Guess
Mastermind.Distinguish
Mastermind.Example
Random
Benchmark mastermind-benchmark
Type: exitcode-stdio-1.0
Build-Depends:
set-cover,
timeit,
QuickCheck >=2.5 && <3.0,
random >=1.0 && <1.2,
transformers >=0.2 && <0.6,
enummapset,
containers,
array >=0.1 && <0.6,
utility-ht,
base
GHC-Options: -Wall
Hs-Source-Dirs: example
Main-Is: Mastermind/Benchmark.hs
Other-Modules:
Mastermind.Test
Mastermind.Guess
Mastermind.Utility
Executable pangram
If flag(buildExamples)
Build-Depends:
set-cover,
containers,
base
Else
Buildable: False
GHC-Options: -Wall
Hs-Source-Dirs: example
Main-Is: Pangram.hs
Executable conway-puzzle
If flag(buildExamples)
Build-Depends:
set-cover,
pooled-io >=0.0 && <0.1,
transformers,
containers,
base
Else
Buildable: False
GHC-Options: -Wall -rtsopts -threaded
Hs-Source-Dirs: example
Main-Is: ConwayPuzzle.hs
Other-Modules:
Utility