Skip to content

Instantly share code, notes, and snippets.

@JacobEberhardt
Created October 26, 2017 11:59
Show Gist options
  • Save JacobEberhardt/2e00e07a8735250b53cc69703c1e6c24 to your computer and use it in GitHub Desktop.
Save JacobEberhardt/2e00e07a8735250b53cc69703c1e6c24 to your computer and use it in GitHub Desktop.
// Sudoku of format
// | a11 | a12 || b11 | b12 |
// --------------------------
// | a21 | a22 || b21 | b22 |
// ==========================
// | c11 | c12 || d11 | d12 |
// --------------------------
// | c21 | c22 || d21 | d22 |
def checkEquality(e11,e12,e21,e22):
counter = 0
counter = if e11 == e12 then 1 else 0 fi
counter = counter + if e11 == e21 then 1 else 0 fi
counter = counter + if e11 == e22 then 1 else 0 fi
counter = counter + if e12 == e21 then 1 else 0 fi
counter = counter + if e12 == e21 then 1 else 0 fi
counter = counter + if e21 == e22 then 1 else 0 fi
return counter
def sum(e1,e2,e3,e3):
return e1 + e2 + e3 + e4
def main(a11,a12,a21,a22,b11,b12,b21,b22):
// variables naming: box'row''column'
// counter globally counts duplicate entries in boxes, rows and columns
counter = 0
// check box correctnes
// assert 1,2,3,4 are used as symbols
10 == sum(a11,a12,a21,a22)
10 == sum(b11,b12,b21,b22)
10 == sum(c11,c12,c21,c22)
10 == sum(d11,d12,d21,d22)
// no duplicates
counter = checkEquality(a11,a12,a21,a22)
counter = counter + checkEquality(b11,b12,b21,b22)
counter = counter + checkEquality(c11,c12,c21,c22)
counter = counter + checkEquality(d11,d12,d21,d22)
// check row correctnes
10 == sum(a11,a12,b11,b22)
10 == sum(a21,a22,b21,b22)
10 == sum(c11,c21,d11,d12)
10 == sum(c21,c22,d21,d22)
counter = checkEquality(a11,a21,b11,b21)
counter = counter + checkEquality(a21,a22,b21,b22)
counter = counter + checkEquality(c11,c21,d11,d12)
counter = counter + checkEquality(c21,c22,d21,d22)
// check column correctnes
10 == sum(a11,a21,c11,c21)
10 == sum(a12,a22,c12,c22)
10 == sum(b11,b21,d11,d21)
10 == sum(b12,b22,d12,d22)
counter = checkEquality(a11,a21,b11,b21)
counter = counter + checkEquality(a21,a22,b21,b22)
counter = counter + checkEquality(c11,c21,d11,d12)
counter = counter + checkEquality(c21,c22,d21,d22)
// assert counter is 0
counter == 0
return 1
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment