gitextract_zwg869o3/ ├── .devcontainer/ │ └── devcontainer.json ├── .editorconfig ├── .github/ │ ├── CODEOWNERS │ ├── ISSUE_TEMPLATE/ │ │ ├── bug_report.md │ │ └── feature_request.md │ ├── pull_request_template.md │ └── workflows/ │ ├── ci.yml │ └── stale.yml ├── .gitignore ├── Algorithms/ │ ├── Algorithms.csproj │ ├── Crypto/ │ │ ├── Digests/ │ │ │ ├── AsconDigest.cs │ │ │ ├── IDigest.cs │ │ │ └── Md2Digest.cs │ │ ├── Exceptions/ │ │ │ ├── CryptoException.cs │ │ │ ├── DataLengthException.cs │ │ │ └── OutputLengthException.cs │ │ ├── Paddings/ │ │ │ ├── IBlockCipherPadding.cs │ │ │ ├── Iso10126D2Padding.cs │ │ │ ├── Iso7816D4Padding.cs │ │ │ ├── Pkcs7Padding.cs │ │ │ ├── TbcPadding.cs │ │ │ └── X932Padding.cs │ │ └── Utils/ │ │ ├── ByteEncodingUtils.cs │ │ ├── LongUtils.cs │ │ └── ValidationUtils.cs │ ├── DataCompression/ │ │ ├── BurrowsWheelerTransform.cs │ │ ├── HuffmanCompressor.cs │ │ ├── ShannonFanoCompressor.cs │ │ └── Translator.cs │ ├── Encoders/ │ │ ├── AutokeyEncorder.cs │ │ ├── BlowfishEncoder.cs │ │ ├── CaesarEncoder.cs │ │ ├── FeistelCipher.cs │ │ ├── HillEncoder.cs │ │ ├── IEncoder.cs │ │ ├── NysiisEncoder.cs │ │ ├── SoundexEncoder.cs │ │ └── VigenereEncoder.cs │ ├── Financial/ │ │ └── PresentValue.cs │ ├── GlobalUsings.cs │ ├── Graph/ │ │ ├── ArticulationPoints.cs │ │ ├── BellmanFord.cs │ │ ├── BipartiteGraph.cs │ │ ├── BreadthFirstSearch.cs │ │ ├── BreadthFirstTreeTraversal.cs │ │ ├── Bridges.cs │ │ ├── DepthFirstSearch.cs │ │ ├── Dijkstra/ │ │ │ ├── DijkstraAlgorithm.cs │ │ │ └── DistanceModel.cs │ │ ├── FloydWarshall.cs │ │ ├── IGraphSearch.cs │ │ ├── Kosaraju.cs │ │ ├── MinimumSpanningTree/ │ │ │ ├── Kruskal.cs │ │ │ └── PrimMatrix.cs │ │ ├── TarjanStronglyConnectedComponents.cs │ │ └── TopologicalSort.cs │ ├── Knapsack/ │ │ ├── BranchAndBoundKnapsackSolver.cs │ │ ├── BranchAndBoundNode.cs │ │ ├── DynamicProgrammingKnapsackSolver.cs │ │ ├── IHeuristicKnapsackSolver.cs │ │ ├── IKnapsackSolver.cs │ │ └── NaiveKnapsackSolver.cs │ ├── LinearAlgebra/ │ │ ├── Distances/ │ │ │ ├── Chebyshev.cs │ │ │ ├── Euclidean.cs │ │ │ ├── Manhattan.cs │ │ │ └── Minkowski.cs │ │ └── Eigenvalue/ │ │ └── PowerIteration.cs │ ├── MachineLearning/ │ │ ├── KNearestNeighbors.cs │ │ ├── LinearRegression.cs │ │ └── LogisticRegression.cs │ ├── ModularArithmetic/ │ │ ├── ChineseRemainderTheorem.cs │ │ ├── ExtendedEuclideanAlgorithm.cs │ │ └── ModularMultiplicativeInverse.cs │ ├── NewtonSquareRoot.cs │ ├── Numeric/ │ │ ├── Abs.cs │ │ ├── AdditionWithoutArithmetic.cs │ │ ├── AliquotSumCalculator.cs │ │ ├── AmicableNumbersChecker.cs │ │ ├── AutomorphicNumber.cs │ │ ├── BinomialCoefficient.cs │ │ ├── Ceil.cs │ │ ├── Decomposition/ │ │ │ ├── LU.cs │ │ │ └── ThinSVD.cs │ │ ├── DoubleFactorial.cs │ │ ├── EulerMethod.cs │ │ ├── Factorial.cs │ │ ├── Factorization/ │ │ │ ├── IFactorizer.cs │ │ │ └── TrialDivisionFactorizer.cs │ │ ├── Floor.cs │ │ ├── GaussJordanElimination.cs │ │ ├── GreatestCommonDivisor/ │ │ │ ├── BinaryGreatestCommonDivisorFinder.cs │ │ │ ├── EuclideanGreatestCommonDivisorFinder.cs │ │ │ └── IGreatestCommonDivisorFinder.cs │ │ ├── JosephusProblem.cs │ │ ├── KeithNumberChecker.cs │ │ ├── KrishnamurthyNumberChecker.cs │ │ ├── MillerRabinPrimalityChecker.cs │ │ ├── ModularExponentiation.cs │ │ ├── NarcissisticNumberChecker.cs │ │ ├── PerfectCubeChecker.cs │ │ ├── PerfectNumberChecker.cs │ │ ├── PerfectSquareChecker.cs │ │ ├── PrimeChecker.cs │ │ ├── Pseudoinverse/ │ │ │ └── PseudoInverse.cs │ │ ├── Relu.cs │ │ ├── RungeKuttaMethod.cs │ │ ├── Series/ │ │ │ └── Maclaurin.cs │ │ ├── Sigmoid.cs │ │ ├── SoftMax.cs │ │ ├── SumOfDigits.cs │ │ └── Tanh.cs │ ├── Other/ │ │ ├── BoyerMooreMajorityVote.cs │ │ ├── DecisionsConvolutions.cs │ │ ├── FermatPrimeChecker.cs │ │ ├── FloodFill.cs │ │ ├── GaussOptimization.cs │ │ ├── GeoLocation.cs │ │ ├── Geofence.cs │ │ ├── Geohash.cs │ │ ├── Int2Binary.cs │ │ ├── JulianEaster.cs │ │ ├── KadanesAlgorithm.cs │ │ ├── KochSnowflake.cs │ │ ├── Luhn.cs │ │ ├── Mandelbrot.cs │ │ ├── ParetoOptimization.cs │ │ ├── PollardsRhoFactorizing.cs │ │ ├── RGBHSVConversion.cs │ │ ├── SieveOfEratosthenes.cs │ │ ├── Triangulator.cs │ │ └── WelfordsVariance.cs │ ├── Problems/ │ │ ├── DynamicProgramming/ │ │ │ ├── CoinChange/ │ │ │ │ └── DynamicCoinChangeSolver.cs │ │ │ └── LevenshteinDistance/ │ │ │ └── LevenshteinDistance.cs │ │ ├── GraphColoring/ │ │ │ └── GraphColoringSolver.cs │ │ ├── JobScheduling/ │ │ │ ├── IntervalSchedulingSolver.cs │ │ │ └── Job.cs │ │ ├── KnightTour/ │ │ │ └── OpenKnightTour.cs │ │ ├── NQueens/ │ │ │ └── BacktrackingNQueensSolver.cs │ │ ├── StableMarriage/ │ │ │ ├── Accepter.cs │ │ │ ├── GaleShapley.cs │ │ │ └── Proposer.cs │ │ └── TravelingSalesman/ │ │ └── TravelingSalesmanSolver.cs │ ├── RecommenderSystem/ │ │ ├── CollaborativeFiltering.cs │ │ └── ISimilarityCalculator.cs │ ├── Search/ │ │ ├── AStar/ │ │ │ ├── AStar.cs │ │ │ ├── Node.cs │ │ │ ├── NodeState.cs │ │ │ ├── PathfindingException.cs │ │ │ ├── PriorityQueue.cs │ │ │ └── VecN.cs │ │ ├── BinarySearcher.cs │ │ ├── BoyerMoore.cs │ │ ├── FastSearcher.cs │ │ ├── FibonacciSearcher.cs │ │ ├── InterpolationSearch.cs │ │ ├── JumpSearcher.cs │ │ ├── LinearSearcher.cs │ │ └── RecursiveBinarySearcher.cs │ ├── Sequences/ │ │ ├── AllOnesSequence.cs │ │ ├── AllThreesSequence.cs │ │ ├── AllTwosSequence.cs │ │ ├── BinaryPrimeConstantSequence.cs │ │ ├── BinomialSequence.cs │ │ ├── CakeNumbersSequence.cs │ │ ├── CatalanSequence.cs │ │ ├── CentralPolygonalNumbersSequence.cs │ │ ├── CubesSequence.cs │ │ ├── DivisorsCountSequence.cs │ │ ├── EuclidNumbersSequence.cs │ │ ├── EulerTotientSequence.cs │ │ ├── FactorialSequence.cs │ │ ├── FermatNumbersSequence.cs │ │ ├── FermatPrimesSequence.cs │ │ ├── FibonacciSequence.cs │ │ ├── GolombsSequence.cs │ │ ├── ISequence.cs │ │ ├── KolakoskiSequence.cs │ │ ├── KolakoskiSequence2.cs │ │ ├── KummerNumbersSequence.cs │ │ ├── LucasNumbersBeginningAt2Sequence.cs │ │ ├── MakeChangeSequence.cs │ │ ├── MatchstickTriangleSequence.cs │ │ ├── NaturalSequence.cs │ │ ├── NegativeIntegersSequence.cs │ │ ├── NumberOfBooleanFunctionsSequence.cs │ │ ├── NumberOfPrimesByNumberOfDigitsSequence.cs │ │ ├── NumberOfPrimesByPowersOf10Sequence.cs │ │ ├── OnesCountingSequence.cs │ │ ├── PowersOf10Sequence.cs │ │ ├── PowersOf2Sequence.cs │ │ ├── PrimePiSequence.cs │ │ ├── PrimesSequence.cs │ │ ├── PrimorialNumbersSequence.cs │ │ ├── RecamansSequence.cs │ │ ├── SquaresSequence.cs │ │ ├── TetrahedralSequence.cs │ │ ├── TetranacciNumbersSequence.cs │ │ ├── ThreeNPlusOneStepsSequence.cs │ │ ├── TribonacciNumbersSequence.cs │ │ ├── VanEcksSequence.cs │ │ └── ZeroSequence.cs │ ├── Shufflers/ │ │ ├── FisherYatesShuffler.cs │ │ ├── IShuffler.cs │ │ ├── LINQShuffler.cs │ │ ├── NaiveShuffler.cs │ │ └── RecursiveShuffler.cs │ ├── Sorters/ │ │ ├── Comparison/ │ │ │ ├── BasicTimSorter.cs │ │ │ ├── BinaryInsertionSorter.cs │ │ │ ├── BogoSorter.cs │ │ │ ├── BubbleSorter.cs │ │ │ ├── CocktailSorter.cs │ │ │ ├── CombSorter.cs │ │ │ ├── CycleSorter.cs │ │ │ ├── ExchangeSorter.cs │ │ │ ├── GnomeSorter.cs │ │ │ ├── HeapSorter.cs │ │ │ ├── IComparisonSorter.cs │ │ │ ├── InsertionSorter.cs │ │ │ ├── MedianOfThreeQuickSorter.cs │ │ │ ├── MergeSorter.cs │ │ │ ├── MiddlePointQuickSorter.cs │ │ │ ├── PancakeSorter.cs │ │ │ ├── QuickSorter.cs │ │ │ ├── RandomPivotQuickSorter.cs │ │ │ ├── SelectionSorter.cs │ │ │ ├── ShellSorter.cs │ │ │ ├── TimSorter.cs │ │ │ └── TimSorterSettings.cs │ │ ├── External/ │ │ │ ├── ExternalMergeSorter.cs │ │ │ ├── IExternalSorter.cs │ │ │ ├── ISequentialStorage.cs │ │ │ ├── ISequentialStorageReader.cs │ │ │ ├── ISequentialStorageWriter.cs │ │ │ └── Storages/ │ │ │ ├── IntFileStorage.cs │ │ │ └── IntInMemoryStorage.cs │ │ ├── Integer/ │ │ │ ├── BucketSorter.cs │ │ │ ├── CountingSorter.cs │ │ │ ├── IIntegerSorter.cs │ │ │ └── RadixSorter.cs │ │ ├── String/ │ │ │ ├── IStringSorter.cs │ │ │ └── MsdRadixStringSorter.cs │ │ └── Utils/ │ │ └── GallopingStrategy.cs │ ├── Stack/ │ │ ├── BalancedParenthesesChecker.cs │ │ ├── InfixToPostfix.cs │ │ ├── NextGreaterElement.cs │ │ └── ReverseStack.cs │ └── Strings/ │ ├── GeneralStringAlgorithms.cs │ ├── ManachersAlgorithm.cs │ ├── Palindrome.cs │ ├── PatternMatching/ │ │ ├── Bitap.cs │ │ ├── BoyerMoore.cs │ │ ├── KnuthMorrisPrattSearcher.cs │ │ ├── NaiveStringSearch.cs │ │ ├── RabinKarp.cs │ │ ├── WildCardMatcher.cs │ │ └── ZblockSubstringSearch.cs │ ├── Permutation.cs │ └── Similarity/ │ ├── CosineSimilarity.cs │ ├── DamerauLevenshteinDistance.cs │ ├── HammingDistance.cs │ ├── JaccardDistance.cs │ ├── JaccardSimilarity.cs │ ├── JaroSimilarity.cs │ ├── JaroWinklerDistance.cs │ └── OptimalStringAlignment.cs ├── Algorithms.Tests/ │ ├── Algorithms.Tests.csproj │ ├── AssemblyInfo.cs │ ├── Compressors/ │ │ ├── BurrowsWheelerTransformTests.cs │ │ ├── HuffmanCompressorTests.cs │ │ ├── ShannonFanoCompressorTests.cs │ │ └── TranslatorTests.cs │ ├── Crypto/ │ │ ├── Digests/ │ │ │ ├── AsconDigestTests.cs │ │ │ └── Md2DigestTests.cs │ │ ├── Exceptions/ │ │ │ ├── CryptoExceptionTests.cs │ │ │ ├── DataLengthExceptionTests.cs │ │ │ └── OutputLengthExceptionTests.cs │ │ ├── Paddings/ │ │ │ ├── Iso10126D2PaddingTests.cs │ │ │ ├── Iso7816D4PaddingTests.cs │ │ │ ├── Pkcs7PaddingTests.cs │ │ │ ├── TbcPaddingTests.cs │ │ │ └── X932PaddingTests.cs │ │ └── Utils/ │ │ ├── ByteEncodingUtils.cs │ │ ├── LongUtilsTests.cs │ │ └── ValidationUtilsTests.cs │ ├── Encoders/ │ │ ├── AutokeyEncoderTests.cs │ │ ├── BlowfishEncoderTests.cs │ │ ├── CaesarEncoderTests.cs │ │ ├── FeistelCipherTest.cs │ │ ├── HillEnconderTests.cs │ │ ├── NysiisEncoderTests.cs │ │ ├── SoundexEncoderTest.cs │ │ └── VigenereEncoderTests.cs │ ├── Financial/ │ │ └── PresentValueTests.cs │ ├── GlobalUsings.cs │ ├── Graph/ │ │ ├── ArticulationPointsTests.cs │ │ ├── BellmanFordTests.cs │ │ ├── BipartiteGraphTests.cs │ │ ├── BreadthFirstSearchTests.cs │ │ ├── BreadthFirstTreeTraversalTests.cs │ │ ├── BridgesTests.cs │ │ ├── DepthFirstSearchTests.cs │ │ ├── Dijkstra/ │ │ │ └── DijkstraTests.cs │ │ ├── FloydWarshallTests.cs │ │ ├── KosarajuTests.cs │ │ ├── MinimumSpanningTree/ │ │ │ ├── KruskalTests.cs │ │ │ └── PrimMatrixTests.cs │ │ ├── TarjanStronglyConnectedComponentsTests.cs │ │ └── TopologicalSortTests.cs │ ├── Helpers/ │ │ ├── IntComparer.cs │ │ └── RandomHelper.cs │ ├── Knapsack/ │ │ ├── BranchAndBoundKnapsackSolverTests.cs │ │ ├── DynamicProgrammingKnapsackSolverTests.cs │ │ └── NaiveKnapsackSolverTests.cs │ ├── LinearAlgebra/ │ │ ├── Distances/ │ │ │ ├── ChebyshevTests.cs │ │ │ ├── EuclideanTests.cs │ │ │ ├── ManhattanTests.cs │ │ │ └── MinkowskiTests.cs │ │ └── Eigenvalue/ │ │ └── PowerIterationTests.cs │ ├── MachineLearning/ │ │ ├── KNearestNeighborsTests.cs │ │ ├── LinearRegressionTests.cs │ │ └── LogisticRegressionTests.cs │ ├── ModularArithmetic/ │ │ ├── ChineseRemainderTheoremTest.cs │ │ ├── ExtendedEuclideanAlgorithmTest.cs │ │ └── ModularMultiplicativeInverseTest.cs │ ├── Numeric/ │ │ ├── AbsTests.cs │ │ ├── AdditionWithoutArithmeticsTests.cs │ │ ├── AliquotSumCalculatorTests.cs │ │ ├── AmicableNumbersTest.cs │ │ ├── AutomorphicNumberTests.cs │ │ ├── BinomialCoefficientTests.cs │ │ ├── CeilTests.cs │ │ ├── Decomposition/ │ │ │ ├── LUTests.cs │ │ │ ├── MaclaurinTests.cs │ │ │ └── SVDTests.cs │ │ ├── DoubleFactorialTests.cs │ │ ├── EulerMethodTest.cs │ │ ├── FactorialTests.cs │ │ ├── Factorization/ │ │ │ └── TrialDivisionFactorizerTests.cs │ │ ├── FloorTests.cs │ │ ├── GaussJordanEliminationTests.cs │ │ ├── GreatestCommonDivisor/ │ │ │ ├── BinaryGreatestCommonDivisorFinderTests.cs │ │ │ └── EuclideanGreatestCommonDivisorFinderTests.cs │ │ ├── JosephusProblemTest.cs │ │ ├── KeithNumberTest.cs │ │ ├── KrishnamurthyNumberCheckerTests.cs │ │ ├── MillerRabinPrimalityTest.cs │ │ ├── ModularExponentiationTest.cs │ │ ├── NarcissisticNumberTest.cs │ │ ├── NewtonSquareRootTests.cs │ │ ├── PerfectCubeTests.cs │ │ ├── PerfectNumberTest.cs │ │ ├── PerfectSquareTest.cs │ │ ├── PrimeNumberTest.cs │ │ ├── PseudoInverse/ │ │ │ └── PseudoInverseTests.cs │ │ ├── ReluTest.cs │ │ ├── RungeKuttaMethodTest.cs │ │ ├── SigmoidTests.cs │ │ ├── SoftMaxTests.cs │ │ ├── SumOfDigitsTest.cs │ │ └── TanhTest.cs │ ├── Other/ │ │ ├── BoyerMooreMajorityVoteTests.cs │ │ ├── DecisionsConvolutionsTest.cs │ │ ├── FermatPrimeCheckerTests.cs │ │ ├── FloodFillTest.cs │ │ ├── GaussOptimizationTest.cs │ │ ├── GeoLocationTests.cs │ │ ├── GeofenceTests.cs │ │ ├── GeohashTests.cs │ │ ├── Int2BinaryTests.cs │ │ ├── JulianEasterTests.cs │ │ ├── KadanesAlgorithmTests.cs │ │ ├── KochSnowflakeTest.cs │ │ ├── LuhnTests.cs │ │ ├── MandelbrotTest.cs │ │ ├── ParetoOptimizationTests.cs │ │ ├── PollardsRhoFactorizingTests.cs │ │ ├── RGBHSVConversionTest.cs │ │ ├── SieveOfEratosthenesTests.cs │ │ ├── TriangulatorTests.cs │ │ └── WelfordsVarianceTest.cs │ ├── Problems/ │ │ ├── DynamicProgramming/ │ │ │ ├── CoinChange/ │ │ │ │ ├── GenerateChangesDictionaryTests.cs │ │ │ │ ├── GenerateSingleCoinChangesTests.cs │ │ │ │ ├── GetMinimalNextCoinTests.cs │ │ │ │ └── MakeCoinChangeDynamicTests.cs │ │ │ └── LevenshteinDistance/ │ │ │ └── LevenshteinDistanceTests.cs │ │ ├── GraphColoring/ │ │ │ └── GraphColoringSolverTests.cs │ │ ├── JobScheduling/ │ │ │ └── IntervalSchedulingSolverTests.cs │ │ ├── KnightTour/ │ │ │ └── OpenKnightTourTests.cs │ │ ├── NQueens/ │ │ │ └── BacktrackingNQueensSolverTests.cs │ │ ├── StableMarriage/ │ │ │ └── GaleShapleyTests.cs │ │ └── TravelingSalesman/ │ │ └── TravelingSalesmanSolverTests.cs │ ├── RecommenderSystem/ │ │ └── CollaborativeFilteringTests.cs │ ├── Search/ │ │ ├── AStarTests.cs │ │ ├── BinarySearcherTests.cs │ │ ├── BoyerMooreTests.cs │ │ ├── FastSearcherTests.cs │ │ ├── FibonacciSearcherTests.cs │ │ ├── Helper.cs │ │ ├── InterpolationSearchTests.cs │ │ ├── JumpSearcherTests.cs │ │ ├── LinearSearcherTests.cs │ │ └── RecursiveBinarySearcherTests.cs │ ├── Sequences/ │ │ ├── AllOnesSequenceTests.cs │ │ ├── AllThreesSequenceTests.cs │ │ ├── AllTwosSequenceTests.cs │ │ ├── BinaryPrimeConstantSequenceTests.cs │ │ ├── BinomialSequenceTests.cs │ │ ├── CakeNumbersSequenceTests.cs │ │ ├── CatalanSequenceTest.cs │ │ ├── CentralPolygonalNumbersSequenceTests.cs │ │ ├── CubesSequenceTests.cs │ │ ├── DivisorsCountSequenceTests.cs │ │ ├── EuclidNumbersSequenceTests.cs │ │ ├── EulerTotientSequenceTests.cs │ │ ├── FactorialSequenceTest.cs │ │ ├── FermatNumbersSequenceTests.cs │ │ ├── FermatPrimesSequenceTests.cs │ │ ├── FibonacciSequenceTests.cs │ │ ├── GolombsSequenceTests.cs │ │ ├── KolakoskiSequenceTests.cs │ │ ├── KummerNumbersSequenceTests.cs │ │ ├── LucasNumbersBeginningAt2SequenceTests.cs │ │ ├── MakeChangeSequenceTests.cs │ │ ├── MatchstickTriangleSequenceTests.cs │ │ ├── NaturalSequenceTests.cs │ │ ├── NegativeIntegersSequenceTests.cs │ │ ├── NumberOfBooleanFunctionsSequenceTests.cs │ │ ├── NumberOfPrimesByNumberOfDigitsSequenceTests.cs │ │ ├── NumberOfPrimesByPowersOf10SequenceTests.cs │ │ ├── OnesCountingSequenceTest.cs │ │ ├── PowersOf10SequenceTests.cs │ │ ├── PowersOf2SequenceTests.cs │ │ ├── PrimePiSequenceTests.cs │ │ ├── PrimesSequenceTests.cs │ │ ├── PrimorialNumbersSequenceTests.cs │ │ ├── RecamansSequenceTests.cs │ │ ├── SquaresSequenceTests.cs │ │ ├── TetrahedralSequenceTests.cs │ │ ├── TetranacciNumbersSequenceTests.cs │ │ ├── ThreeNPlusOneStepsSequenceTests.cs │ │ ├── TribonacciNumbersSequenceTests.cs │ │ ├── VanEcksSequenceTests.cs │ │ └── ZeroSequenceTests.cs │ ├── Shufflers/ │ │ ├── FisherYatesShufflerTests.cs │ │ ├── LINQShufflerTests.cs │ │ ├── NaiveShufflerTests.cs │ │ └── RecursiveShufflerTests.cs │ ├── Sorters/ │ │ ├── Comparison/ │ │ │ ├── BasicTeamSorterTests.cs │ │ │ ├── BinaryInsertionSorterTests.cs │ │ │ ├── BogoSorterTests.cs │ │ │ ├── BubbleSorterTests.cs │ │ │ ├── CocktailSorterTests.cs │ │ │ ├── CombSorterTests.cs │ │ │ ├── CycleSorterTests.cs │ │ │ ├── ExchangeSorterTests.cs │ │ │ ├── GnomeSorterTests.cs │ │ │ ├── HeapSorterTests.cs │ │ │ ├── InsertionSorterTests.cs │ │ │ ├── MedianOfThreeQuickSorterTests.cs │ │ │ ├── MergeSorterTests.cs │ │ │ ├── MiddlePointQuickSorterTests.cs │ │ │ ├── PancakeSorterTests.cs │ │ │ ├── RandomPivotQuickSorterTests.cs │ │ │ ├── SelectionSorterTests.cs │ │ │ ├── ShellSorterTests.cs │ │ │ └── TimSorterTests.cs │ │ ├── External/ │ │ │ └── ExternalMergeSorterTests.cs │ │ ├── Integer/ │ │ │ ├── BucketSorterTests.cs │ │ │ ├── CountingSorterTests.cs │ │ │ └── RadixSorterTests.cs │ │ ├── String/ │ │ │ └── MsdRadixStringSorterTests.cs │ │ └── Utils/ │ │ └── GallopingStrategyTests.cs │ ├── Stack/ │ │ ├── BalancedParenthesesCheckerTests.cs │ │ ├── InfixToPostfixTests.cs │ │ ├── NextGreaterElementTests.cs │ │ └── ReverseStackTests.cs │ └── Strings/ │ ├── GeneralStringAlgorithmsTests.cs │ ├── ManachersAlgorithmTests.cs │ ├── PalindromeTests.cs │ ├── PatternMatching/ │ │ ├── BitapTests.cs │ │ ├── BoyerMoreTests.cs │ │ ├── KnuthMorrisPrattSearcherTests.cs │ │ ├── NaiveStringSearchTests.cs │ │ ├── RabinKarpTests.cs │ │ ├── WildCardMatcherTests.cs │ │ └── ZblockSubstringSearchTest.cs │ ├── PermutationTests.cs │ └── Similarity/ │ ├── CosineSimilarityTests.cs │ ├── DamerauLevenshteinDistanceTests.cs │ ├── HammingDistanceTests.cs │ ├── JaccardDistanceTests.cs │ ├── JaccardSimilarityTests.cs │ ├── JaroSimilarityTests.cs │ ├── JaroWinklerDistanceTests.cs │ └── OptimalStringAlignmentTests.cs ├── C-Sharp.sln ├── CODE_OF_CONDUCT.md ├── CONTRIBUTING.md ├── DataStructures/ │ ├── AATree/ │ │ ├── AATree.cs │ │ └── AATreeNode.cs │ ├── AVLTree/ │ │ ├── AVLTree.cs │ │ └── AVLTreeNode.cs │ ├── BTree/ │ │ ├── BTree.cs │ │ └── BTreeNode.cs │ ├── Bag/ │ │ ├── Bag.cs │ │ └── BagNode.cs │ ├── BinarySearchTree/ │ │ ├── BinarySearchTree.cs │ │ └── BinarySearchTreeNode.cs │ ├── BitArray.cs │ ├── Cache/ │ │ ├── LfuCache.cs │ │ └── LruCache.cs │ ├── DataStructures.csproj │ ├── Deque/ │ │ └── Deque.cs │ ├── DisjointSet/ │ │ ├── DisjointSet.cs │ │ └── Node.cs │ ├── Fenwick/ │ │ └── BinaryIndexedTree.cs │ ├── GlobalUsings.cs │ ├── Graph/ │ │ ├── DirectedWeightedGraph.cs │ │ ├── IDirectedWeightedGraph.cs │ │ └── Vertex.cs │ ├── Hashing/ │ │ ├── Entry.cs │ │ ├── HashTable.cs │ │ └── NumberTheory/ │ │ └── PrimeNumber.cs │ ├── Heap/ │ │ ├── BinaryHeap.cs │ │ ├── FibonacciHeap/ │ │ │ ├── FHeapNode.cs │ │ │ └── FibonacciHeap.cs │ │ ├── MinMaxHeap.cs │ │ └── PairingHeap/ │ │ ├── PairingHeap.cs │ │ ├── PairingHeapNode.cs │ │ ├── PairingNodeComparer.cs │ │ └── Sorting.cs │ ├── InvertedIndex.cs │ ├── LinkedList/ │ │ ├── CircularLinkedList/ │ │ │ ├── CircularLinkedList.cs │ │ │ └── CircularLinkedListNode.cs │ │ ├── DoublyLinkedList/ │ │ │ ├── DoublyLinkedList.cs │ │ │ └── DoublyLinkedListNode.cs │ │ ├── SinglyLinkedList/ │ │ │ ├── SinglyLinkedList.cs │ │ │ └── SinglyLinkedListNode.cs │ │ └── SkipList/ │ │ ├── SkipList.cs │ │ └── SkipListNode.cs │ ├── Probabilistic/ │ │ ├── BloomFilter.cs │ │ ├── CountMinSketch.cs │ │ └── HyperLogLog.cs │ ├── Queue/ │ │ ├── ArrayBasedQueue.cs │ │ ├── ListBasedQueue.cs │ │ └── StackBasedQueue.cs │ ├── RedBlackTree/ │ │ ├── RedBlackTree.cs │ │ └── RedBlackTreeNode.cs │ ├── ScapegoatTree/ │ │ ├── Extensions.cs │ │ ├── Node.cs │ │ └── ScapegoatTree.cs │ ├── SegmentTrees/ │ │ ├── SegmentTree.cs │ │ ├── SegmentTreeApply.cs │ │ └── SegmentTreeUpdate.cs │ ├── SortedList.cs │ ├── Stack/ │ │ ├── ArrayBasedStack.cs │ │ ├── ListBasedStack.cs │ │ └── QueueBasedStack.cs │ ├── Timeline.cs │ ├── Tries/ │ │ ├── Trie.cs │ │ └── TrieNode.cs │ └── UnrolledList/ │ ├── UnrolledLinkedList.cs │ └── UnrolledLinkedListNode.cs ├── DataStructures.Tests/ │ ├── AATreeTests.cs │ ├── AVLTreeTests.cs │ ├── BTreeTests.cs │ ├── BagTests.cs │ ├── BinarySearchTreeTests.cs │ ├── BitArrayTests.cs │ ├── Cache/ │ │ ├── LfuCacheTests.cs │ │ └── LruCacheTests.cs │ ├── DataStructures.Tests.csproj │ ├── Deque/ │ │ └── DequeTests.cs │ ├── DisjointSet/ │ │ └── DisjointSetTests.cs │ ├── Fenwick/ │ │ └── BinaryIndexedTreeTests.cs │ ├── GlobalUsings.cs │ ├── Graph/ │ │ └── DirectedWeightedGraphTests.cs │ ├── Hashing/ │ │ ├── HashTableTests.cs │ │ └── NumberTheory/ │ │ └── PrimeNumberTests.cs │ ├── Heap/ │ │ ├── BinaryHeapTests.cs │ │ ├── FibonacciHeaps/ │ │ │ └── FibonacciHeapTests.cs │ │ ├── MinMaxHeapTests.cs │ │ └── PairingHeap/ │ │ ├── PairingHeapComparerTests.cs │ │ └── PairingHeapTests.cs │ ├── InvertedIndexTests.cs │ ├── LinkedList/ │ │ ├── CircularLinkedListTests.cs │ │ ├── DoublyLinkedListTests.cs │ │ ├── LinkedListTests.cs │ │ └── SkipListTests.cs │ ├── Probabilistic/ │ │ ├── BloomFilterTests.cs │ │ ├── CountMinSketchTests.cs │ │ └── HyperLogLogTest.cs │ ├── Queue/ │ │ ├── ArrayBasedQueueTests.cs │ │ ├── ListBasedQueueTests.cs │ │ └── StackBasedQueueTests.cs │ ├── RedBlackTreeTests.cs │ ├── ScapegoatTree/ │ │ ├── ExtensionsTests.cs │ │ ├── ScapegoatTreeNodeTests.cs │ │ └── ScapegoatTreeTests.cs │ ├── SegmentTrees/ │ │ ├── SegmentTreeApplyTests.cs │ │ ├── SegmentTreeTests.cs │ │ └── SegmentTreeUpdateTest.cs │ ├── SortedListTests.cs │ ├── Stack/ │ │ ├── ArrayBasedStackTests.cs │ │ ├── ListBasedStackTests.cs │ │ └── QueueBasedStackTests.cs │ ├── TimelineTests.cs │ ├── Tries/ │ │ └── TrieTests.cs │ └── UnrolledList/ │ ├── UnrolledLinkedListNodeTests.cs │ └── UnrolledLinkedListTests.cs ├── LICENSE ├── README.md ├── Utilities/ │ ├── Exceptions/ │ │ └── ItemNotFoundException.cs │ ├── Extensions/ │ │ ├── DictionaryExtensions.cs │ │ ├── MatrixExtensions.cs │ │ ├── RandomExtensions.cs │ │ └── VectorExtensions.cs │ ├── GlobalUsings.cs │ └── Utilities.csproj ├── Utilities.Tests/ │ ├── Extensions/ │ │ ├── DictionaryExtensionsTests.cs │ │ ├── MatrixExtensionsTests.cs │ │ ├── RandomExtensionsTests.cs │ │ └── VectorExtensionsTests.cs │ ├── GlobalUsings.cs │ └── Utilities.Tests.csproj ├── stylecop.json └── stylecop.ruleset