Skip to content

A set of C# source generators to build an agent for your Advent of Code solutions - an application that downloads inputs and submits answers

License

Notifications You must be signed in to change notification settings

mazharenko/aoc-agent

Repository files navigation

Nuget package License: MIT Wiki

Open in Dev Containers

Advent of Code Agent

A set of C# source generators to build an agent for your Advent of Code solutions — an application that downloads inputs and submits answers.

What it Does

  1. Identifies days that have not been solved yet.
  2. Checks if a day's solution meets the specified examples.
  3. Downloads input, performs calculations, and submits the answers.
  4. Informs you when your answer was rejected.
  5. If the previous answer was given too recently, waits the necessary duration and resubmits.
  6. Generates NUnit tests for the implemented solutions.
  7. Caches everything so that does not hurt AoC servers much and you don't get penalties for submitting the same incorrect answers.

What is Does Not

  1. Does not parse the input for you.
  2. Does not include specialized algorithms (e.g., BFS, LCM, OCR) that are typical for AoC.

Quick start

  1. Create an empty console project and add the Agent package to it

    dotnet new console -n aoc
    dotnet add aoc package mazharenko.AocAgent
  2. Remove the default Program.cs file

  3. Define a single year class anywhere in the project named like YearXXXX with the [GenerateEntryPoint] attribute. Don't forget the partial keyword.

    [GenerateEntryPoint]
    public partial class Year2022;
  4. Define day classes named like DayXX. Don't forget the partial keyword. Provide examples and implementation.

    partial class Day01
    {
        internal partial class Part1
        {
            private readonly Example example1 = new("input", "expectation");
            private readonly Example example2 = new("input", "expectation");
        
            public string Solve(string input)
            {
                return "expectation";
            }
        }
        internal partial class Part2 { ... }
    }
  5. When run for the first time, it requests the session cookie value from https://adventofcode.com/

    session1.mp4
  6. Run the program. If the implementation is correct, you will earn an Advent of Code star.

    It works best with dotnet watch. With it, if any issues with the implementation are detected, it will automatically restart after code changes.

    demo1.mp4

Note

More info is provided in the docs

Repository Templates

aoc-agent-template and aoc-agent-template-multipleyears are prepared repository templates with all required references and 25 day drafts. The latter assumes that the repository will contain solutions for several years.

About

A set of C# source generators to build an agent for your Advent of Code solutions - an application that downloads inputs and submits answers

Topics

Resources

License

Stars

Watchers

Forks

Contributors 2

  •  
  •