The Combination Locks Puzzle¶
In [5]:
using JuMP
m = Model()
Out[5]:
In [6]:
# x is a binary variable
# x_i,j = 1 If the i_th number on the j_th lock is selected
# x_i,j = 0 Otherwise
@defVar(m, x[i=1:6,j=1:6], Bin)
Out[6]:
In [7]:
# Model Data
LockNumbers = [ 39 6 75 88 15 57;
9 2 58 68 48 64;
29 55 16 67 8 91;
40 54 66 22 32 25;
49 1 17 41 14 30;
44 63 10 83 46 3]
Out[7]:
In [9]:
# Constraints 1-6: only 1 number selected for each lock
for i = 1:6
@addConstraint(m, sum{x[i,j], j=1:6} == 1)
end
In [11]:
# Constraint 7: Lock numbers sum to 419
@addConstraint(m, sum{LockNumbers[i,j]*x[i,j], i=1:6, j=1:6} == 419)
Out[11]:
In [12]:
print(m)
In [13]:
status = solve(m)
Out[13]:
In [36]:
if status == :Infeasible
println("Infeasible")
else
SumL = 0
for i = 1:6, j = 1:6
if getValue(x[i,j]) > 0.999
println("Lock ", i," = ", LockNumbers[i,j])
SumL += LockNumbers[i,j]
end
end
end
println("Combination Sum = ", SumL)