1
0
This repository has been archived on 2025-03-06. You can view files and clone it, but cannot push or open issues or pull requests.
Jip J. Dekker 35a3110598 Squashed 'software/chuffed/' content from commit 2ed0c015
git-subtree-dir: software/chuffed
git-subtree-split: 2ed0c01558d2a5c49c1ce57e048d32c17adf92d3
2021-06-18 09:36:35 +10:00

40 lines
970 B
C++

#ifndef modelling_h
#define modelling_h
#include <chuffed/support/misc.h>
#include <chuffed/vars/int-var.h>
#include <chuffed/vars/bool-view.h>
void createVar(IntVar*& x, int min, int max, bool el = false);
void createVars(vec<IntVar*>& x, int n, int min, int max, bool el = false);
void createVars(vec<vec<IntVar*> >& x, int n, int m, int min, int max, bool el = false);
void createVars(vec<BoolView>& x, int n);
void createVars(vec<vec<BoolView> >& x, int n, int m);
template <class U>
void transpose(vec<vec<U> >& x, vec<vec<U> >& y) {
assert(y.size() == 0);
int n = x[0].size(), m = x.size();
y.growTo(n);
for (int i = 0; i < n; i++) {
y[i].growTo(m);
for (int j = 0; j < m; j++) {
y[i][j] = x[j][i];
}
}
}
template <class U>
void flatten(vec<vec<U> >& x, vec<U>& y) {
assert(y.size() == 0);
int n = x.size(), m = x[0].size();
y.growTo(n*m);
for (int i = 0; i < n; i++) {
for (int j = 0; j < m; j++) {
y[i*m+j] = x[i][j];
}
}
}
#endif