62 unsigned int distance0,
unsigned int size0)
64 _bits(
"-bits",
"word size in bits",bits0),
65 _distance(
"-distance",
"minimum distance",distance0),
66 _size(
"-size",
"number of symbols",size0) {
67 add(_bits); add(_distance); add(_size);
71 unsigned int bits(
void)
const {
return _bits.
value(); }
75 unsigned int size(
void)
const {
return _size.
value(); }
98 x(*this,opt.
size(),
IntSet::empty,1,opt.bits()) {
100 if (opt.
trace() != 0)
105 for (
int i=x.
size();
i--;)
106 cx[
i] =
expr(*
this, -x[
i]);
108 for (
int i=0; i<x.
size(); i++)
109 for (
int j=i+1; j<x.
size(); j++)
120 for (
int i=0;
i<x.
size();
i++) {
121 os <<
"\t[" <<
i <<
"] = " << x[
i] << std::endl;
127 x.
update(*
this, share, s.x);
132 return new Hamming(share,*
this);
143 opt.
parse(argc,argv);
144 Script::run<Hamming,DFS,HammingOptions>(
opt);
unsigned int size(void) const
Return number of symbols.
virtual void print(std::ostream &os) const
Print solution.
unsigned int distance(void) const
Return minimum distance.
Options for Hamming problems
void branch(Home home, const FloatVarArgs &x, FloatVarBranch vars, FloatValBranch vals, FloatBranchFilter bf, FloatVarValPrint vvp)
Branch over x with variable selection vars and value selection vals.
int size(void) const
Return size of array (number of elements)
SetVarBranch SET_VAR_NONE(void)
Parametric base-class for scripts.
void value(unsigned int v)
Set default value to v.
void update(Space &, bool share, VarArray< Var > &a)
Update array to be a clone of array a.
Gecode::IntArgs i(4, 1, 2, 3, 4)
void trace(int f)
Set trace flags.
unsigned int size(I &i)
Size of all ranges of range iterator i.
SetValBranch SET_VAL_MIN_INC(void)
Hamming(const HammingOptions &opt)
Actual model.
BoolVar expr(Home home, const BoolExpr &e, IntPropLevel ipl)
Post Boolean expression and return its value.
LinIntExpr cardinality(const SetExpr &e)
Cardinality of set expression.
void parse(int &argc, char *argv[])
Parse options from arguments argv (number is argc)
virtual Space * copy(bool share)
Copy during cloning.
int main(int argc, char *argv[])
Main-function.
void rel(Home home, FloatVar x0, FloatRelType frt, FloatVal n)
Propagates .
Post propagator for SetVar x
void trace(Home home, const FloatVarArgs &x, TraceFilter tf, int te, FloatTracer &t)
Create a tracer for float variables.
Gecode toplevel namespace
Hamming(bool share, Hamming &s)
Constructor for copying s.
unsigned int bits(void) const
Return number of bits.
Example: Generating Hamming codes
HammingOptions(const char *s, unsigned int bits0, unsigned int distance0, unsigned int size0)
Initialize options for example with name s.