module Common where import qualified Data.Array.Comfort.Boxed as BoxedArray import qualified Data.Array.Comfort.Shape as Shape import Data.Array.Comfort.Boxed (Array) data Op = Add | Mul deriving (Eq, Ord, Enum, Show) sizeFromOps :: Array (Shape.LowerTriangular ShapeInt) op -> Int sizeFromOps = succ . Shape.size . Shape.triangularSize . BoxedArray.shape type ShapeInt = Shape.ZeroBased Int type SolutionCheck a = BoxedArray.Array (Shape.LowerTriangular ShapeInt) Op -> [((Int,Int),a)] -> Bool