Skip to content
/ AoC2024 Public

Advent of code runner with source generators for Benchmarks/GUI

Notifications You must be signed in to change notification settings

Tvde1/AoC2024

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

15 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

AoC2024

screenshot

Advent of code runner with support for:

  • Console
  • Benchmarking

Powered by source generators!

It is a rebuild from a more complex set up of my previous AoC runner. Some features as being able to run all days at once, or choosing which day to run are not copied over yet.

Running it yourself

If you want to use this tool for yourself you can fork this repository and delete all the puzzles in the year's folder.

To create a puzzle:

  • Create a new class in the Puzzles namespace
  • Implement the IPuzzle interface with one or two generic parameters.
  • Add the [Puzzle(2024, 1)] attribute to the class with the year and day number.
  • Add the puzzle input in the Inputs folder with the name DayXX.txt.
[Puzzle(2024, 1)]
public class ThatOneFunnyDay : IPuzzle<int, string>
{
    public int Part1(ReadOnlySpan<char> input)
    {
        return 1234;
    }

    public int Part2(ReadOnlySpan<char> input)
    {
        return "Hello, World!";
    }
}

The generic parameters of the IPuzzle interface are for the return types of the two parts of the day. It is also possible to specify only one value for both parts.

This generic parameter is added because most days only require you to return a number. In that case we want to benchmark the puzzle without allocating a string.

Source Generators

The source generator is used to create benchmarks as well as embedding the puzzle input in the compiled source.

About

Advent of code runner with source generators for Benchmarks/GUI

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages