static void Algorithm() { var maxS = myValues[4]; double max = myKeys[4]; int N = 10; for (int i = 0; i < N; i++) { Console.WriteLine($"Step # {i + 1}, current max = {max}, current maxS = {General.BitSetAsString (maxS)}"); var aNeighborhood = FindNeighborhood(max); PrintNeighborhood(aNeighborhood); if (aNeighborhood.Count != 0) { var aMax = aNeighborhood.Max(); Console.WriteLine($"The best code in neighborhood: {aMax}"); if (aMax > max) { maxS = myValues [myKeys.IndexOf(aMax)]; max = aMax; Console.WriteLine($"New maximum: {max}"); } else { break; } } Console.Write(Environment.NewLine); } Console.WriteLine($"max : {max}"); Console.WriteLine($"maxS : {General.BitSetAsString (maxS)}"); }