49 lines
1.4 KiB
Text
49 lines
1.4 KiB
Text
nStatements = 12
|
|
T = list(nStatements)
|
|
Pass = list(nStatements)
|
|
|
|
for tryVal = 0 to (2**nStatements) - 1
|
|
|
|
# 1. Postulate answer: Extract bits into T array
|
|
for stmt = 1 to 12
|
|
if (tryVal & (2**(stmt-1))) != 0
|
|
T[stmt] = 1
|
|
else
|
|
T[stmt] = 0
|
|
ok
|
|
next
|
|
|
|
# 2. Test consistency (Ring: True = 1, False = 0)
|
|
Pass[1] = (T[1] = (nStatements = 12))
|
|
Pass[2] = (T[2] = (sum_range(T, 7, 12) = 3))
|
|
Pass[3] = (T[3] = ((T[2]+T[4]+T[6]+T[8]+T[10]+T[12]) = 2))
|
|
Pass[4] = (T[4] = ((not T[5]) or (T[6] and T[7])))
|
|
Pass[5] = (T[5] = ((not T[2]) and (not T[3]) and (not T[4])))
|
|
Pass[6] = (T[6] = ((T[1]+T[3]+T[5]+T[7]+T[9]+T[11]) = 4))
|
|
Pass[7] = (T[7] = (T[2] != T[3])) # XOR replacement
|
|
Pass[8] = (T[8] = ((not T[7]) or (T[5] and T[6])))
|
|
Pass[9] = (T[9] = (sum_range(T, 1, 6) = 3))
|
|
Pass[10] = (T[10] = (T[11] and T[12]))
|
|
Pass[11] = (T[11] = (sum_range(T, 7, 9) = 1))
|
|
Pass[12] = (T[12] = (sum_range(T, 1, 11) = 4))
|
|
|
|
# 3. Check if all statements pass
|
|
totalPass = 0
|
|
for p in Pass totalPass += p next
|
|
|
|
if totalPass = 12
|
|
see "Solution! True statements: "
|
|
for i = 1 to 12
|
|
if T[i] = 1 see "" + i + " " ok
|
|
next
|
|
see nl
|
|
ok
|
|
next
|
|
|
|
# Helper function to sum elements in a specific range
|
|
func sum_range lst, start, stop
|
|
val = 0
|
|
for i = start to stop
|
|
val += lst[i]
|
|
next
|
|
return val
|