{"id":18773484,"url":"https://github.com/errorstream/advent-of-code-2023","last_synced_at":"2025-06-24T06:06:14.862Z","repository":{"id":229267575,"uuid":"753127664","full_name":"errorStream/advent-of-code-2023","owner":"errorStream","description":"My solutions for Advent of Code 2023","archived":false,"fork":false,"pushed_at":"2024-02-05T14:24:00.000Z","size":69,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-05-21T02:11:20.318Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"C#","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/errorStream.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null}},"created_at":"2024-02-05T14:23:06.000Z","updated_at":"2024-02-05T14:24:04.000Z","dependencies_parsed_at":"2024-03-23T05:51:27.743Z","dependency_job_id":null,"html_url":"https://github.com/errorStream/advent-of-code-2023","commit_stats":null,"previous_names":["errorstream/advent-of-code-2023"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/errorStream/advent-of-code-2023","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/errorStream%2Fadvent-of-code-2023","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/errorStream%2Fadvent-of-code-2023/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/errorStream%2Fadvent-of-code-2023/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/errorStream%2Fadvent-of-code-2023/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/errorStream","download_url":"https://codeload.github.com/errorStream/advent-of-code-2023/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/errorStream%2Fadvent-of-code-2023/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":261618110,"owners_count":23185092,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-11-07T19:34:12.368Z","updated_at":"2025-06-24T06:06:14.841Z","avatar_url":"https://github.com/errorStream.png","language":"C#","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Advent of Code 2023\n*by ErrorStream*\n\nThese are my solutions for [Advent of Code\n2023](https://adventofcode.com/2023). Both parts for each day pass\nsuccessfully.\n\n## About Advent of Code\n\nAdvent of Code is a collection of 50 programming puzzles. They are\ndelivered as an advent calendar, where two puzzles are revealed each\nday. The first puzzle of each day has a low difficulty level and the\nsecond has a high difficulty level. Additionally, the puzzles tend to\nbecome more difficult as the month progresses. Each puzzle adheres to\nthe following form;\n\n- **An input text file is provided.** This text file contains data\n  which must undergo some processing specified by the problem.  This\n  text file is unique for each participant in the Advent of Code. The\n  first and second problem for each day share the same input text\n  file.\n- **A number answer is expected.** This number is the result of\n  performing the required processing on the input file content. You\n  are able to represent every solution with a 64-bit integer. As the\n  input data is unique to each participant for each problem, the\n  answer is also unique to each participant.\n\nThe puzzles tend to be designed in such a way as to test the\nprogrammer's ability to implement a functioning, if naive, solution for\nthe first part, then the second part presents a similar problem, but\nthis problem is modified in a way to require a more time complexity\noptimized solution to complete in a reasonable time. This often\ninvolves finding unspecified patterns in the test input and deriving\nadditional assumptions which allow for additional optimizations.\n\nMore info is available in the [about\npage](https://adventofcode.com/2023/about).\n\n## About this solution set\n\nAll solutions in this project are written in C#. I went with this as\nit is a language I am quite familiar with, and I wanted to focus on\nthe underlying implementation, rather than the syntax of the language.\n\nMy goals with this project were to provide an isolated demonstration\nof my skills, and partially for fun.\n\nMy personal constraints for this project were such that each problem\nfinds the correct solution in a reasonable amount of time without\ndepending on multi-threading. In this case I consider a reasonable\namount of time being each problem should find a solution in less than\n10 seconds, and less than 30 seconds total for all problems. This\nconstraint holds true for each system I tested these solutions on,\nwhich span multiple platforms and hardware sets.\n\nI decided not to use multi-threading because that is more of an\nindication of the quality of the system on which it is run, rather\nthan the quality of the implementation.\n\n## Running yourself\n\nThere are two ways to run this program; one which tests a single part,\nand one which tests all parts and displays execution time. Which\napproach is performed depends on the content of `Program.cs`.\n\nTo test a single part, make `Program.cs` match the following with\n`Day1` and `Part1` replaced with the day and part you want to test.\n```csharp\nTester.SinglePart.Test(new Day1.Part1());\n```\n\nTo test all the parts, make `Program.cs` match the following.\n```csharp\nTester.Display.Start();\n```\n\nThen in a terminal change to the root directory and run the following.\n```bash\ndotnet run\n```\n\nThe project has no decencies but does require .net SDK 7. It has been\ntested on Linux and Windows.\n\nNote that this project does not contain input data or answers, as\nAdvent of Code prohibits this in [the legal\ndisclaimer](https://adventofcode.com/2023/about#legal). So to test it\nyou will have to add your own. This can be done by making an account\nat Advent of Code, then going to the problem you are interested in and\ndownloading the input data, then placing it in the correct place in\nthe project directory structure.\n\nInput files and answers must follow the following naming scheme to be\nfound by the program.\n\nInput files must be named `input.txt` and placed in the directory for\nthe day they are for. For example, the input for day one would be\nwritten to the file at the path `./Day1/input.txt`.\n\nAnswers are similar, they must be places in the directory of the day\nthey are for and must be named `answer-N.txt`, where `N` is the number\nof the part this is an answer for. For example, if you wanted to add\nan answer for day 3, part 2. It would be written to the path\n`./Day3/answer-2.txt`.\n\nNote that the answer files are not needed for the program to work,\nthey will just let you know if the computed answer matches the\nprovided answer if an answer is provided.\n\n## Problems\n\n- Day 1\n  - [Problem](https://adventofcode.com/2023/day/1)\n  - Solutions\n    - [Part 1](./Day1/Part1.cs)\n    - [Part 2](./Day1/Part2.cs)\n- Day 2\n  - [Problem](https://adventofcode.com/2023/day/2)\n  - Solutions\n    - [Part 1](./Day2/Part1.cs)\n    - [Part 2](./Day2/Part2.cs)\n- Day 3\n  - [Problem](https://adventofcode.com/2023/day/3)\n  - Solutions\n    - [Part 1](./Day3/Part1.cs)\n    - [Part 2](./Day3/Part2.cs)\n- Day 4\n  - [Problem](https://adventofcode.com/2023/day/4)\n  - Solutions\n    - [Part 1](./Day4/Part1.cs)\n    - [Part 2](./Day4/Part2.cs)\n- Day 5\n  - [Problem](https://adventofcode.com/2023/day/5)\n  - Solutions\n    - [Part 1](./Day5/Part1.cs)\n    - [Part 2](./Day5/Part2.cs)\n- Day 6\n  - [Problem](https://adventofcode.com/2023/day/6)\n  - Solutions\n    - [Part 1](./Day6/Part1.cs)\n    - [Part 2](./Day6/Part2.cs)\n- Day 7\n  - [Problem](https://adventofcode.com/2023/day/7)\n  - Solutions\n    - [Part 1](./Day7/Part1.cs)\n    - [Part 2](./Day7/Part2.cs)\n- Day 8\n  - [Problem](https://adventofcode.com/2023/day/8)\n  - Solutions\n    - [Part 1](./Day8/Part1.cs)\n    - [Part 2](./Day8/Part2.cs)\n- Day 9\n  - [Problem](https://adventofcode.com/2023/day/9)\n  - Solutions\n    - [Part 1](./Day9/Part1.cs)\n    - [Part 2](./Day9/Part2.cs)\n- Day 10\n  - [Problem](https://adventofcode.com/2023/day/10)\n  - Solutions\n    - [Part 1](./Day10/Part1.cs)\n    - [Part 2](./Day10/Part2.cs)\n- Day 11\n  - [Problem](https://adventofcode.com/2023/day/11)\n  - Solutions\n    - [Part 1](./Day11/Part1.cs)\n    - [Part 2](./Day11/Part2.cs)\n- Day 12\n  - [Problem](https://adventofcode.com/2023/day/12)\n  - Solutions\n    - [Part 1](./Day12/Part1.cs)\n    - [Part 2](./Day12/Part2.cs)\n- Day 13\n  - [Problem](https://adventofcode.com/2023/day/13)\n  - Solutions\n    - [Part 1](./Day13/Part1.cs)\n    - [Part 2](./Day13/Part2.cs)\n- Day 14\n  - [Problem](https://adventofcode.com/2023/day/14)\n  - Solutions\n    - [Part 1](./Day14/Part1.cs)\n    - [Part 2](./Day14/Part2.cs)\n- Day 15\n  - [Problem](https://adventofcode.com/2023/day/15)\n  - Solutions\n    - [Part 1](./Day15/Part1.cs)\n    - [Part 2](./Day15/Part2.cs)\n- Day 16\n  - [Problem](https://adventofcode.com/2023/day/16)\n  - Solutions\n    - [Part 1](./Day16/Part1.cs)\n    - [Part 2](./Day16/Part2.cs)\n- Day 17\n  - [Problem](https://adventofcode.com/2023/day/17)\n  - Solutions\n    - [Part 1](./Day17/Part1.cs)\n    - [Part 2](./Day17/Part2.cs)\n- Day 18\n  - [Problem](https://adventofcode.com/2023/day/18)\n  - Solutions\n    - [Part 1](./Day18/Part1.cs)\n    - [Part 2](./Day18/Part2.cs)\n- Day 19\n  - [Problem](https://adventofcode.com/2023/day/19)\n  - Solutions\n    - [Part 1](./Day19/Part1.cs)\n    - [Part 2](./Day19/Part2.cs)\n- Day 20\n  - [Problem](https://adventofcode.com/2023/day/20)\n  - Solutions\n    - [Part 1](./Day20/Part1.cs)\n    - [Part 2](./Day20/Part2.cs)\n- Day 21\n  - [Problem](https://adventofcode.com/2023/day/21)\n  - Solutions\n    - [Part 1](./Day21/Part1.cs)\n    - [Part 2](./Day21/Part2.cs)\n- Day 22\n  - [Problem](https://adventofcode.com/2023/day/22)\n  - Solutions\n    - [Part 1](./Day22/Part1.cs)\n    - [Part 2](./Day22/Part2.cs)\n- Day 23\n  - [Problem](https://adventofcode.com/2023/day/23)\n  - Solutions\n    - [Part 1](./Day23/Part1.cs)\n    - [Part 2](./Day23/Part2.cs)\n- Day 24\n  - [Problem](https://adventofcode.com/2023/day/24)\n  - Solutions\n    - [Part 1](./Day24/Part1.cs)\n    - [Part 2](./Day24/Part2.cs)\n- Day 25\n  - [Problem](https://adventofcode.com/2023/day/25)\n  - Solutions\n    - [Part 1](./Day25/Part1.cs)\n    - [Part 2](./Day25/Part2.cs)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ferrorstream%2Fadvent-of-code-2023","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ferrorstream%2Fadvent-of-code-2023","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ferrorstream%2Fadvent-of-code-2023/lists"}