From 21c4fbb2d13ab81ce24a020efaa9e69d8b02f2bc Mon Sep 17 00:00:00 2001
From: LE COURTOIS Sylvain
Date: Mon, 14 Aug 2023 23:19:08 +0200
Subject: [PATCH] sudoku
---
AdventOfCode2022/Puzzles/Sudoku.cs | 5 +-
.../Pages/DefaultPuzzleView.razor | 1 -
AdventOfCode2022web/Pages/Index.razor | 1 +
AdventOfCode2022web/Pages/Puzzle.razor | 6 +-
AdventOfCode2022web/Pages/SudokuView.razor | 76 +++++++++++++++++++
AdventOfCode2022web/Shared/NavMenu.razor | 2 +
6 files changed, 85 insertions(+), 6 deletions(-)
create mode 100644 AdventOfCode2022web/Pages/SudokuView.razor
diff --git a/AdventOfCode2022/Puzzles/Sudoku.cs b/AdventOfCode2022/Puzzles/Sudoku.cs
index f5585c72..f51ad5a9 100644
--- a/AdventOfCode2022/Puzzles/Sudoku.cs
+++ b/AdventOfCode2022/Puzzles/Sudoku.cs
@@ -11,7 +11,7 @@ public void Setup(string input)
PuzzleState = _puzzleInput;
}
- private string Entropy(int position)
+ public string Entropy(int position)
{
var res = new HashSet();
var (col, row) = (position % 9, position / 9);
@@ -41,7 +41,10 @@ public IEnumerable SolveFirstPart()
var slotsWithMinimalEntropy = emptySlots.Select(x => (p: x, e: Entropy(x))).OrderBy(x => x.e.Length).ThenBy(x => x.p).ToArray();
var slot = slotsWithMinimalEntropy[0];
if (slot.e == string.Empty)
+ {
+ yield return FormatPuzzleState();
continue;
+ }
var sb = new StringBuilder(PuzzleState);
for (var i = 0; iYes it is possible to create a Web SPA application in C#, thanks to WebAssembly !
Here you will find my solutions to Advent of Code 2022 puzzles.
Some puzzles require a lot of computing power and it's not very compatible with the use of a web browser.
+Day 27 is a Sudoku Solver, with no relation with Advent of Code !
diff --git a/AdventOfCode2022web/Pages/Puzzle.razor b/AdventOfCode2022web/Pages/Puzzle.razor
index 1cc0e5c5..b6d1eaa9 100644
--- a/AdventOfCode2022web/Pages/Puzzle.razor
+++ b/AdventOfCode2022web/Pages/Puzzle.razor
@@ -11,13 +11,13 @@
-
+
-
+
@@ -30,8 +30,6 @@
private string? Input;
private string? Output1;
private string? Output2;
- private bool IsTask1Running;
- private bool IsTask2Running;
protected override async Task OnParametersSetAsync()
{
var puzzle = puzzleHelper.Puzzles[PuzzleNumber];
diff --git a/AdventOfCode2022web/Pages/SudokuView.razor b/AdventOfCode2022web/Pages/SudokuView.razor
new file mode 100644
index 00000000..be280cd7
--- /dev/null
+++ b/AdventOfCode2022web/Pages/SudokuView.razor
@@ -0,0 +1,76 @@
+@page "/SudokuView/{PuzzleNumber:int}"
+@inject PuzzleHelper puzzleHelper;
+@inject HttpClient Http
+
+
+ This is a Sudoku solver, and it has really no relation with Advent Of Code !
+
+
+
+
+
+
+@code {
+ [Parameter]
+ public int PuzzleNumber { get; set; }
+ private string? _input { get; set; }
+ private Sudoku? _solver;
+ public void UpdateView(int animationDuration) => StateHasChanged();
+
+ protected override async Task OnInitializedAsync()
+ {
+ var puzzle = puzzleHelper.Puzzles[PuzzleNumber];
+ _solver = new Sudoku();
+ _input = (await Http.GetStringAsync($"sample-data/{puzzle.Type.Name}.txt")).Replace("\r", "");
+ _solver.Setup(_input);
+ }
+}
diff --git a/AdventOfCode2022web/Shared/NavMenu.razor b/AdventOfCode2022web/Shared/NavMenu.razor
index d4b27c23..9b406905 100644
--- a/AdventOfCode2022web/Shared/NavMenu.razor
+++ b/AdventOfCode2022web/Shared/NavMenu.razor
@@ -36,6 +36,8 @@
pageName = $"BlizzardBasinView/{item.Number}";
if (item.Type == typeof(UnstableDiffusion))
pageName = "UnstableDiffusionView";
+ if (item.Type == typeof(Sudoku))
+ pageName = $"SudokuView/{item.Number}";