Commit Graph

37 Commits

Author SHA1 Message Date
cdo c461bfd0e8 Add profiling output to .gitignore 2022-11-24 18:18:49 +00:00
cdo 072c3db45b Save results to file instead of checking puzzles while solving 2022-11-24 18:18:49 +00:00
cdo 810ad45669 Add CFLAGS for profiling (commented out) to Makefile 2022-11-24 18:18:49 +00:00
cdo 050e770bb9 Add Makefile target to run solver 2022-11-24 18:18:49 +00:00
cdo b48f0d6748 Add Makefile target for results file prep 2022-11-24 18:18:49 +00:00
cdo 93336c18fb Add target for puzzles pre-processing to Makefile 2022-11-24 18:18:44 +00:00
cdo d7394181ba Remove uneeded braces in init() 2022-11-24 12:09:55 +00:00
cdo d67f5571a4 Change compilation flags to improve optimization 2022-11-24 01:38:49 +00:00
cdo 7c6efa125e Remove uneeded branches in update()
Now that the value and possible values are independent, it doesn't
matter if we clobber the possible values of a cell that's been
determined.
2022-11-24 01:37:48 +00:00
cdo 1a84d900f2 Remove assert() from update() 2022-11-24 01:35:56 +00:00
cdo f51e9a06b0 Use uint16_t instead of struct for cell state
- Bits 0-8 are the possible values
- Bits 9-12 is the concrete value
- Bit 15 is 1 if the cell is determined
2022-11-24 00:38:25 +00:00
cdo 4a2cfb392f Cast NSUD to double when calculating solved percentage 2022-11-24 00:01:42 +00:00
cdo e2838d89e3 Remove gen() function 2022-11-23 23:46:18 +00:00
cdo 2ca91dec99 Run puzzles from file in main() 2022-11-23 23:44:39 +00:00
cdo 3d7a40cc58 Remove validity check from update() 2022-11-23 22:31:39 +00:00
cdo f7d132397f Add filled() function as a faster alternative to check() 2022-11-23 22:30:26 +00:00
cdo 9bc49daf4c Add load() for loading sudokus from text 2022-11-23 22:17:54 +00:00
cdo 0ca01985cd Add steps to test columns and segments back
Turns out these are needed for some of them... I guess the way I was
generating them was somehow avoiding tricky ones being created?
2022-11-23 21:42:23 +00:00
cdo 5622e2ec9f Remove printing from runbench() 2022-11-23 18:14:20 +00:00
cdo 3fa089e4af Pass benchmark results out via pointer 2022-11-23 18:07:54 +00:00
cdo 37e7c6481a Make fill proportion a parameter to gen() 2022-11-23 17:56:12 +00:00
cdo 71db045c9f Seperate logic in main() into genpuzzles() and runbench() 2022-11-23 17:45:17 +00:00
cdo a1c71f8f06 Reduce number of puzzles in benchmark 2022-11-23 17:14:47 +00:00
cdo 6ce468bb0d Remove additional newline from seed printout 2022-11-23 17:14:01 +00:00
cdo 27d7f3f01b Remove all the indirection 2022-11-23 16:26:55 +00:00
cdo 5aea129dc9 Only apply rules to rows
It goes faster this way.
2022-11-23 15:50:20 +00:00
cdo 119270c89b Apply rules to segments as well as rows and columns 2022-11-23 15:46:47 +00:00
cdo d74b5410b6 Add number of passes to benchmark output 2022-11-23 15:46:21 +00:00
cdo 07c1fc7a0f Only report success rate and average time in benchmark summary 2022-11-23 15:23:11 +00:00
cdo 14eb8533e6 Add timing to benchmarks 2022-11-23 15:19:06 +00:00
cdo ef7f0f0f73 Alter main() to run benchmark instead of single puzzle 2022-11-23 14:54:42 +00:00
cdo 39d417f2bc Implement check() function to verify solver results 2022-11-23 14:37:10 +00:00
cdo 4feaedf1a3 Create basic, rule-based solver 2022-11-21 19:24:34 +00:00
cdo d6b9f3e2e5 Make generator always produce possible puzzles 2022-11-21 19:23:30 +00:00
cdo 5ae7a18227 Get seed from /dev/urandom instead of using time(2) 2022-11-21 19:22:16 +00:00
cdo 512580ab27 Implement basic generation and printing
I expect this will probably generate some impossible puzzles, but I'll
deal with that later.
2022-11-21 14:07:53 +00:00
cdo abc98edac9 Create project skeleton 2022-11-21 13:00:20 +00:00