% % Hamming distance in Minizinc % % I.e. the number of bits differing in two (binary) arrays. % See http://en.wikipedia.org/wiki/Hamming_distance % % % Model created by Hakan Kjellerstrand, hakank@bonetmail.com % See also my MiniZinc page: http://www.hakank.org/minizinc % int: n = 6; % length of the arrays array[1..n] of var 0..1: a; array[1..n] of var 0..1: b; var int: diffs; % The number of differences solve satisfy; % % We can now either % - Calculate the hamming distance from two arrays % - Given the distance, generate all arrays which has the hamming distance % predicate hamming_distance(array[int] of var int: a, array[int] of var int: b, var int: d) = d = sum(i in 1..length(a)) (bool2int( a[i] != b[i])) ; constraint a = [1,1,1,1,1,1] /\ hamming_distance(a, b, diffs) /\ diffs = 2 ;