init
This commit is contained in:
commit
db96d762ad
5 changed files with 77 additions and 0 deletions
30
README.md
Normal file
30
README.md
Normal file
|
|
@ -0,0 +1,30 @@
|
|||
# Project 1: Maths Puzzles
|
||||
|
||||
## Math Puzzle
|
||||
- each digit must be 1-9
|
||||
- each row contains no repeated digit
|
||||
- each column contains no repeated digit
|
||||
- all squares on the diagonal line from top left corner to bottom right corner must contain the same value
|
||||
- the heading of each row holds either:
|
||||
- the sum of all the digits in that row
|
||||
- the product of all the digits in that row
|
||||
- the heading of each column holds either:
|
||||
- the sum of all the digits in that column
|
||||
- the product of all the digits in that column
|
||||
|
||||
## Input
|
||||
A math puzzle with most/all squares empty **except** for the headings
|
||||
|
||||
## Solution
|
||||
|
||||
### Structure
|
||||
A predicate `puzzle_solution/1` which holds when the argument is a solved math puzzle
|
||||
|
||||
### Approach
|
||||
Utilise constraint logic programming
|
||||
1. unify all squares on the diagonal
|
||||
2. check rows are valid
|
||||
1. all distinct
|
||||
2. sum to heading
|
||||
3. product to head
|
||||
3. check columns are valid via `transpose/2`
|
||||
Loading…
Add table
Add a link
Reference in a new issue