private static void CodeBreaker() { var builder = Rules.CreateSolutionBuilder(); int breakerAttemptsCount = 0; while (true) { ReadOnlyMemory <CodeColor> guess = InputCode($"Input guess #{++breakerAttemptsCount}: "); Response response = InputResponse(); builder.AddResponse(guess, response); SolutionBuilder <CodeColor> .SolutionsAnalysis analysis = builder.AnalyzeSolutions(CancellationToken.None); analysis.ApplyAnalysisBackToBuilder(); if (analysis.ViableSolutionsFound == 1) { Console.WriteLine("Solution found!"); break; } Console.WriteLine($"{analysis.ViableSolutionsFound} solutions remaining."); PrintProbabilities(analysis); PrintSuggestedGuess(builder, CancellationToken.None); } }