- Added support for secondary columns
- Added four new Solve overloads that have an additional parameter - numPrimaryColumns
- Created two new demo programs using secondary columns:
- Updated the C# and F# property tests to use FsCheck 2.x
- Added new
Solve
method overloads allowing the caller to pass an arbitrary data structure representing the matrix to replace the one added in DlxLib 1.1 (see breaking changes below). The new overloads are easier to use than their predecessor. The new overloads have the following signatures:
public IEnumerable<Solution> Solve<TData, TRow, TCol>(
TData data,
Func<TData, IEnumerable<TRow>> iterateRows,
Func<TRow, IEnumerable<TCol>> iterateCols)
public IEnumerable<Solution> Solve<TData, TRow, TCol>(
TData data,
Func<TData, IEnumerable<TRow>> iterateRows,
Func<TRow, IEnumerable<TCol>> iterateCols,
Func<TCol, bool> predicate)
- All
Solve
method overloads now yield solutions as they are found. Previously, the internal search algorithm would find all solutions before returning. If only the first solution was required, clients would have to handle theSolutionFound
event and cancel the solving process. Now, clients can just use.First()
or.Take(1)
etc. - Added XML documentation comments.
- Added online MSDN-style documentation that was built from the XML documentation comments using Sandcastle Help File Builder.
- Removed the
Cancel
method that was marked obsolete in DlxLib 1.1. - Removed the
Solve
method overload with the following signature:
public IEnumerable<Solution> Solve(bool[,] matrix)
because it is unnecessary due to the following overload when T
is a bool
:
public IEnumerable<Solution> Solve<T>(T[,] matrix)
- Removed the following
Solve
method overload because it was unnecessarily complicated (what was I smoking ?!?):
public IEnumerable<Solution> Solve<TData, TRow, TCol>(
TData data,
Action<TData, Action<TRow>> iterateRows,
Action<TRow, Action<TCol>> iterateCols,
Func<TCol, bool> predicate)
- Added a Dlx constructor taking a
CancellationToken
because this is a more idiomatic way to provide support for cancellation in .NET. - Marked the
Cancel
method as obsolete. - Added a
Solve
method overload allowing the caller to pass an arbitrary data structure representing the matrix along with a couple of actions to iterate rows and columns and a predicate.
- Initial release