Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
43 changes: 43 additions & 0 deletions CLAUDE.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
# Advent of Code - C# Solutions

## Stack

- .NET 9.0, C# latest, Autofac DI
- NUnit 4.5 (test framework), NUnit3TestAdapter, Microsoft.NET.Test.Sdk, coverlet.collector

## Build & Test

```bash
dotnet build AdventOfCode.sln
dotnet test AdventOfCodeTests/AdventOfCodeTests.csproj
dotnet test --filter "FullyQualifiedName~Day5Tests" # run specific test class
dotnet run --project AdventOfCode 2024 15 # run specific day
```

## Architecture

- `IDay` interface: `Day`, `Year`, `Part1(string path)`, `Part2(string path)` — returns `string`
- `Framework/DayBase` abstract class reads file lines, delegates to `Part1(IEnumerable<string>)` / `Part2(IEnumerable<string>)`
- Each year has its own `DayBase` that sets `Year` (e.g., `Events/_2024/Days/DayBase.cs`)
- Autofac auto-discovers all `IDay` implementations via assembly scanning in `Program.cs`

## File Layout

| Item | Path |
|---|---|
| Solution class | `AdventOfCode/Events/{YEAR}/Days/Day{N}.cs` |
| Year DayBase | `AdventOfCode/Events/{YEAR}/Days/DayBase.cs` |
| Input files | `AdventOfCode/Events/{YEAR}/InputFiles/{N}.txt` |
| Test class | `AdventOfCodeTests/Events/{YEAR}/Days/Day{N}Tests.cs` |
| Test data | `AdventOfCodeTests/Events/{YEAR}/TestData/{N}.txt` |
| Common utils | `AdventOfCode/Common/` (Coordinate, Direction, Vector) |

## Conventions

- Namespaces: `AdventOfCode.Events._{YEAR}.Days` (underscore prefix for numeric year)
- Class names: `Day1`, `Day12` (no leading zeros)
- Test classes: `Day1Tests`, `Day12Tests` with `[TestFixture]` attribute
- Tests instantiate the day directly: `private readonly DayNN _systemUnderTest = new();`
- Test data files use letter suffixes for variants: `12a.txt`, `12b.txt`
- Input/test data files must be added to `.csproj` with `CopyToOutputDirectory: PreserveNewest`
- Both Part1 and Part2 return answers as `string`
Loading