summaryrefslogtreecommitdiff
path: root/projects/project3_kenken/KCage.java
diff options
context:
space:
mode:
authorAlexander Pickering <alexandermpickering@gmail.com>2017-02-06 11:41:36 -0500
committerAlexander Pickering <alexandermpickering@gmail.com>2017-02-06 11:41:36 -0500
commit89cdf3efb49335e7c07a68a5a64657eeec2288a6 (patch)
treecdc0fd8165e65b1637fa54cac11c932acefc8a89 /projects/project3_kenken/KCage.java
downloadcoe0445-89cdf3efb49335e7c07a68a5a64657eeec2288a6.tar.gz
coe0445-89cdf3efb49335e7c07a68a5a64657eeec2288a6.tar.bz2
coe0445-89cdf3efb49335e7c07a68a5a64657eeec2288a6.zip
Inital commitHEADmaster
Diffstat (limited to 'projects/project3_kenken/KCage.java')
-rw-r--r--projects/project3_kenken/KCage.java200
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