diff --git a/ProjectEuler.Tests/Problems/001-100/51-60/Problem051Tests.cs b/ProjectEuler.Tests/Problems/001-100/51-60/Problem051Tests.cs index 757b20b..7e75bdd 100644 --- a/ProjectEuler.Tests/Problems/001-100/51-60/Problem051Tests.cs +++ b/ProjectEuler.Tests/Problems/001-100/51-60/Problem051Tests.cs @@ -28,7 +28,7 @@ public async Task Should_SolveExamples(string target, string expected) public async Task Should_GenerateWildcards_2Digits() { // Arrange - var prime = "13"; + const string prime = "13"; HashSet expected = ["*3", "1*", "**"]; // Act @@ -42,7 +42,7 @@ public async Task Should_GenerateWildcards_2Digits() public async Task Should_GenerateWildcards_3Digits() { // Arrange - var prime = "123"; + const string prime = "123"; HashSet expected = ["*23", "**3", "1*3", "*2*", "1**", "12*", "***"]; // Act diff --git a/ProjectEuler.Tests/Problems/001-100/91-100/Problem096Tests.cs b/ProjectEuler.Tests/Problems/001-100/91-100/Problem096Tests.cs index ea3c1b0..c5033db 100644 --- a/ProjectEuler.Tests/Problems/001-100/91-100/Problem096Tests.cs +++ b/ProjectEuler.Tests/Problems/001-100/91-100/Problem096Tests.cs @@ -24,7 +24,7 @@ public async Task Should_SolveWithInduction() public async Task Should_SolveSudoku1() { // Arrange - var unsolved = """ + const string unsolved = """ 003020600 900305001 001806400 @@ -45,7 +45,7 @@ public async Task Should_SolveSudoku1() await Assert.That(result).IsTrue(); var actual = sudoku.ToString(); - var solved = """ + const string solved = """ 483921657 967345821 251876493 @@ -64,7 +64,7 @@ public async Task Should_SolveSudoku1() public async Task Should_SolveSudoku2() { // Arrange - var unsolved = """ + const string unsolved = """ 200080300 060070084 030500209 @@ -84,7 +84,7 @@ public async Task Should_SolveSudoku2() // Assert var actual = sudoku.ToString(); - var solved = """ + const string solved = """ 245981376 169273584 837564219 diff --git a/ProjectEuler/Helpers/ArrayHelper.cs b/ProjectEuler/Helpers/ArrayHelper.cs index 16e1d1f..bef0e98 100644 --- a/ProjectEuler/Helpers/ArrayHelper.cs +++ b/ProjectEuler/Helpers/ArrayHelper.cs @@ -68,13 +68,11 @@ public static int[] GetDiagonal(this int[,] array, int n = 0) } var vector = new int[Math.Min(height - j, length - i)]; - var k = 0; - while (i < length && j < height) + for (var k = 0; i < length && j < height; k++) { vector[k] = array[j, i]; i++; j++; - k++; } return vector; @@ -108,13 +106,11 @@ public static int[] GetReverseDiagonal(this int[,] array, int n = 0) } var vector = new int[Math.Min(heigth - j, i + 1)]; - var k = 0; - while (i >= 0 && j < heigth) + for (var k = 0; i >= 0 && j < heigth; k++) { vector[k] = array[j, i]; i--; j++; - k++; } return vector; diff --git a/ProjectEuler/Problems/001-100/11-20/Problem012.cs b/ProjectEuler/Problems/001-100/11-20/Problem012.cs index 0bfaaee..2cd54f3 100644 --- a/ProjectEuler/Problems/001-100/11-20/Problem012.cs +++ b/ProjectEuler/Problems/001-100/11-20/Problem012.cs @@ -23,13 +23,8 @@ public Task CalculateAsync(string[] args) { long i = 1; var sum = i; - while (true) + while (sum.Divisors().Count() <= 500) { - if (sum.Divisors().Count() > 500) - { - break; - } - i++; sum += i; } diff --git a/ProjectEuler/Problems/001-100/11-20/Problem013.cs b/ProjectEuler/Problems/001-100/11-20/Problem013.cs index d409176..6dea42b 100644 --- a/ProjectEuler/Problems/001-100/11-20/Problem013.cs +++ b/ProjectEuler/Problems/001-100/11-20/Problem013.cs @@ -114,8 +114,7 @@ public Task CalculateAsync(string[] args) var numbers = input.Split(Environment.NewLine); var sumOfFirstTenDigits = numbers .Select(x => x[..11]) - .Select(long.Parse) - .Sum(); + .Sum(long.Parse); var firstTenDigits = sumOfFirstTenDigits.ToString()[..10]; return Task.FromResult(firstTenDigits); diff --git a/ProjectEuler/Problems/001-100/11-20/Problem017.cs b/ProjectEuler/Problems/001-100/11-20/Problem017.cs index 74e7f1e..00bee6b 100644 --- a/ProjectEuler/Problems/001-100/11-20/Problem017.cs +++ b/ProjectEuler/Problems/001-100/11-20/Problem017.cs @@ -11,7 +11,7 @@ public class Problem017 : IProblem public Task CalculateAsync(string[] args) { var names = Enumerable.Range(1, 1000).Select(PrintNumber); - var sum = names.Select(x => x.Replace(" ", string.Empty).Replace("-", string.Empty).Length).Sum(); + var sum = names.Sum(x => x.Replace(" ", string.Empty).Replace("-", string.Empty).Length); return Task.FromResult(sum.ToString()); } diff --git a/ProjectEuler/Problems/001-100/11-20/Problem018.cs b/ProjectEuler/Problems/001-100/11-20/Problem018.cs index eefeae7..4ada73f 100644 --- a/ProjectEuler/Problems/001-100/11-20/Problem018.cs +++ b/ProjectEuler/Problems/001-100/11-20/Problem018.cs @@ -52,7 +52,7 @@ public async Task CalculateAsync(string[] args) var target = vertices[^1].MinBy(x => dist[x])!; var path = Dijkstra.RecreatePath(prev, target).Reverse(); - var distance = path.Select(x => 100 - x.Value).Sum(); + var distance = path.Sum(x => 100 - x.Value); return distance.ToString(); } diff --git a/ProjectEuler/Problems/001-100/31-40/Problem036.cs b/ProjectEuler/Problems/001-100/31-40/Problem036.cs index 3f8d718..b30ee8a 100644 --- a/ProjectEuler/Problems/001-100/31-40/Problem036.cs +++ b/ProjectEuler/Problems/001-100/31-40/Problem036.cs @@ -13,8 +13,7 @@ public Task CalculateAsync(string[] args) { var sum = Enumerable.Range(1, 999_999) .Where(x => x.IsPalindrome() && Convert.ToString(x, 2).IsPalindrome()) - .Select(x => (long)x) - .Sum(); + .Sum(x => (long)x); return Task.FromResult(sum.ToString()); } diff --git a/ProjectEuler/Problems/001-100/41-50/Problem042.cs b/ProjectEuler/Problems/001-100/41-50/Problem042.cs index cec6f10..92e0e51 100644 --- a/ProjectEuler/Problems/001-100/41-50/Problem042.cs +++ b/ProjectEuler/Problems/001-100/41-50/Problem042.cs @@ -19,6 +19,6 @@ public async Task CalculateAsync(string[] args) private static int CalculateAlphabeticalSumUppercase(string word) { - return word.Select(c => c.ToAlphabeticalPositionUppercase()).Sum(); + return word.Sum(c => c.ToAlphabeticalPositionUppercase()); } } diff --git a/ProjectEuler/Problems/001-100/41-50/Problem043.cs b/ProjectEuler/Problems/001-100/41-50/Problem043.cs index 2a1fe15..9af7c3c 100644 --- a/ProjectEuler/Problems/001-100/41-50/Problem043.cs +++ b/ProjectEuler/Problems/001-100/41-50/Problem043.cs @@ -26,8 +26,7 @@ public Task CalculateAsync(string[] args) .ToList() .GetPermutations() .Where(HasThisProperty) - .Select(x => x.ToNumberFromDigits()) - .Sum(); + .Sum(x => x.ToNumberFromDigits()); return Task.FromResult(sum.ToString()); } diff --git a/ProjectEuler/Problems/001-100/51-60/Problem059.cs b/ProjectEuler/Problems/001-100/51-60/Problem059.cs index 6aa2fb1..14d4df4 100644 --- a/ProjectEuler/Problems/001-100/51-60/Problem059.cs +++ b/ProjectEuler/Problems/001-100/51-60/Problem059.cs @@ -37,12 +37,12 @@ public async Task CalculateAsync(string[] args) this.logger.LogInformation("The password is '{Password}'", password); - return text.Select(x => (int)x).Sum().ToString(); + return text.Sum(x => x).ToString(); } private static IEnumerable PossiblePasswords() { - var alphabet = StringHelper.AlphabetLowercase; + const string alphabet = StringHelper.AlphabetLowercase; foreach (var i in alphabet) { foreach (var j in alphabet) diff --git a/ProjectEuler/Problems/001-100/71-80/Problem073.cs b/ProjectEuler/Problems/001-100/71-80/Problem073.cs index 716e773..1f6a85f 100644 --- a/ProjectEuler/Problems/001-100/71-80/Problem073.cs +++ b/ProjectEuler/Problems/001-100/71-80/Problem073.cs @@ -18,7 +18,7 @@ public Task CalculateAsync(string[] args) // Use Farey Sequence for (var denominator = 3; denominator <= size; denominator++) { - for (var numerator = denominator / 3 + 1; numerator <= denominator / 2; numerator++) + for (var numerator = (denominator / 3) + 1; numerator <= denominator / 2; numerator++) { if (NumberHelper.GCD(numerator, denominator) == 1) { diff --git a/ProjectEuler/Problems/001-100/71-80/Problem075.cs b/ProjectEuler/Problems/001-100/71-80/Problem075.cs index 2c0e494..dee4156 100644 --- a/ProjectEuler/Problems/001-100/71-80/Problem075.cs +++ b/ProjectEuler/Problems/001-100/71-80/Problem075.cs @@ -58,9 +58,9 @@ public Task CalculateAsync(string[] args) private static int CalculateRightTrianglePerimeter(int m, int n) { // Euclid's formula - var a = m * m - n * n; + var a = (m * m) - (n * n); var b = 2 * m * n; - var c = m * m + n * n; + var c = (m * m) + (n * n); return a + b + c; } diff --git a/ProjectEuler/Problems/001-100/71-80/Problem078.cs b/ProjectEuler/Problems/001-100/71-80/Problem078.cs index d06e573..498cec0 100644 --- a/ProjectEuler/Problems/001-100/71-80/Problem078.cs +++ b/ProjectEuler/Problems/001-100/71-80/Problem078.cs @@ -19,7 +19,7 @@ public Task CalculateAsync(string[] args) { var sign = int.IsEvenInteger(k) ? -1 : 1; - var g = k * (3 * k - 1) / 2; + var g = k * ((3 * k) - 1) / 2; if (g > n) { @@ -28,7 +28,7 @@ public Task CalculateAsync(string[] args) sum += sign * this.p[n - g]; - g = k * (3 * k + 1) / 2; + g = k * ((3 * k) + 1) / 2; if (g > n) { diff --git a/ProjectEuler/Problems/001-100/71-80/Problem079.cs b/ProjectEuler/Problems/001-100/71-80/Problem079.cs index 7a0c781..9cb7de1 100644 --- a/ProjectEuler/Problems/001-100/71-80/Problem079.cs +++ b/ProjectEuler/Problems/001-100/71-80/Problem079.cs @@ -11,7 +11,7 @@ public async Task CalculateAsync(string[] args) var textFile = await File.ReadAllTextAsync("Problems/001-100/71-80/Problem079_keylog.txt"); var entries = textFile.Split("\n", StringSplitOptions.RemoveEmptyEntries); var digits = entries.SelectMany(x => x).Distinct(); - var values = digits.ToDictionary(x => x, x => (int?)null); + var values = digits.ToDictionary(x => x, _ => (int?)null); foreach (var entry in entries) { var pairs = entry.Zip(entry.Skip(1)); diff --git a/ProjectEuler/Problems/001-100/81-90/Problem083.cs b/ProjectEuler/Problems/001-100/81-90/Problem083.cs index 656b75b..c2f08b6 100644 --- a/ProjectEuler/Problems/001-100/81-90/Problem083.cs +++ b/ProjectEuler/Problems/001-100/81-90/Problem083.cs @@ -8,7 +8,7 @@ public class Problem083 : IProblem { public async Task CalculateAsync(string[] args) { - var size = 80; + const int size = 80; var lines = await File.ReadAllLinesAsync("Problems/001-100/81-90/p083_matrix.txt"); var graph = new List(); diff --git a/ProjectEuler/Problems/001-100/91-100/Problem091.cs b/ProjectEuler/Problems/001-100/91-100/Problem091.cs index 7825ae6..0a6c1af 100644 --- a/ProjectEuler/Problems/001-100/91-100/Problem091.cs +++ b/ProjectEuler/Problems/001-100/91-100/Problem091.cs @@ -38,9 +38,9 @@ public Task CalculateAsync(string[] args) // Calculate the lengths of the sides of the triangle // Skip square root (they will be squared later) - var a = y1 * y1 + x1 * x1; // simplified from zero - var b = y2 * y2 + x2 * x2; // simplified from zero - var c = (y2 - y1) * (y2 - y1) + (x2 - x1) * (x2 - x1); + var a = (y1 * y1) + (x1 * x1); // simplified from zero + var b = (y2 * y2) + (x2 * x2); // simplified from zero + var c = ((y2 - y1) * (y2 - y1)) + ((x2 - x1) * (x2 - x1)); // Ensure a <= b <= c if (a > b) diff --git a/ProjectEuler/Problems/001-100/91-100/Problem096.cs b/ProjectEuler/Problems/001-100/91-100/Problem096.cs index e0f8257..0b9b242 100644 --- a/ProjectEuler/Problems/001-100/91-100/Problem096.cs +++ b/ProjectEuler/Problems/001-100/91-100/Problem096.cs @@ -169,8 +169,8 @@ public bool TrySolve() { for (int j = 0; j < 3; j++) { - var row = i + sqRow * 3; - var col = j + sqCol * 3; + var row = i + (sqRow * 3); + var col = j + (sqCol * 3); var value = this.Sudoku.Grid[row][col]; if (value != 0) { @@ -271,8 +271,8 @@ private void CheckSinglePossibilitySquare() this.countsSquare.Clear(); for (int innerSqure = 0; innerSqure < 9; innerSqure++) { - var row = (square / 3) * 3 + innerSqure / 3; - var col = (square % 3) * 3 + innerSqure % 3; + var row = (square / 3 * 3) + (innerSqure / 3); + var col = (square % 3 * 3) + (innerSqure % 3); foreach (var possibleNumber in this.possibleNumbers[row][col]) { if (!this.countsSquare.TryAdd(possibleNumber, 1)) @@ -298,8 +298,8 @@ private void CheckSinglePossibilitySquare() for (int innerSqure = 0; innerSqure < 9; innerSqure++) { - var row = (square / 3) * 3 + innerSqure / 3; - var col = (square % 3) * 3 + innerSqure % 3; + var row = (square / 3 * 3) + (innerSqure / 3); + var col = (square % 3 * 3) + (innerSqure % 3); if (!this.possibleNumbers[row][col].Contains(found)) { continue; @@ -337,8 +337,8 @@ private void CellSolved(int number, int row, int col) var sqCol = col / 3; for (int cell = 0; cell < 9; cell++) { - var cellRow = sqRow * 3 + cell / 3; - var cellCol = sqCol * 3 + cell % 3; + var cellRow = (sqRow * 3) + (cell / 3); + var cellCol = (sqCol * 3) + (cell % 3); this.possibleNumbers[cellRow][cellCol].Remove(number); } } @@ -361,13 +361,13 @@ private void CheckSingleRow(bool[][] unavailable, int sqRow, int sqCol, int numb var (firstRow, firstCol) = this.taken[0]; if (this.taken.All(x => x.Row == firstRow)) { - var row = firstRow + sqRow * 3; + var row = firstRow + (sqRow * 3); this.inducedRows[row].TryAdd(number, (sqRow, sqCol)); } if (this.taken.All(x => x.Col == firstCol)) { - var col = firstCol + sqCol * 3; + var col = firstCol + (sqCol * 3); this.inducedColumns[col].TryAdd(number, (sqRow, sqCol)); } diff --git a/ProjectEuler/Problems/001-100/91-100/Problem097.cs b/ProjectEuler/Problems/001-100/91-100/Problem097.cs index 87378c4..84211d4 100644 --- a/ProjectEuler/Problems/001-100/91-100/Problem097.cs +++ b/ProjectEuler/Problems/001-100/91-100/Problem097.cs @@ -15,7 +15,7 @@ public Task CalculateAsync(string[] args) } x *= 28433; - x += 1; + x++; var last10digits = x.ToString()[^10..]; return Task.FromResult(last10digits); diff --git a/ProjectEuler/Problems/101-200/101-110/Problem107.cs b/ProjectEuler/Problems/101-200/101-110/Problem107.cs index 55e01f1..0a525d3 100644 --- a/ProjectEuler/Problems/101-200/101-110/Problem107.cs +++ b/ProjectEuler/Problems/101-200/101-110/Problem107.cs @@ -8,7 +8,7 @@ public class Problem107 : IProblem { public static int Solve(string[] lines) { - var vertices = lines.Select(x => new Kruskal.Vertex()).ToArray(); + var vertices = lines.Select(_ => new Kruskal.Vertex()).ToArray(); for (var i = 0; i < lines.Length; i++) { diff --git a/ProjectEuler/Problems/101-200/181-190/Problem186.cs b/ProjectEuler/Problems/101-200/181-190/Problem186.cs index 0f77817..e890c26 100644 --- a/ProjectEuler/Problems/101-200/181-190/Problem186.cs +++ b/ProjectEuler/Problems/101-200/181-190/Problem186.cs @@ -25,7 +25,7 @@ public Problem186() public Task CalculateAsync(string[] args) { var count = 0; - while (true) + do { var caller = this.lfg.Next(); var called = this.lfg.Next(); @@ -38,12 +38,8 @@ public Task CalculateAsync(string[] args) count++; this.network.Union(caller, called); - - if (this.network.GetSize(PMNumber) / (double)NetworkSize >= 0.99) - { - break; - } } + while (this.network.GetSize(PMNumber) / (double)NetworkSize < 0.99); return Task.FromResult(count.ToString()); } diff --git a/ProjectEuler/Program.cs b/ProjectEuler/Program.cs index d30034f..98eef02 100644 --- a/ProjectEuler/Program.cs +++ b/ProjectEuler/Program.cs @@ -18,7 +18,7 @@ { await Parallel.ForEachAsync( sp.GetServices(), - async (p, ct) => await ExecuteProblem(p)); + async (p, _) => await ExecuteProblem(p)); return; }