{"id":19624815,"url":"https://github.com/coko7/aoc-2023","last_synced_at":"2026-06-13T19:31:31.880Z","repository":{"id":210240405,"uuid":"726091420","full_name":"coko7/aoc-2023","owner":"coko7","description":"🎄 My code for the Advent of Code 2023 edition ","archived":false,"fork":false,"pushed_at":"2025-10-13T07:58:00.000Z","size":70,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2026-03-04T17:11:47.378Z","etag":null,"topics":["advent-of-code","aoc","aoc-2023","aoc2023","csharp"],"latest_commit_sha":null,"homepage":"","language":"C#","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/coko7.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}},"created_at":"2023-12-01T14:16:17.000Z","updated_at":"2025-10-13T07:58:07.000Z","dependencies_parsed_at":"2023-12-20T15:46:22.343Z","dependency_job_id":null,"html_url":"https://github.com/coko7/aoc-2023","commit_stats":null,"previous_names":["coko7/aoc-2023"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/coko7/aoc-2023","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/coko7%2Faoc-2023","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/coko7%2Faoc-2023/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/coko7%2Faoc-2023/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/coko7%2Faoc-2023/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/coko7","download_url":"https://codeload.github.com/coko7/aoc-2023/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/coko7%2Faoc-2023/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34298247,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-13T02:00:06.617Z","response_time":62,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"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":["advent-of-code","aoc","aoc-2023","aoc2023","csharp"],"created_at":"2024-11-11T11:39:06.448Z","updated_at":"2026-06-13T19:31:31.835Z","avatar_url":"https://github.com/coko7.png","language":"C#","funding_links":[],"categories":[],"sub_categories":[],"readme":"# aoc-2023\n\nMy code for the [Advent of Code - 2023 edition](https://adventofcode.com/2023)\n\n## 👋 Introduction\n\nWhen I first began doing [AOC](https://adventofcode.com) challenges in 2022, I had no setup. Each day, I would create all of the files manually before starting to write code.\nIt worked but it made me lose some time here and there. Usually, I would create the file before the daily challenge came out but sometimes I woke up late and lost a bit of time doing some late file creations.\nAlso, I did not have my own utility classes and I would copy the same code to read and parse the file from the previous day.\nAll of the things I have mentioned are not huge issues but it was still bothering me.\n\nThat's why this year, I have decided to do things a little differently.\n\n## 🛠️ Proper workspace\n\nI have created proper structure for my project and wrote my own utility classes to automatically generate the needed files, easily read the inputs and run the code.\nThanks to that, I can jump straight to solving the daily challenge instead of losing time setting up everything.\n\nWhat the workspace takes care of:\n- Automatically generating empty input files (example, input, input2, etc.) for the current day. I still need to manually copy my input data from AOC website inside the file but that takes like 5 seconds. *I am not so good at solving AOC programming challenges that these lost seconds matter anyway :)*\n- Automatically generating a skeleton solver file (C# class file) for the current day:\n  ```csharp\n  namespace aoc_2023.src.dayXX\n  {\n      public class DayXXSolver : AocSolver\n      {\n          // Link to the puzzle: https://adventofcode.com/2023/day/XX\n  \n          public override int Day =\u003e XX;\n          public override int Part =\u003e 1;\n  \n          public override void Solve()\n          {\n              string[] input = ReadInput(\"input\");\n              string[] lines = ReadInputLines(\"input\");\n  \n              Console.WriteLine($\"Result for Part {Part} is \");\n          }\n      }\n  }\n  ```\n- When the project is run, the daily solver will be called and its code will be executed automatically\n- Once I am done with the first part of the challenge, I just need to change a boolean in the main function and the solver for part 2 will be automatically generated next time I run the project\n- The solver created for part 2 is a direct copy of the solver file for part 1 but with some tiny adjustments (mostly file/class name and `Part` value)\n\n## 💼 Workflow\n\nWhen it's time to tackle the daily challenges:\n- I run the app once to generate the daily files (data folder and solver skeleton for part 1)\n- I read the challenge description and start implementing a solution\n- I test the solution against example data and make sure it works before testing with my own input\n- Once I get the golden star for part 1, I push the code to Git\n- Then, I change a boolean in my main function to indicate that I am ready for part 2\n- Upon running the project, the solver for part 2 gets automatically generated and it contains the same code as part 1\n- I tweak the code of the new generated solver so that it works for part 2\n- I test with my inputs and edit the code until I find something that works and I get my second star\n- Finally, I push code to Git\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcoko7%2Faoc-2023","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcoko7%2Faoc-2023","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcoko7%2Faoc-2023/lists"}