Beispiel #1
0
    internal static void setProblem()
    {
        net = new Network();

        // Set constraint variables
        v = new IntVariable[m][];
        for (int i = 0; i < m; i++)
        {
            v[i] = new IntVariable[n];
        }
        _vsum = new IntVariable[m][];
        for (int i2 = 0; i2 < m; i2++)
        {
            _vsum[i2] = new IntVariable[n];
        }
        _hsum = new IntVariable[m][];
        for (int i3 = 0; i3 < m; i3++)
        {
            _hsum[i3] = new IntVariable[n];
        }
        for (int i = 0; i < m; i++)
        {
            for (int j = 0; j < n; j++)
            {
                v[i][j] = null;
                if (puzzle[i][j].Equals("-"))
                {
                    v[i][j] = new IntVariable(net, 0, 1);
                }
                _vsum[i][j] = null;
                _hsum[i][j] = null;
            }
        }
        // Set constraints
        for (int i = 0; i < m; i++)
        {
            for (int j = 0; j < n; j++)
            {
                if (puzzle[i][j].Equals("-"))
                {
                    IntVariable vsum_ = vsum(i, j);
                    IntVariable hsum_ = hsum(i, j);
                    vsum_.Add(hsum_).Subtract(v[i][j]).Ge(1);
                }
                else if (puzzle[i][j].Equals("^\\d$"))
                {
                    int         sum  = Int32.Parse(puzzle[i][j]);
                    IntVariable asum = adjacentSum(i, j);
                    asum.Equals(sum);
                }
            }
        }
    }