{"id":25420064,"url":"https://github.com/namelessvoid/exit-adventcalendar-solver","last_synced_at":"2025-05-13T14:37:23.653Z","repository":{"id":69698459,"uuid":"321460460","full_name":"namelessvoid/exit-adventcalendar-solver","owner":"namelessvoid","description":"Solver for EXIT advent calendar published by Kosmos","archived":false,"fork":false,"pushed_at":"2020-12-14T20:21:57.000Z","size":20,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-02-16T19:40:32.307Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Go","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/namelessvoid.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,"publiccode":null,"codemeta":null}},"created_at":"2020-12-14T20:09:14.000Z","updated_at":"2020-12-14T20:21:59.000Z","dependencies_parsed_at":null,"dependency_job_id":"e27d33bc-65d4-4784-8256-b781245b0c04","html_url":"https://github.com/namelessvoid/exit-adventcalendar-solver","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/namelessvoid%2Fexit-adventcalendar-solver","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/namelessvoid%2Fexit-adventcalendar-solver/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/namelessvoid%2Fexit-adventcalendar-solver/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/namelessvoid%2Fexit-adventcalendar-solver/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/namelessvoid","download_url":"https://codeload.github.com/namelessvoid/exit-adventcalendar-solver/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":253961343,"owners_count":21991006,"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":"2025-02-16T19:35:47.325Z","updated_at":"2025-05-13T14:37:23.645Z","avatar_url":"https://github.com/namelessvoid.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# EXIT Advent Calendar Solver\n\nThis small program can solve the EXIT advent calender released by German publisher Kosmos.\n\nDisclaimer: This is a project just for fun. Do not use it to really solve the calendar as you will miss the fun of the game :)\n\n## About the game\n\nThe EXIT advent calendar is not a usual advent calendar. Only the first door is numbered up front. To find the next door, you have to solve a riddle a day. The solution will guide you to the door you have to open on the next day.\n\nThe solution to each riddle is a three-digit code with numbers between 0 and 9. These numbers are put into a \"decoder board\" with three colored stripes. After entering the code, the decoder board is flipped. On the back, you can see an arrow and an icon on each stripe.\n\nBy starting from the current door and moving from door to door according to the arrows, you will find the door for the next day. To verify the solution, each door has three icons printed on it. These three icons have to match the icons on the back of the decoder board. If they match, the solution is valid. If not, you ahve to try another three-digit code.\n\n## About the solver\n\nThe solver exploits that for each day, only one arrow-and-icon combination is valid (i.e. the solution for each day is unique, obviously). A depth-first search is performed which performs:\n\n```\n0. Push the start door to the calendar solution.\n1. Iterate through all the doors\n   1.1 Put the three icons on the door into the decoder board.\n   1.2 Get the arrows from the decoder board\n   1.3 Starting from the current door, move along the arrows. If it ends on the current door, this door is the solution for the current day.\n      1.3.1 Append the currently examined door to the calendar solution\n      1.3.2 If the solution is complete, end the traversal and return the solution\n      1.3.2 Otherwise continue with step 1.\n```\n\n## About the program\n\nThe program has to be called with parameter `-day` which is a uint and determines the day up to which you want to solve the calendar. \n\nExample usage: `go run cmd/solver/* -day 13`\n\nOutput (faked to not spoil you):\n\n```\n  3  ??   9   5   7  ?? \n ??   6  ??  ??   4  ?? \n 12  13  ??  10   8  ?? \n  1   2  11  ??  ??  ?? \n```\n\nThe numbers/question marks correspond to the doors on the calendar from top left to bottom right. The number is the day at which the door is opened. Doors which are marked with `??` are not part of the day range you provided with `-day`.\n\n## About the code\n\nThe executable lives in `cmd/solver`. The gameplay related components (calendar, decoder board etc) are in `internal/pkg/calendar`. The depth-first solver is implemented in `internal/pkg/solver`.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnamelessvoid%2Fexit-adventcalendar-solver","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fnamelessvoid%2Fexit-adventcalendar-solver","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnamelessvoid%2Fexit-adventcalendar-solver/lists"}