jkomoros / sudoku Goto Github PK
View Code? Open in Web Editor NEWA sudoku puzzle solver, generator, and difficulty-rater built in Go
License: Apache License 2.0
A sudoku puzzle solver, generator, and difficulty-rater built in Go
License: Apache License 2.0
http://www.sadmansoftware.com/sudoku/solvingtechniques.htm is a good list
Perhaps make a new 'Experimental' bucket on komoroske.com/sudoku that people can opt in to solving.
... Right?
Setting this breaks a test in grid_test.go, but the test might be flawed.
... Or onlyLegalIn
to verify that we're getting good coverage and overlap from them.
Consider factoring out Rand methods to use a passthrough so we can test reasonably by setting a seed.
Instead of relying on Weka in the workflow
Likely already covered by another technique, but this is one I find myself doing often so it might be worth including.
The technique where all of the 6 possibilities in a block are in the same column, therefore the 6 can't be elsewhere in that column
Create difficulties.go, auto-generated by a (simple!) python script based on a CSV.
Even for techniques that in practice should be VERY different as experienced by real people
A lot of techniques seem to duplicate a lot of work.
A way for technique finders to import the results of other techniques. For example, onlylegalnumber should import obviousincollection results and not duplicate those. And hiddensubset and nakedsubset should trade their results as input to the others. It's not clear if this additional layers of calculation is worth it or not...
... It shouldn't
Try one with 0 threads and no channels, just a basic recursive DFS
* This is hard.
* Grids can have parents. If they do, they are a "sparse grid".
* No, should be a SparseGrid with a *Grid member.
* SparseGrid has a Cell() method that looks in its cache. if it doesn't exist, looks to parent for one.
* SparseCell is soemthing that looks like a cell but actually is a wrapper around one with a pointer back to the sparseGrid it's from.
* Sparsecells have their own trapping of any modifiying calls that then call back to the sparseGrid (they know which it is) with the new cell itself to put in the cache. Then the SparseCell can be thrown away.
* Simplest (no caching): Whenever you want a cell, you call grid.Cell(), which sees if it has one, otherwise returns one from another cell.
Investigate why using the finite queue isn't making a big dent in Fill() performance.
So it's not so much how many, but if there are any of a given step at all.
They aren't used very often in Cell, might save memory
This is to address the fact that the puzzles generated only very, very rarely have low difficulties.
This assumes that as you remove cells puzzles get more and more difficult.
This could be extremely expensive.
Move into another repo?
* When the grid isn't solveable with HumanSolve. ... But shouldn't that be impossible?
* Maybe when human solve detects at the beginning that it has multiple solutions? But how would that even be generated by Grid?
Just seems like it makes sense.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.