Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Rewrite original code #12

Merged
merged 39 commits into from
Nov 5, 2023
Merged

Rewrite original code #12

merged 39 commits into from
Nov 5, 2023

Conversation

aritmos
Copy link
Owner

@aritmos aritmos commented Nov 5, 2023

Completed the rewrite of the original code written at the inception of the project.

Rewritten implementation contains more robust, clear, and performant code, as well as being better documented. Status still remains in early development.

- Replace `Section`'s generics with an enum field.
Selecting Sections is not really useful yet, it will only be the case when dealing with the filter/finder for subsets of size 1.
- Made the crate root be the sudoku `Solver` trait along with the `Board` abstraction.
- Moved all the existing code into `solvers/psr/`. Also added `solvers/btr/` for my backtracking solution.
- All of a `Solver`s core definitions and implementations lie in their `core` submodule.
Renamed `Cell::set_known` to `Cell::set_known_bit` to better convey the function's functionality
`CellMask::new` now returns `None` if the passed `u16` does not conform to the required representation.
Refactor  `0b000000_111_111_111_0` into its own `const` variable for better ergonomics and intent across modules.
Removed the leading `000000_` in `const u16` expressions for greater conciseness in settings where it is assumed that the banned bits are zero. Kept the old byte grouping in cases where the banned bits are part of the context.
Improved docs for `CellMask`
Changed the names in constructor/access methods to include the `get_` prefix in order to be more expressive about their functionality.

e.g. `Grid::section` -> `Grid::get_section`
Rewrote original implementation for `Lines` (now `FoldedArea`). Implementation is still in early stages of development, likely requires further rewriting.
Resolves #6 , #8
Finalizes rewrite milestone :)
@aritmos
Copy link
Owner Author

aritmos commented Nov 5, 2023

Force the merge instead of going through conflicts in the pull request.

@aritmos aritmos closed this Nov 5, 2023
@aritmos
Copy link
Owner Author

aritmos commented Nov 5, 2023

Try again

@aritmos aritmos reopened this Nov 5, 2023
@aritmos aritmos merged commit b620a53 into main Nov 5, 2023
3 checks passed
@aritmos aritmos deleted the rewrite branch November 5, 2023 12:53
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant