MSEngine.Core
4.0.64
There is a newer version of this package available.
See the version list below for details.
See the version list below for details.
dotnet add package MSEngine.Core --version 4.0.64
NuGet\Install-Package MSEngine.Core -Version 4.0.64
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="MSEngine.Core" Version="4.0.64" />
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="MSEngine.Core" Version="4.0.64" />
<PackageReference Include="MSEngine.Core" />
For projects that support Central Package Management (CPM), copy this XML node into the solution Directory.Packages.props file to version the package.
paket add MSEngine.Core --version 4.0.64
The NuGet Team does not provide support for this client. Please contact its maintainers for support.
#r "nuget: MSEngine.Core, 4.0.64"
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
#addin nuget:?package=MSEngine.Core&version=4.0.64
#tool nuget:?package=MSEngine.Core&version=4.0.64
The NuGet Team does not provide support for this client. Please contact its maintainers for support.
MSEngine ZA Ultra
A High Performance Zero Allocation Minesweeper Engine/Solver Built with c# and .NET Standard 2.1
The core API of MSEngine Ultra
void FillCustomBoard(Span<Node> nodes, int mineCount, byte columns);
void ComputeBoard(Matrix<Node> matrix, Turn turn);
Who is this library for?
- Anyone who wants to build a Minesweeper game/UI without having to implement all the ugly/confusing internal logic
- Anyone planning on creating a Minesweeper solver bot
- Anyone interested in learning how to implement zero allocation c# code
How do I use this library?
- See the example
RunSimulations()
inside the console appsrc\MSEngine.ConsoleApp\
- This example uses the automated solver, but the selection of a turn may come from any UI/input
Notes
- With just the initial board and a queue of turns, we can compute the expected state of any minesweeper game
- This approach allows for easy debugging, replays and backwards time travel
- Inspired by the Starcraft 2 replay engine and TAS (tool assisted speedruns)
API
public interface IEngine
{
void FillBeginnerBoard(Span<Node> nodes);
void FillIntermediateBoard(Span<Node> nodes);
void FillExpertBoard(Span<Node> nodes);
void FillCustomBoard(Span<Node> nodes, int mineCount, byte columns);
void FillCustomBoard(Span<Node> nodes, ReadOnlySpan<int> mines, byte columns);
}
public interface IBoardStateMachine
{
void EnsureValidBoardConfiguration(Matrix<Node> matrix, Turn turn);
void ComputeBoard(Matrix<Node> matrix, Turn turn);
}
Tests
To run tests, open a terminal and navigate to src\MSEngine.Tests\
and execute dotnet test
Benchmarks
To run benchmarks, open a terminal and navigate to src\MSEngine.Benchmarks\
and execute dotnet run
TODO / Future Goals
NuGet PackageZero AllocationsPerformance EnhancementsExtensive and deterministic test suiteBenchmarksMatrix / Linear Algebra solver(Special thanks to Robert Massaioli for providing a detailed implementation)- Probabilistic Solver
Product | Versions Compatible and additional computed target framework versions. |
---|---|
.NET | net5.0 was computed. net5.0-windows was computed. net6.0 was computed. net6.0-android was computed. net6.0-ios was computed. net6.0-maccatalyst was computed. net6.0-macos was computed. net6.0-tvos was computed. net6.0-windows was computed. net7.0 was computed. net7.0-android was computed. net7.0-ios was computed. net7.0-maccatalyst was computed. net7.0-macos was computed. net7.0-tvos was computed. net7.0-windows was computed. net8.0 was computed. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. net9.0 was computed. net9.0-android was computed. net9.0-browser was computed. net9.0-ios was computed. net9.0-maccatalyst was computed. net9.0-macos was computed. net9.0-tvos was computed. net9.0-windows was computed. net10.0 was computed. net10.0-android was computed. net10.0-browser was computed. net10.0-ios was computed. net10.0-maccatalyst was computed. net10.0-macos was computed. net10.0-tvos was computed. net10.0-windows was computed. |
.NET Core | netcoreapp3.0 was computed. netcoreapp3.1 was computed. |
.NET Standard | netstandard2.1 is compatible. |
MonoAndroid | monoandroid was computed. |
MonoMac | monomac was computed. |
MonoTouch | monotouch was computed. |
Tizen | tizen60 was computed. |
Xamarin.iOS | xamarinios was computed. |
Xamarin.Mac | xamarinmac was computed. |
Xamarin.TVOS | xamarintvos was computed. |
Xamarin.WatchOS | xamarinwatchos was computed. |
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.
-
.NETStandard 2.1
- No dependencies.
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.
Version | Downloads | Last Updated |
---|---|---|
5.0.133 | 474 | 11/29/2021 |
5.0.132 | 403 | 11/18/2021 |
5.0.131 | 483 | 11/14/2021 |
5.0.125 | 405 | 9/7/2021 |
5.0.124 | 415 | 9/7/2021 |
5.0.123 | 430 | 9/7/2021 |
5.0.122 | 398 | 9/4/2021 |
5.0.121 | 396 | 8/21/2021 |
5.0.118 | 481 | 4/25/2021 |
5.0.117 | 442 | 4/20/2021 |
5.0.116 | 500 | 4/18/2021 |
5.0.115 | 514 | 12/3/2020 |
5.0.114 | 477 | 12/3/2020 |
5.0.113 | 507 | 12/2/2020 |
5.0.106 | 541 | 8/14/2020 |
5.0.104 | 625 | 8/14/2020 |
5.0.103 | 532 | 8/12/2020 |
5.0.102 | 558 | 7/8/2020 |
5.0.100 | 529 | 7/6/2020 |
5.0.99 | 547 | 7/6/2020 |
5.0.97 | 568 | 7/4/2020 |
5.0.96 | 582 | 7/2/2020 |
5.0.95 | 521 | 6/29/2020 |
5.0.94 | 601 | 6/28/2020 |
5.0.93 | 531 | 6/27/2020 |
5.0.92 | 583 | 6/27/2020 |
5.0.91 | 607 | 6/27/2020 |
5.0.90 | 660 | 6/26/2020 |
5.0.89 | 532 | 6/23/2020 |
4.0.88 | 551 | 6/22/2020 |
4.0.87 | 656 | 6/21/2020 |
4.0.86 | 534 | 6/19/2020 |
4.0.85 | 541 | 6/17/2020 |
4.0.84 | 601 | 6/12/2020 |
4.0.83 | 500 | 6/11/2020 |
4.0.82 | 495 | 6/11/2020 |
4.0.80 | 530 | 6/10/2020 |
4.0.72 | 509 | 6/5/2020 |
4.0.71 | 548 | 6/5/2020 |
4.0.70 | 535 | 6/5/2020 |
4.0.68 | 622 | 6/4/2020 |
4.0.67 | 599 | 6/4/2020 |
4.0.66 | 542 | 6/2/2020 |
4.0.65 | 556 | 6/2/2020 |
4.0.64 | 578 | 6/1/2020 |
3.0.56 | 612 | 9/25/2019 |
2.0.53 | 690 | 4/7/2019 |
2.0.52 | 654 | 3/3/2019 |
2.0.51 | 824 | 1/18/2019 |
2.0.50 | 800 | 12/24/2018 |
2.0.49 | 759 | 12/16/2018 |
2.0.48 | 754 | 12/16/2018 |
1.0.47 | 815 | 12/8/2018 |
1.0.46 | 791 | 11/22/2018 |
1.0.44 | 807 | 11/13/2018 |
1.0.43 | 809 | 11/13/2018 |
1.0.42 | 794 | 11/12/2018 |
1.0.41 | 844 | 11/11/2018 |
1.0.40 | 795 | 11/11/2018 |
1.0.39 | 795 | 11/10/2018 |
1.0.38 | 772 | 11/9/2018 |
1.0.37 | 815 | 11/8/2018 |
1.0.35 | 787 | 11/6/2018 |
1.0.34 | 822 | 11/4/2018 |
1.0.32 | 824 | 11/2/2018 |
1.0.13 | 761 | 11/1/2018 |
1.0.1 | 812 | 10/28/2018 |
1.0.0 | 787 | 10/28/2018 |