DKey.Algorithms
1.3.0
dotnet add package DKey.Algorithms --version 1.3.0
NuGet\Install-Package DKey.Algorithms -Version 1.3.0
<PackageReference Include="DKey.Algorithms" Version="1.3.0" />
paket add DKey.Algorithms --version 1.3.0
#r "nuget: DKey.Algorithms, 1.3.0"
// Install DKey.Algorithms as a Cake Addin #addin nuget:?package=DKey.Algorithms&version=1.3.0 // Install DKey.Algorithms as a Cake Tool #tool nuget:?package=DKey.Algorithms&version=1.3.0
DKey.Algorithms
DKey.Algorithms is a library that provides basic algorithms and data structures implementation in C#.
Currently Implemented:
- Data Structures
- Graph
- Tree
- Sorted Multiset
- Segment Tree
- Generic Suffix Tree
- Short Suffix Tree
- Prefix Trie
- Red-Black Tree
- Graph Processing
- Depth First Search
- Breadth First Search
- Generic graph statistics (Components, Cycle, Shortest path, Diameter)
- Dijkstra Algorithm
- Number Theory
- Prime Arithmetic
- Binary Arithmetic
- Modular Arithmetic
- Combinatorics
- Argument Search
- Binary Search
- Ternary Search
- Sorted Data Search
- Data Manipulation
- IOHelper
- Tokenizer
- Random Data Generator (for lists, strings and graphs)
- Others
- Problem Solver and MultiSolver
- LINQ Extension
DKey.Codeforces
DKey.Codeforces contains favorite examples of solutions for Codeforces Problems that can be used as a template for solving and testing problems, not limited to Codeforces.
To run a new solution:
- Create a new Solver class
- The Solver constructor should contain the types of parameters that are going to be parsed and delivered in arguments of the Solve() method
- The Solve() method should contain the solution logic and use output.Append() or output.AddL() to append the result to StringBuilder that will print output at the end of the program
- Swap the Solver class in program.cs to run your solver
- Use the MultiSolver instead, if the problem input starts with number of test cases followed by multiple test cases.
ContestTemplateBuilder can be used to create contest templates to work in this project.
Utils
DKey.ContestSubmissionBuilder
DKey.ContestSubmissionBuilder is a console application to build a single file submission for Codeforces problems.
It takes the EntryPoint of your solution (supposedly program.cs located in DKey.Codeforces) as root and builds a single file submission combining the subtree of dependencies.
Traverse through tree of dependencies is not perfect.
To use application correctly, please, follow these rules
- 1 class = 1 file
- Class name should be the same as the file name
- Class name should contains only letters and digits
- Don't use short class names that can be confused with other keywords and methods (like List or Copy)
- Use file-scoped namespace declarations like namespace x; instead of namespace x{}
- Your files should contain class, struct, enum or interface
- Don't name you variables like other classes (usually only problem for public members, as they start with UpperCase)
- Be careful with static extension methods (with this keyword), as their class name is not garanteed to be in dependent class and might be skipped while combining submission. Extension should be in their own namespace and should be added manually to config of ContestSubmissionBuilder.
- Try to avoid complex static classes with many dependencies, if only 1 method might be required from it, as it will lead to a lot of unnecessary dependencies in submission.cs
Please note that violating most of the rules will result in unnecessary classes in submission.cs, but some might break the logic.
DKey.ContestTemplateBuilder
DKey.ContestTemplateBuilder generates folder Contest{number} in DKey.CodeForces and fill it with 6 solution templates based on MultiSolver for Problems A-F.
DKey.ContestProcedure
DKey.ContestProcedure creates submission file and launch Codeforces.Program.Main() simultaneously. Perfect for checking the test output or debugging right before submitting the solution.
Thank you for using DKey.Algorithms!
Contacts:
dmitry.anikeyev@gmail.com
Product | Versions Compatible and additional computed target framework versions. |
---|---|
.NET | net7.0 is compatible. 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. |
-
net7.0
- 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.