diff options
| author | Alexander Pickering <alexandermpickering@gmail.com> | 2017-02-06 11:41:36 -0500 |
|---|---|---|
| committer | Alexander Pickering <alexandermpickering@gmail.com> | 2017-02-06 11:41:36 -0500 |
| commit | 89cdf3efb49335e7c07a68a5a64657eeec2288a6 (patch) | |
| tree | cdc0fd8165e65b1637fa54cac11c932acefc8a89 /projects/project3_kenken/KCage.java | |
| download | coe0445-master.tar.gz coe0445-master.tar.bz2 coe0445-master.zip | |
Diffstat (limited to 'projects/project3_kenken/KCage.java')
| -rw-r--r-- | projects/project3_kenken/KCage.java | 200 |
1 files changed, 200 insertions, 0 deletions
diff --git a/projects/project3_kenken/KCage.java b/projects/project3_kenken/KCage.java new file mode 100644 index 0000000..dc3642c --- /dev/null +++ b/projects/project3_kenken/KCage.java @@ -0,0 +1,200 @@ + +public class KCage +{ + Cell[] cells; + int targetnumber; + Operator operator; + public KCage() + { + + } + public KCage(int tn,Operator op,Cell[] c) + { + cells = c; + targetnumber = tn; + operator = op; + } + public int getNumCells() + { + return cells.length; + } + public int getTargNumber() + { + return targetnumber; + } + public Operator getOperator() + { + return operator; + } + public Cell getCell(int i) + { + return cells[i]; + } + public boolean[] getPossibilitiesForOthers(int num) + { + boolean[] output = new boolean[num]; + if(operator == Operator.MINUS) + { + for(int i = 1; i < num; i++) + { + for(int j = 1; j < num; j++) + { + if(i-j == targetnumber || j-i == targetnumber) + { + output[i] = true; + output[j] = true; + } + } + } + } + if(operator == Operator.DIVIDE) + { + for(int i = 1; i < num; i++) + { + for(int j = 1; j < num; j++) + { + if(i/(j*1.0) == targetnumber || j/(i*1.0) == targetnumber) + { + output[i] = true; + output[j] = true; + } + } + } + } + if(operator == Operator.PLUS) + { + for(int i = 0; i < num*cells.length; i++) + { + + } + int sum = 0; + for(Cell c : cells) + { + + } + } + return output; + } + public boolean test(int xn, int yn, int num) + { + for(Cell c : cells) + { + if(c.getX() == xn && c.getY() == yn) + { + if(operator == Operator.PLUS) + { + int sum = 0; + for(Cell c2 : cells) + { + sum += c2.getNum(); + } + sum += num; + if(sum == targetnumber) + { + return true; + } + else + { + return false; + } + } + else if(operator == Operator.MINUS) + { + Cell thiscell; + Cell thatcell; + if(c == cells[0]) + { + thiscell = cells[0]; + thatcell = cells[1]; + } + else + { + thatcell = cells[0]; + thiscell = cells[1]; + } + if(thiscell.getNum() == 0 || thatcell.getNum() == 0) + { + return true; + } + if(thatcell.getNum() - num == targetnumber || num - thatcell.getNum() == targetnumber) + { + return true; + } + else + { + return false; + } + } + else if(operator == Operator.MULTIPLY) + { + int product = 1; + for(Cell c2 : cells) + { + if(c2.getNum() != 0) + product *= c2.getNum(); + } + product *= num; + if(product <= targetnumber) + { + return true; + } + else + { + return false; + } + } + else if(operator == Operator.DIVIDE) + { + Cell thiscell; + Cell thatcell; + if(c == cells[0]) + { + thiscell = cells[0]; + thatcell = cells[1]; + } + else + { + thatcell = cells[0]; + thiscell = cells[1]; + } + if(thiscell.getNum() == 0 || thatcell.getNum() == 0) + { + return true; + } + if((thatcell.getNum()*1.0)/num == targetnumber || (num*1.0)/thatcell.getNum() == targetnumber) + { + return true; + } + else + { + return false; + } + } + else if(operator == Operator.NONE) + { + if(num == targetnumber) + { + return true; + } + else + { + return false; + } + } + } + } + return false; + } + public String toString() + { + String output = "Cage(" + targetnumber + "," + operator + "){\n\t\t"; + if(cells.length == 0) + return output+"}"; + output += cells[0]; + for(int i = 1; i < cells.length; i++) + { + output += ",\n\t\t"+cells[i]; + } + return output + "\n\t}"; + } +}
\ No newline at end of file |
