AI prompts
base on :christmas_tree: Advent of Code (2015-2023) in C# # Advent of Code (2015-2023)
C# solutions to the [Advent of Code](https://adventofcode.com) problems.
<a href="https://adventofcode.com"><img src="2023/calendar.svg" width="80%" /></a>
This project is best used as a template for your own AoC repository and a guide in solving
the puzzles. I put a lot of effort into my solutions. I aim for clarity which means that
they are not super effective or super short, but hopefully more readable.
Due to copyright requirements I'm not allowed to include my input files within this repository
so you cannot just clone it and run. However I wanted to have a self contained documentary
for myself that I can later refactor, so I decided to commit the encrypted version of the
input files. It doesn't violate the copyright since it's just random garbage for everyone else
but when I check it out, a plugin called `git-crypt` decrypts all my inputs transparently,
so I can work with them freely. On commit the whole process is reversed and the files get
encrypted again.
## Dependencies
- This project is based on `.NET 8` and `C# 12`.
- `AngleSharp` is used for problem download.
## Use it as a solution template:
1. Install .NET Core
2. Clone the repo
3. Remove all solution folders
```
> cd repo-dir
> rm -fr 20*
```
4. Install and initialize git-crypt:
```
> brew install git-crypt
> cd repo-dir
> git-crypt init
> git-crypt export-key ~/aoc-crypt.key
```
5. Don't commit `aoc-crypt.key` into a public repo, back it up in some protected place.
If you need to clone your repo later you will need to unlock it using this key such as:
```
> git clone ...
> cd repo-dir
> git-crypt unlock ~/aoc-crypt.key
```
6. Get help with `dotnet run` and start coding.
```
Usage: dotnet run [arguments]
1) To run the solutions and admire your advent calendar:
[year]/[day|all] Solve the specified problems
today Shortcut to the above
[year] Solve the whole year
all Solve everything
calendars Show the calendars
2) To start working on new problems:
login to https://adventofcode.com, then copy your session cookie, and export
it in your console like this
export SESSION=73a37e9a72a...
then run the app with
update [year]/[day] Prepares a folder for the given day, updates the input,
the readme and creates a solution template.
update today Shortcut to the above.
3) To upload your answer:
set up your SESSION variable as above.
upload [year]/[day] Upload the answer for the selected year and day.
upload today Shortcut to the above.
4) Don't forget to tip the maintainer https://github.com/sponsors/encse.
```
## Working in Visual Studio Code
If you prefer, you can work directly in VSCode as well.
Open the command Palette (⇧ ⌘ P), select `Tasks: Run Task` then e.g. `update today`.
Work on part 1. Check the solution with the `upload today` task. Continue with part 2.
**Note:** this feature relies on the "Memento Inputs" extension to store your session cookie, you need
to set it up in advance from the Command Palette with `Install Extensions`.
## How can I help?
If you find this useful, please [support](https://github.com/sponsors/encse) me.
", Assign "at most 3 tags" to the expected json: {"id":"5597","tags":[]} "only from the tags list I provide: [{"id":77,"name":"3d"},{"id":89,"name":"agent"},{"id":17,"name":"ai"},{"id":54,"name":"algorithm"},{"id":24,"name":"api"},{"id":44,"name":"authentication"},{"id":3,"name":"aws"},{"id":27,"name":"backend"},{"id":60,"name":"benchmark"},{"id":72,"name":"best-practices"},{"id":39,"name":"bitcoin"},{"id":37,"name":"blockchain"},{"id":1,"name":"blog"},{"id":45,"name":"bundler"},{"id":58,"name":"cache"},{"id":21,"name":"chat"},{"id":49,"name":"cicd"},{"id":4,"name":"cli"},{"id":64,"name":"cloud-native"},{"id":48,"name":"cms"},{"id":61,"name":"compiler"},{"id":68,"name":"containerization"},{"id":92,"name":"crm"},{"id":34,"name":"data"},{"id":47,"name":"database"},{"id":8,"name":"declarative-gui "},{"id":9,"name":"deploy-tool"},{"id":53,"name":"desktop-app"},{"id":6,"name":"dev-exp-lib"},{"id":59,"name":"dev-tool"},{"id":13,"name":"ecommerce"},{"id":26,"name":"editor"},{"id":66,"name":"emulator"},{"id":62,"name":"filesystem"},{"id":80,"name":"finance"},{"id":15,"name":"firmware"},{"id":73,"name":"for-fun"},{"id":2,"name":"framework"},{"id":11,"name":"frontend"},{"id":22,"name":"game"},{"id":81,"name":"game-engine "},{"id":23,"name":"graphql"},{"id":84,"name":"gui"},{"id":91,"name":"http"},{"id":5,"name":"http-client"},{"id":51,"name":"iac"},{"id":30,"name":"ide"},{"id":78,"name":"iot"},{"id":40,"name":"json"},{"id":83,"name":"julian"},{"id":38,"name":"k8s"},{"id":31,"name":"language"},{"id":10,"name":"learning-resource"},{"id":33,"name":"lib"},{"id":41,"name":"linter"},{"id":28,"name":"lms"},{"id":16,"name":"logging"},{"id":76,"name":"low-code"},{"id":90,"name":"message-queue"},{"id":42,"name":"mobile-app"},{"id":18,"name":"monitoring"},{"id":36,"name":"networking"},{"id":7,"name":"node-version"},{"id":55,"name":"nosql"},{"id":57,"name":"observability"},{"id":46,"name":"orm"},{"id":52,"name":"os"},{"id":14,"name":"parser"},{"id":74,"name":"react"},{"id":82,"name":"real-time"},{"id":56,"name":"robot"},{"id":65,"name":"runtime"},{"id":32,"name":"sdk"},{"id":71,"name":"search"},{"id":63,"name":"secrets"},{"id":25,"name":"security"},{"id":85,"name":"server"},{"id":86,"name":"serverless"},{"id":70,"name":"storage"},{"id":75,"name":"system-design"},{"id":79,"name":"terminal"},{"id":29,"name":"testing"},{"id":12,"name":"ui"},{"id":50,"name":"ux"},{"id":88,"name":"video"},{"id":20,"name":"web-app"},{"id":35,"name":"web-server"},{"id":43,"name":"webassembly"},{"id":69,"name":"workflow"},{"id":87,"name":"yaml"}]" returns me the "expected json"