An implementation based on logic.
Work in progress.
See examples/solve1/main.go and test cases
Code coverage: