56 void parse(
int& argc,
char* argv[]) {
66 std::cerr <<
"\t(unsigned int) default: " <<
n << std::endl
67 <<
"\t\tparameter n" << std::endl
68 <<
"\t(unsigned int) default: " <<
k << std::endl
69 <<
"\t\tparameter k" << std::endl;
96 switch (opt.propagation()) {
100 IntVarArgs pv(*this,k*n,0,k*n-1);
101 Matrix<IntVarArgs> p(pv,n,k);
113 for (int i=0; i<n; i++)
114 for (int j=0; j<k-1; j++)
115 rel(*this, p(i,j)+i+2 == p(i,j+1));
117 distinct(*this, pv, opt.ipl());
120 for (int i=0; i<n; i++)
121 for (int j=0; j<k; j++)
122 element(*this, y, p(i,j), i+1);
128 for (int v=2; v<=n; v++)
130 for (int v=1; v<=n; v++) {
135 extensional(*this, y, *ra+rv+(ra(v,v)+rv)(k-1,k-1)+*ra);
146 for (
int i=0; i<
n*
k; i++)
153 for (
int v=1; v<=
n; v++)
155 *r0 + r1 + (r0(v,v) + r1)(
k-1,
k-1) + *r0);
168 virtual void print(std::ostream& os)
const {
169 os <<
"\t" <<
y << std::endl;
175 y.update(*
this, l.
y);
199 "extensional-channel");
200 opt.
parse(argc, argv);
202 std::cerr <<
"k must be at least 1!" << std::endl;
206 std::cerr <<
"n must be at least k!" << std::endl;
virtual void help(void)
Print help text.
void parse(int &argc, char *argv[])
Parse options from arguments argv (number is argc)
Passing Boolean variables.
static void run(const Options &opt, Script *s=NULL)
Matrix-interface for arrays.
Options(const char *s)
Initialize options for script with name s.
Regular expressions over integer values.
Options taking two additional parameters.
LangfordNumberOptions(const char *s, int k0, int n0)
Parameters to be given on the command line Initialize options for example with name s.
void parse(int &argc, char *argv[])
Parse options from arguments argv (number is argc)
virtual void help(void)
Print help message.
IntVarArray y
Sequence variables.
int main(int argc, char *argv[])
Main-function.
LangfordNumber(const LangfordNumberOptions &opt)
Construct model.
virtual void print(std::ostream &os) const
Print solution.
virtual Space * copy(void)
Copy during cloning.
LangfordNumber(LangfordNumber &l)
Constructor for cloning l.
@ PROP_REIFIED
Use reified constraints.
@ PROP_EXTENSIONAL
Use extensional constraints.
@ PROP_EXTENSIONAL_CHANNEL
Use extensional and channel constraints.
void parse(int argc, char *argv[])
Parse commandline arguments.
Driver::ScriptBase< Driver::IgnoreStepOption< Space > > Script
Base-class for scripts.
void branch(Home home, const FloatVarArgs &x, FloatVarBranch vars, FloatValBranch vals, FloatBranchFilter bf=nullptr, FloatVarValPrint vvp=nullptr)
Branch over x with variable selection vars and value selection vals.
void rel(Home home, FloatVar x0, FloatRelType frt, FloatVar x1)
Post propagator for .
void extensional(Home home, const IntVarArgs &x, DFA d, IntPropLevel ipl=IPL_DEF)
Post domain consistent propagator for extensional constraint described by a DFA.
@ IPL_DOM
Domain propagation Options: basic versus advanced propagation.
Gecode toplevel namespace
void channel(Home home, FloatVar x0, IntVar x1)
Post propagator for channeling a float and an integer variable .
IntValBranch INT_VAL_MAX(void)
Select largest value.
Post propagator for SetVar SetOpType SetVar y
IntVarBranch INT_VAR_SIZE_MIN(BranchTbl tbl=nullptr)
Select variable with smallest domain size.