Commit Graph

191 Commits

Author SHA1 Message Date
Stefan Müller 2ff41caf37 Added caching of calculated combinations per block for day 12 2024-11-19 22:58:15 +01:00
Stefan Müller 16e7528b34 Updated day 12 WIP performance refactor
- Added TValidationsToBlockAssignments to replace the loops in
  TConditionRecord.GenerateBlockAssignments
2024-11-19 18:14:14 +01:00
Stefan Müller ec6928679a Updated day 12 WIP performance refactor
- Added combinations calculation directly to the multi-index enumerable
  (TValidationPositionOffsets) and added new intermediate derived class
  TAccumulatedCombinationsMultiIndexStrategy to make this reusable for the other
  enumerables
- Removed TBinomialCoefficientCache instances and used new global instance instead
- Renamed TValidationToDamageAssignments to TDamageToValidationAssignments
2024-11-17 23:55:25 +01:00
Stefan Müller 3f7fb4a548 Added global BinomialCoefficients instance 2024-11-17 17:47:43 +01:00
Stefan Müller 05863842df Added TBlock to replace the block strings for day 12 2024-11-15 19:08:33 +01:00
Stefan Müller 1642c7dcfb Updated day 12 WIP solver (correct solution) 2024-11-12 19:16:12 +01:00
Stefan Müller 60ef49c1ee Updated day 12 WIP solver 2024-11-10 23:04:01 +01:00
Stefan Müller 21ef4c08f1 Added TBinomialCoefficientCache method documentation 2024-11-09 23:11:05 +01:00
Stefan Müller be0357befd Added binomial coefficient calculation 2024-11-09 17:59:56 +01:00
Stefan Müller 1d399cc5b6 Updated day 12 WIP solver 2024-11-09 00:42:11 +01:00
Stefan Müller fb2f813701 Added MultiIndexEnumerator 2024-11-09 00:41:49 +01:00
Stefan Müller 151b5dc49a Updated day 12 WIP solver 2024-10-15 11:45:44 +02:00
Stefan Müller c0ee7894ae Added initial attempt for "Day 12: Hot Springs", part 2 including test cases 2024-07-03 20:48:50 +02:00
Stefan Müller c84d3e6a2d Updated favorites in readme 2024-07-03 20:42:40 +02:00
Stefan Müller ba4195af82 Added solution for "Day 18: Lavaduct Lagoon", part 2 2024-07-03 20:41:19 +02:00
Stefan Müller b086038aa5 Added solution for "Day 18: Lavaduct Lagoon", part 1 2024-06-29 01:03:16 +02:00
Stefan Müller 4cd9392bbc Added puzzle commentaries for days 17, 19, and 22 2024-06-26 21:25:49 +02:00
Stefan Müller c0a6145019 Added favorites in readme 2024-06-26 21:23:04 +02:00
Stefan Müller dfa6f6a09c Fixed more typos in the readme 2024-06-26 21:20:21 +02:00
Stefan Müller 00f90a1da9 Fixed nested if block in USandSlabs.pas 2024-06-26 21:16:02 +02:00
Stefan Müller 5441700572 Updated several of the solution infos in the readme 2024-06-26 09:36:56 +02:00
Stefan Müller 6d622d4c22 Added tests section in the readme 2024-06-26 09:34:05 +02:00
Stefan Müller 72ce40d84a Updated readme headings and links 2024-06-26 09:32:52 +02:00
Stefan Müller d79bd2e78a Removed unused unit includes, left from older changes 2024-06-25 22:23:58 +02:00
Stefan Müller 7b33e8b406 Added solution for "Day 17: Clumsy Crucible", part 2 2024-06-25 22:22:52 +02:00
Stefan Müller ba1cefc371 Added solution for "Day 17: Clumsy Crucible", part 1 2024-06-19 22:38:24 +02:00
Stefan Müller 0ccb047312 Fixed test project unit order 2024-06-17 14:01:53 +02:00
Stefan Müller 3e7943056a Added new alternative data path `..\..\data` 2024-06-17 14:01:23 +02:00
Stefan Müller f66e3fc2d8 Removed full data test cases
Providing full access to the solver code is the purpose of this project
repository. However, I think there should be some work in getting to
the actual solutions to not open the doors to abuse.
2024-06-17 14:00:22 +02:00
Stefan Müller 8eb76329c1 Moved common TPoint direction code into new unit 2024-06-10 20:48:07 +02:00
Stefan Müller 19509c6173 Fixed memory leak in TSnowverload 2024-06-10 20:46:54 +02:00
Stefan Müller e81df9d558 Added test categories to all registered test cases 2024-06-10 20:24:05 +02:00
Stefan Müller 3f83f888f3 Updated solution for day 25, significantly speeding up the algorithm 2024-06-05 13:40:31 +02:00
Stefan Müller c5ea70ed21 Added solution for "Day 25: Snowverload", part 1 2024-06-04 17:14:24 +02:00
Stefan Müller 216839c98b Fixed copyright date 2024-06-03 20:52:42 +02:00
Stefan Müller 3c2acf05e8 Fixed project uses 2024-06-03 20:50:56 +02:00
Stefan Müller c2570fab3d Removed unused dividers factorization 2024-06-03 14:49:21 +02:00
Stefan Müller 33e7b64276 Added puzzle commentary for day 24 2024-05-27 03:10:14 +02:00
Stefan Müller 859a5db921 Merge branch 'day24-analytical' 2024-05-27 02:53:03 +02:00
Stefan Müller b27b14a153 Fixed day 24 helper variable indices 2024-05-27 02:52:22 +02:00
Stefan Müller 3e3e1d45d3 Added solution "Day 24: Never Tell Me The Odds", part 2 2024-05-27 02:29:49 +02:00
Stefan Müller 44caf3e21c Fixed comments 2024-05-26 19:58:13 +02:00
Stefan Müller 1784e41c0f Fixed root isolation interval data types 2024-05-26 19:28:04 +02:00
Stefan Müller 5f93ad7869 Added bisection variant for integers instead of intervals 2024-05-26 18:59:47 +02:00
Stefan Müller 7db8f948c5 Changed TPolynomialRoots.BisectIsolation return type to array 2024-05-26 17:34:18 +02:00
Stefan Müller 8d4a5c2ed8 Changed root finder to use base-2 exponent of bound
Since the root isolation algorithm uses a power of two as bound anyway,
it makes sense to use it's exponent in method interfaces and throughout
the algorithm. This simplifies multiplications to cheap shifts and will
make it easier to detect when the isolating interval size is 1.

Also added some method documentation.
2024-05-26 17:31:37 +02:00
Stefan Müller 04e1702a2e Added TBigIntPolynomial.ScaleVariableByPowerOfTwo 2024-05-26 16:59:16 +02:00
Stefan Müller ab453b347d Renamed root finding class and methods, now class methods 2024-05-26 14:23:31 +02:00
Stefan Müller ae30889bbb Fixed calculation of root-isolating intervals and tests 2024-05-25 02:51:00 +02:00
Stefan Müller 748964c871 Fixed broken polynomial degree in bisection algorithm 2024-05-25 02:37:34 +02:00