Commit Graph
100 Commits
Author SHA1 Message Date
warrence 37d60d01ed Fix upper-case input file names when reading puzzle data 2025-07-10 19:40:03 +02:00
warrence 4d58746c6d Add solution for "Day 24: Crossed Wires", part 2 2025-07-08 20:56:39 +02:00
warrence d9fdb22bab Update readme to always refer to puzzle parts with numerals 2025-07-08 20:54:30 +02:00
warrence 03788ddf55 Rename "complete subgraph" to "clique" and use std::set instead of sorted std::vector in LanParty 2025-06-27 21:11:15 +02:00
warrence f687f416ac Fix include categories in clang format 2025-06-27 21:09:02 +02:00
warrence 4788a1b5ab Add solution for "Day 24: Crossed Wires", part 1 2025-06-26 20:41:18 +02:00
warrence 958adde4a2 Add solution for "Day 23: LAN Party", part 2 2025-06-23 21:24:16 +02:00
warrence f6b9e7b034 Add GraphBase::getDegree() 2025-06-23 20:53:12 +02:00
warrence 1834109040 Change GraphBase::NeighborIterator to use pointer to graph instead of reference
This enables default copy-assignment operator and copy constructor.
Also removed GraphBase::NeighborIterator::operator!=(), since it will be generated from the equality operator.
2025-06-23 20:51:16 +02:00
warrence b71d904770 Refactor Graph class into a template to remove LabelGraph and WeightGraph 2025-06-17 20:50:11 +02:00
warrence 8e3ca71bda Update type definitions to "using" instead of "typedef" 2025-06-17 18:03:42 +02:00
warrence 674553d29b Refactor graph classes
- Extract base graph logic from WeightedEdgeGraph into new Graph class
- Add LabelGraph to replace old Graph class used by LanParty solver
- Rename WeightedEdgeGraph to WeightGraph and change it to use new Graph class
- Update affected solvers to use new graph classes
2025-06-13 16:43:41 +02:00
warrence f312893ed1 Add solution for "Day 22: Monkey Market", part 2 2025-06-10 21:27:09 +02:00
warrence f025896e84 Add solution for "Day 22: Monkey Market", part 1 2025-06-10 19:46:06 +02:00
warrence 83c66682ef Add solution for "Day 21: Keypad Conundrum", part 2 2025-06-09 18:28:16 +02:00
warrence ab26563e34 Changed the order in Point2::getCardinalDirection() to match static member order 2025-06-05 23:32:44 +02:00
warrence 60798118ea Add solution for "Day 21: Keypad Conundrum", part 1 2025-06-05 23:31:30 +02:00
warrence c67bb9054a Remove unnecessary iterator use 2025-06-04 23:37:32 +02:00
warrence e1eb8fbe2b Add solution for "Day 20: Race Condition", part 2 2025-06-04 23:36:07 +02:00
warrence 43f1798343 Add solution for "Day 20: Race Condition", part 1 2025-06-03 19:30:43 +02:00
warrence 32a239d14a Removed input paths parameter from public TestContext methods 2025-06-03 19:30:42 +02:00
warrence 63745ee91f Add insertion operator for Grid class 2025-06-03 19:30:41 +02:00
warrence 05d627a176 Fix newline at end of file 2025-06-03 19:30:41 +02:00
warrence 21e154ed34 Add Lines::findChar() to search for starting points in mazes 2025-06-03 19:30:40 +02:00
warrence 2afa527a85 Add solution for "Day 19: Linen Layout", part 2 2025-06-03 19:30:40 +02:00
warrence 12fdc184cf Add solution for "Day 19: Linen Layout", part 1 2025-06-01 23:00:16 +02:00
warrence f8f431b61a Add solution for "Day 18: RAM Run", part 2 2025-05-25 21:15:11 +02:00
warrence bb1dab33e9 Add solution for "Day 18: RAM Run", part 1 2025-05-22 18:28:47 +02:00
warrence 99c31bc0ea Fix linter messages 2025-05-22 16:13:48 +02:00
warrence 0b70db7670 Change long long int to fixed width integer type int64_t 2025-05-22 16:12:56 +02:00
warrence 97b61836d8 Add TestContext::runGeneric() template function (and variants) 2025-05-21 20:50:12 +02:00
warrence 4b95a250bd Update the clang format include categories 2025-05-21 20:49:15 +02:00
warrence 45ab5f93ec Add solution for "Day 17: Chronospatial Computer", part 2 2025-05-21 20:34:34 +02:00
warrence 5201dcf0bc Fix day 17 division instruction (it's just a shift) 2025-05-21 20:23:42 +02:00
warrence 6d3973bd1e Add solution for "Day 17: Chronospatial Computer", part 1 2025-05-17 00:05:50 +02:00
warrence 09e34b9562 Fix code formatting 2025-05-17 00:04:15 +02:00
warrence fef88ac3fe Fix copyright dates 2025-05-17 00:03:52 +02:00
warrence 7ad1b01879 Change Solver into template class to allow for non-integer results 2025-05-17 00:02:53 +02:00
warrence 26dfb379a2 Add solution for "Day 16: Reindeer Maze", part 2 2025-05-14 21:16:14 +02:00
warrence 897bab12bf Change Dijkstra's algorithm to return all shortest distances 2025-05-14 20:53:39 +02:00
warrence 73ead5aea7 Add vertex weights and neighbor iterator for WeightedEdgeGraph 2025-05-14 20:51:49 +02:00
warrence 911bcf6701 Fix a recently introduced potential bug in day 10 solver 2025-05-14 20:45:24 +02:00
warrence 7f0b70c8ef Moved day 16 graph construction into own method 2025-05-05 19:06:51 +02:00
warrence 4302a7b2f7 Fix Dijkstra's Algorithm by exiting early at target vertex 2025-05-05 19:05:02 +02:00
warrence 1c860f7e4c Fix code messages 2025-04-30 20:45:09 +02:00
warrence 01c300dce1 Added sub folders for common, extra, and framework code files 2025-04-30 20:37:03 +02:00
warrence 08a94ba068 Add solution for "Day 16: Reindeer Maze", part 1 2025-04-30 20:05:51 +02:00
warrence a819caba8b Add less than operator for Point2 2025-04-30 19:27:28 +02:00
warrence e0cd315909 Add solution for "Day 6: Guard Gallivant", part 2 2025-03-23 16:42:51 +01:00
warrence 51b537098d Add solution for "Day 15: Warehouse Woes", part 2 2025-03-09 16:21:28 +01:00
warrence 8e67c19f98 Add TestContext::runPart1() for tests that are only valid for part 1 of a puzzle 2025-03-09 16:00:19 +01:00
warrence 047abf9772 Add Lines class to allow LinesSolver to externalize access to its vector of string 2025-03-09 15:59:23 +01:00
warrence 02af288ebc Add solution for "Day 15: Warehouse Woes", part 1 2025-03-04 12:06:16 +01:00
warrence 8d75bdfbef Add solution for "Day 14: Restroom Redoubt", part 2 2025-02-25 20:16:03 +01:00
warrence a75535bab7 Add solution for "Day 14: Restroom Redoubt", part 1 2025-02-19 14:15:34 +01:00
warrence 449e33d2a3 Fix code formatting 2025-02-19 11:23:09 +01:00
warrence 973f62163d Add solution for "Day 13: Claw Contraption", part 2 2025-02-18 16:11:29 +01:00
warrence e6a132521b Fix inconsistent string stream naming 2025-02-18 15:01:43 +01:00
warrence bd5df5d019 Add solution for "Day 13: Claw Contraption", part 1 2025-02-18 15:01:11 +01:00
warrence 5b15e36bc5 Add solution for "Day 12: Garden Groups", part 2 2025-02-17 15:23:55 +01:00
warrence f3682a46a9 Add TestContext::runPart2 for tests that are only valid for part 2 of a puzzle 2025-02-17 15:23:05 +01:00
warrence ce77b2354c Change Point2 to use STL arrays for predefined directions 2025-02-17 15:07:20 +01:00
warrence 0718a1285e Add tests for additional day 12 examples 2025-02-14 18:58:09 +01:00
warrence ee60c23cfb Fix implicit cast issues in PrintQueue 2025-02-14 18:38:34 +01:00
warrence 26f40147d2 Remove Solver::getPuzzleTitle() again and do it directly in SolverEngine::run() 2025-02-14 18:24:45 +01:00
warrence 979961d60e Change Solver puzzle title use and add optional input file name suffix 2025-02-14 17:13:05 +01:00
warrence 28baf4db3e Add solution for "Day 12: Garden Groups", part 1 2025-02-14 15:47:38 +01:00
warrence 8bea3c2c48 Remove unused includes 2025-02-14 12:03:03 +01:00
warrence ba3d151e96 Fix readme typos 2025-02-14 11:24:58 +01:00
warrence d8ae103928 Add solution for "Day 9: Disk Fragmenter", part 2 2025-02-14 11:24:31 +01:00
warrence 648f6d4ebc Rename LinesSolver::getPosition()/setPosition() to getCharAt()/setCharAt() 2025-02-04 17:50:38 +01:00
warrence 54204766ec Add solution for "Day 9: Disk Fragmenter", part 1 2025-02-04 17:44:06 +01:00
warrence e1cd0867cb Add solution for "Day 8: Resonant Collinearity", part 2
The Point2::operator<() was introduced for set<Point2>, which is not actually required.
2025-02-04 17:43:20 +01:00
warrence 44f2a0e0ec Add solution for "Day 8: Resonant Collinearity", part 1 2025-01-29 22:04:12 +01:00
warrence c4b2684d66 Add solutions for "Day 7: Bridge Repair" 2025-01-29 09:38:01 +01:00
warrence 9bc4c3e6be Fix file encodings 2025-01-24 08:57:45 +01:00
warrence d2e64d2518 Fixed readme links 2025-01-22 20:42:47 +01:00
warrence 21279a97a6 Add solution for "Day 11: Plutonian Pebbles", part 2 2025-01-22 20:38:08 +01:00
warrence eaee3bd347 Add solution for "Day 11: Plutonian Pebbles", part 1 2025-01-21 14:07:38 +01:00
warrence 7bca5d29d0 Fix operator code formatting 2025-01-21 14:04:21 +01:00
warrence 0f60b23b33 Change constants methods to static constexpr 2025-01-21 14:03:40 +01:00
warrence 0b72b7efdc Remove raw array use from PrintQueue 2025-01-21 14:02:10 +01:00
warrence ae99d41cf4 Add Grid::fill() 2025-01-21 14:00:38 +01:00
warrence ab7aa394dc Fix constructor code formatting 2025-01-21 13:56:42 +01:00
warrence 22c858dd59 Change clang format line width to 120 2025-01-21 13:54:06 +01:00
warrence 2d63375daa Fix broken Point2 inequality operator 2025-01-02 17:23:15 +01:00
warrence 5909474603 Update readme 2025-01-01 21:39:31 +01:00
warrence 13a49b6735 Update clang format for templates 2024-12-30 22:32:50 +01:00
warrence 60a952fd5e Update HoofIt to use Grid 2024-12-30 22:30:32 +01:00
warrence 7aeaab2c49 Add Grid class as wrapper for two-dimensional array 2024-12-30 22:29:14 +01:00
warrence 06afa3ae2e Fix method order (constants methods first) 2024-12-25 21:44:39 +01:00
warrence 69a4b4becc Add missing virtual modifiers 2024-12-25 21:43:58 +01:00
warrence 2e2a95faef Add const to GuardGallivant.getStartDirectionIndex() 2024-12-25 21:43:20 +01:00
warrence 1fd73c1a18 Rename LanParty method to "compute..." 2024-12-25 21:34:13 +01:00
warrence c777bad38a Add const for Vertex id and getter 2024-12-25 21:27:27 +01:00
warrence d314b2fc70 Add const modifier for constants methods 2024-12-25 21:24:20 +01:00
warrence c783d20755 Add solution for "Day 23: LAN Party", part 1 2024-12-25 21:06:41 +01:00
warrence e0a9a807da Fix some private field identifiers 2024-12-24 15:30:14 +01:00
warrence 262a84fa68 Add missing test cases 2024-12-23 19:41:44 +01:00
warrence f644f6bd42 Enable clang format again and disable AllowShortFuctionOnASinlgeLine 2024-12-23 18:28:12 +01:00