From b44ec3179b4954b414d7e0e522aa6abb93b42550 Mon Sep 17 00:00:00 2001 From: Jason Wright Date: Sun, 4 Jan 2026 20:13:42 -0700 Subject: [PATCH 1/2] correct the unstructured search classical solver --- .../Solvers/UnstructuredSearchSolver.cs | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/Problems/NPComplete/NPC_UNSTRUCTUREDSEARCH/Solvers/UnstructuredSearchSolver.cs b/Problems/NPComplete/NPC_UNSTRUCTUREDSEARCH/Solvers/UnstructuredSearchSolver.cs index 8326008..b04426a 100644 --- a/Problems/NPComplete/NPC_UNSTRUCTUREDSEARCH/Solvers/UnstructuredSearchSolver.cs +++ b/Problems/NPComplete/NPC_UNSTRUCTUREDSEARCH/Solvers/UnstructuredSearchSolver.cs @@ -15,12 +15,7 @@ public UnstructuredSearchSolver() {} public string solve(UNSTRUCTUREDSEARCH problem){ // For a classical solution, we just need to loop over the values and // find the first non-zero value. - foreach (var bit in problem.funcValues) - { - Console.WriteLine($"boop={bit}"); - } - - for (int i = 0; i < problem.funcValues[i]; i++) + for (int i = 0; i < problem.funcValues.Count; i++) { if (problem.funcValues[i] != 0) return Convert.ToString(i); From c45bd558d4421a98b95df4424143a273b6d027ca Mon Sep 17 00:00:00 2001 From: Jason Wright Date: Sun, 4 Jan 2026 20:14:16 -0700 Subject: [PATCH 2/2] unittests for unstructured search --- .../UNSTRUCTUREDSEARCH_Tests.cs | 52 +++++++++++++++++++ 1 file changed, 52 insertions(+) create mode 100644 redux-tests/Problems/NPC_UNSTRUCTUREDSEARCH/UNSTRUCTUREDSEARCH_Tests.cs diff --git a/redux-tests/Problems/NPC_UNSTRUCTUREDSEARCH/UNSTRUCTUREDSEARCH_Tests.cs b/redux-tests/Problems/NPC_UNSTRUCTUREDSEARCH/UNSTRUCTUREDSEARCH_Tests.cs new file mode 100644 index 0000000..a9b4f75 --- /dev/null +++ b/redux-tests/Problems/NPC_UNSTRUCTUREDSEARCH/UNSTRUCTUREDSEARCH_Tests.cs @@ -0,0 +1,52 @@ +using Xunit; +using API.Problems.NPComplete.NPC_UNSTRUCTUREDSEARCH; +using API.Problems.NPComplete.NPC_UNSTRUCTUREDSEARCH.Solvers; + +namespace redux_tests; +#pragma warning disable CS1591 + +public class UNSTRUCTUREDSEARCH_tests { + [Fact] + public void DEUTSCH_Default_Instantiation() + { + var problem = new UNSTRUCTUREDSEARCH(); + Assert.Equal("(0, 1, 0, 0)", problem.instance); + Assert.Equal("(0, 1, 0, 0)", problem.defaultInstance); + } + + [Fact] + public void DEUTSCH_Custom_Instantiation() { + string instance = "(0, 0, 0, 1)"; + var problem = new UNSTRUCTUREDSEARCH(instance); + Assert.Equal(instance, problem.instance); + } + + [Theory] //tests verifier + [InlineData("(1,0,0,0)", 0, true)] + [InlineData("(1,0,0,0)", 1, false)] + [InlineData("(1,0,0,0)", 2, false)] + [InlineData("(1,0,0,0)", 3, false)] + [InlineData("(0,1,0,0)", 1, true)] + [InlineData("(0,0,1,0)", 2, true)] + [InlineData("(0,0,0,1)", 3, true)] + public void DEUTSCH_verifier(string instance, int certificate, bool expected) { + var problem = new UNSTRUCTUREDSEARCH(instance); + var verifier = problem.defaultVerifier; + bool result = verifier.verify(problem, certificate.ToString()); + Assert.Equal(expected, result); + + } + + [Theory] //tests solver + [InlineData("(1,0,0,0)", 0)] + [InlineData("(0,1,0,0)", 1)] + [InlineData("(0,0,1,0)", 2)] + [InlineData("(0,0,0,1)", 3)] + public void UNSTRUCTUREDSEARCH_solver(string instance, int certificate) + { + var problem = new UNSTRUCTUREDSEARCH(instance); + var solver = new UnstructuredSearchSolver(); + string solvedString = solver.solve(problem); + Assert.Equal($"{certificate}", solvedString); + } +} \ No newline at end of file