import static org.junit.jupiter.api.Assertions.assertArrayEquals; import java.util.Arrays; import java.util.Random; import org.junit.jupiter.api.Test; class SolutionTest { @Test void TestSample() { assertArrayEquals(new String[][]{ {"2", "+", "3", "=", "5"}, {"+", " ", "+", " ", "+"}, {"4", "+", "1", "=", "5"}, {"+", " ", "+", " ", "+"}, {"6", "+", "2", "=", "8"} }, CrossMath.solve(new String[][]{ {"2", "+", "3", "=", "C"}, {"+", " ", "+", " ", "+"}, {"A", "+", "1", "=", "5"}, {"+", " ", "+", " ", "+"}, {"6", "+", "B", "=", "8"} })); assertArrayEquals(new String[][]{ {"9", "-", "3", "=", "6"}, {"-", " ", "-", " ", "-"}, {"7", "-", "2", "=", "5"}, {"=", " ", "=", " ", "="}, {"2", "-", "1", "=", "1"} }, CrossMath.solve(new String[][]{ {"9", "-", "3", "=", "6"}, {"-", " ", "-", " ", "-"}, {"A", "-", "2", "=", "5"}, {"=", " ", "=", " ", "="}, {"B", "-", "1", "=", "C"} })); assertArrayEquals(new String[][]{ {"1", "+", "3", "=", "4"}, {"+", " ", "-", " ", "+"}, {"3", "-", "3", "=", "0"}, {"=", " ", "=", " ", "="}, {"4", "+", "0", "=", "8"} }, CrossMath.solve(new String[][]{ {"1", "+", "3", "=", "4"}, {"+", " ", "-", " ", "+"}, {"A", "-", "3", "=", "0"}, {"=", " ", "=", " ", "="}, {"B", "+", "C", "=", "8"} })); assertArrayEquals(new String[][]{ {"2", "*", "3", "=", "6"}, {"*", " ", "*", " ", "*"}, {"4", "*", "2", "=", "8"}, {"=", " ", "=", " ", "="}, {"8", "*", "6", "=", "48"} }, CrossMath.solve(new String[][]{ {"2", "*", "3", "=", "C"}, {"*", " ", "*", " ", "*"}, {"A", "*", "2", "=", "8"}, {"=", " ", "=", " ", "="}, {"8", "*", "B", "=", "48"} })); assertArrayEquals(new String[][]{ {"48", "/", "2", "=", "24"}, {"/", " ", "/", " ", "/"}, {"24", "/", "2", "=", "12"}, {"=", " ", "=", " ", "="}, {"12", "/", "2", "=", "6"} }, CrossMath.solve(new String[][]{ {"48", "/", "C", "=", "24"}, {"/", " ", "/", " ", "/"}, {"24", "/", "B", "=", "12"}, {"=", " ", "=", " ", "="}, {"A", "/", "2", "=", "6"} })); } @Test void TestBasic() { assertArrayEquals(new String[][]{ {"24", "/", "3", "=", "8"}, {"-", " ", "*", " ", "*"}, {"16", "-", "4", "=", "12"}, {"=", " ", "=", " ", "="}, {"8", "*", "12", "=", "96"} }, CrossMath.solve(new String[][]{ {"24", "/", "3", "=", "8"}, {"-", " ", "*", " ", "*"}, {"A", "-", "4", "=", "C"}, {"=", " ", "=", " ", "="}, {"8", "*", "B", "=", "96"} })); assertArrayEquals(new String[][]{ {"1", "/", "1", "=", "1"}, {"/", " ", "/", " ", "/"}, {"1", "/", "1", "=", "1"}, {"=", " ", "=", " ", "="}, {"1", "/", "1", "=", "1"} }, CrossMath.solve(new String[][]{ {"1", "/", "1", "=", "C"}, {"/", " ", "/", " ", "/"}, {"1", "/", "A", "=", "1"}, {"=", " ", "=", " ", "="}, {"B", "/", "1", "=", "1"} })); assertArrayEquals(new String[][]{ {"1", "+", "5", "=", "6"}, {"+", " ", "-", " ", "+"}, {"7", "-", "3", "=", "4"}, {"=", " ", "=", " ", "="}, {"8", "+", "2", "=", "10"} }, CrossMath.solve(new String[][]{ {"1", "+", "A", "=", "6"}, {"+", " ", "-", " ", "+"}, {"7", "-", "3", "=", "C"}, {"=", " ", "=", " ", "="}, {"B", "+", "2", "=", "10"} })); assertArrayEquals(new String[][]{ {"1", "+", "3", "=", "4"}, {"+", " ", "-", " ", "+"}, {"6", "-", "3", "=", "3"}, {"=", " ", "=", " ", "="}, {"7", "+", "0", "=", "7"} }, CrossMath.solve(new String[][]{ {"1", "+", "A", "=", "4"}, {"+", " ", "-", " ", "+"}, {"6", "-", "B", "=", "3"}, {"=", " ", "=", " ", "="}, {"7", "+", "C", "=", "7"} })); } @Test void cerosTest() { String[][] unsolved = new String[][] { {"0","+","0","=","B"}, {"*"," ","-"," ","+"}, {"A","-","0","=","D"}, {"="," ","="," ","="}, {"0","+","C","=","0"} }; String[][] expected = new String[][] { {"0","+","0","=","0"}, {"*"," ","-"," ","+"}, {"0","-","0","=","0"}, {"="," ","="," ","="}, {"0","+","0","=","0"} }; assertArrayEquals(expected, CrossMath.solve(unsolved)); } @Test void oneTest() { String[][] unsolved = new String[][] { {"1","+","A","=","1"}, {"*"," ","+"," ","*"}, {"1","-","1","=","0"}, {"="," ","="," ","="}, {"1","-","B","=","0"} }; String[][] expected = new String[][] { {"1","+","0","=","1"}, {"*"," ","+"," ","*"}, {"1","-","1","=","0"}, {"="," ","="," ","="}, {"1","-","1","=","0"} }; assertArrayEquals(expected, CrossMath.solve(unsolved)); } @Test void TestRandomA() { for(int z = 0; z < 100; z++) { String[][] board = generatePlusMinusMultiDiv(); String[][] end = generatePlusMinusMultiDiv(); for(int i = 0; i < end.length; i++) { end[i] = board[i].clone(); } for(int i = 0; i < board.length; i++) { for(int k = 0; k < board[i].length; k++) { end[i][k] = board[i][k]; } } board = incognitaCreator(board); System.out.println(Arrays.deepToString(board)); System.out.println(Arrays.deepToString(end)); assertArrayEquals(end, CrossMath.solve(board)); } } @Test void TestRandomB(){ for(int i = 0; i < 100; i++){ String[][] expected = generateSol(); String[][] input = incognitaCreator(expected); assertArrayEquals(expected,input); } } public static String[][] generateSol(){ int num1 = new Random().nextInt(1,100); int num2 = new Random().nextInt(1,100); int corners = num1 * num2; String[][] solution = new String[5][5]; for(int y = 0; y < solution.length; y++) for(int x = 0; x < solution[y].length; x++) solution[y][x] = " "; for(int i = 0; i < solution.length; i +=2) { solution[i][solution.length-2] = "="; solution[solution.length-2][i] = "="; } if (new Random().nextBoolean()) { solution[0][0] = String.valueOf(num1); solution[solution.length-1][solution.length-1]= String.valueOf(num2); solution[0][solution.length-1] = String.valueOf(num1*num2); solution[solution.length-1][0] = String.valueOf(num1*num2); } else { solution[0][solution.length-1] = String.valueOf(num1); solution[solution.length-1][0] = String.valueOf(num2); solution[0][0] = String.valueOf(num1*num2); solution[solution.length-1][solution.length-1] = String.valueOf(num1*num2); } if (Integer.parseInt(solution[0][0]) > Integer.parseInt(solution[0][solution.length-1])) { solution[0][1] = "/"; solution[0][2] = String.valueOf(Integer.parseInt(solution[0][0])/Integer.parseInt(solution[0][solution.length-1])); } else { solution[0][1] = "*"; solution[0][2] = String.valueOf(Integer.parseInt(solution[0][solution.length-1])/Integer.parseInt(solution[0][0])); } if (Integer.parseInt(solution[solution.length-1][0]) > Integer.parseInt(solution[solution.length-1][solution.length-1])) { solution[solution.length-1][1] = "/"; solution[solution.length-1][2] = String.valueOf(Integer.parseInt(solution[solution.length-1][0])/Integer.parseInt(solution[solution.length-1][solution.length-1])); } else { solution[solution.length-1][1] = "*"; solution[solution.length-1][2] = String.valueOf(Integer.parseInt(solution[solution.length-1][solution.length-1])/Integer.parseInt(solution[solution.length-1][0])); } if (Integer.parseInt(solution[0][0]) > Integer.parseInt(solution[solution.length-1][0])) { solution[1][0] = "-"; solution[2][0] = String.valueOf(Integer.parseInt(solution[0][0])-Integer.parseInt(solution[solution.length-1][0])); } else { solution[1][0] = "+"; solution[2][0] = String.valueOf(Integer.parseInt(solution[solution.length-1][0])-Integer.parseInt(solution[0][0])); } if (Integer.parseInt(solution[0][solution.length-1]) > Integer.parseInt(solution[solution.length-1][solution.length-1])) { solution[1][solution.length-1] = "-"; solution[2][solution.length-1] = String.valueOf(Integer.parseInt(solution[0][solution.length-1])-Integer.parseInt(solution[solution.length-1][solution.length-1])); } else { solution[1][solution.length-1] = "+"; solution[2][solution.length-1] = String.valueOf(Integer.parseInt(solution[solution.length-1][solution.length-1])-Integer.parseInt(solution[0][solution.length-1])); } if (Integer.parseInt(solution[0][2]) > Integer.parseInt(solution[solution.length-1][2])) { solution[1][2] = "-"; solution[2][2] = String.valueOf(Integer.parseInt(solution[0][2])-Integer.parseInt(solution[solution.length-1][2])); } else { solution[1][2] = "+"; solution[2][2] = String.valueOf(Integer.parseInt(solution[solution.length-1][2])-Integer.parseInt(solution[0][2])); } if (Integer.parseInt(solution[2][0]) > Integer.parseInt(solution[2][solution.length-1])) { solution[2][1] = "-"; } else { solution[2][1] = "+"; } return solution; } public static String[][] generatePlusMinusMultiDiv() { Random r = new Random(); String[][] moss = new String[5][5]; if(r.nextInt(2) == 1) { int mult = r.nextInt(5)+1; int base = r.nextInt(5)+5; int num = base*mult; if(base > mult) { moss[1][2] = "+"; moss[2][1] = "+"; }else { moss[1][2] = "-"; moss[2][1] = "-"; } moss[0][0] = String.valueOf(base); moss[0][1] = "+"; moss[0][2] = String.valueOf(num-base); moss[0][3] = "="; moss[0][4] = String.valueOf(num); moss[1][0] = "*"; moss[1][1] = " "; moss[1][3] = " "; moss[1][4] = "/"; moss[2][0] = String.valueOf(mult); moss[2][2] = String.valueOf(Math.abs(base-mult)); moss[2][3] = "="; moss[2][4] = String.valueOf(base); moss[3][0] = "="; moss[3][1] = " "; moss[3][2] = "="; moss[3][3] = " "; moss[3][4] = "="; moss[4][0] = String.valueOf(num); moss[4][1] = "-"; moss[4][2] = String.valueOf(num-mult); moss[4][3] = "="; moss[4][4] = String.valueOf(mult); }else { int mult = r.nextInt(9)+1; int base = r.nextInt(9)+1; int num = base*mult; if(base < mult) { moss[1][2] = "-"; moss[2][1] = "+"; }else { moss[1][2] = "+"; moss[2][1] = "-"; } moss[0][0] = String.valueOf(num); moss[0][1] = "-"; moss[0][2] = String.valueOf(num-base); moss[0][3] = "="; moss[0][4] = String.valueOf(base); moss[1][0] = "/"; moss[1][1] = " "; moss[1][3] = " "; moss[1][4] = "*"; moss[2][0] = String.valueOf(base); moss[2][2] = String.valueOf(Math.abs(base-mult)); moss[2][3] = "="; moss[2][4] = String.valueOf(mult); moss[3][0] = "="; moss[3][1] = " "; moss[3][2] = "="; moss[3][3] = " "; moss[3][4] = "="; moss[4][0] = String.valueOf(mult); moss[4][1] = "+"; moss[4][2] = String.valueOf(num-mult); moss[4][3] = "="; moss[4][4] = String.valueOf(num); } return moss; } public static String[][] incognitaCreator(String[][] moss) { String[] arr = {"A","B","C"}; Random r = new Random(); for(String a : arr) { moss[r.nextInt(3)*2][r.nextInt(3)*2] = a; } return moss; } }
- import static org.junit.jupiter.api.Assertions.assertArrayEquals;
- import java.util.Arrays;
- import java.util.Random;
- import org.junit.jupiter.api.Test;
- class SolutionTest {
- @Test
void TestSample() {assertArrayEquals(new String[][]{{"2", "+", "3", "=", "5"},{"+", " ", "+", " ", "+"},{"4", "+", "1", "=", "5"},{"+", " ", "+", " ", "+"},{"6", "+", "2", "=", "8"}}, CrossMath.solve(new String[][]{{"2", "+", "3", "=", "C"},{"+", " ", "+", " ", "+"},{"A", "+", "1", "=", "5"},{"+", " ", "+", " ", "+"},{"6", "+", "B", "=", "8"}}));assertArrayEquals(new String[][]{{"9", "-", "3", "=", "6"},{"-", " ", "-", " ", "-"},{"7", "-", "2", "=", "5"},{"=", " ", "=", " ", "="},{"2", "-", "1", "=", "1"}}, CrossMath.solve(new String[][]{{"9", "-", "3", "=", "6"},{"-", " ", "-", " ", "-"},{"A", "-", "2", "=", "5"},{"=", " ", "=", " ", "="},{"B", "-", "1", "=", "C"}}));assertArrayEquals(new String[][]{{"1", "+", "3", "=", "4"},{"+", " ", "-", " ", "+"},{"3", "-", "3", "=", "0"},{"=", " ", "=", " ", "="},{"4", "+", "0", "=", "8"}}, CrossMath.solve(new String[][]{{"1", "+", "3", "=", "4"},{"+", " ", "-", " ", "+"},{"A", "-", "3", "=", "0"},{"=", " ", "=", " ", "="},{"B", "+", "C", "=", "8"}}));- void TestSample() {
- assertArrayEquals(new String[][]{
{"2", "*", "3", "=", "6"},{"*", " ", "*", " ", "*"},{"4", "*", "2", "=", "8"},{"=", " ", "=", " ", "="},{"8", "*", "6", "=", "48"}}, CrossMath.solve(new String[][]{{"2", "*", "3", "=", "C"},{"*", " ", "*", " ", "*"},{"A", "*", "2", "=", "8"},{"=", " ", "=", " ", "="},{"8", "*", "B", "=", "48"}}));assertArrayEquals(new String[][]{{"48", "/", "2", "=", "24"},{"/", " ", "/", " ", "/"},{"24", "/", "2", "=", "12"},{"=", " ", "=", " ", "="},{"12", "/", "2", "=", "6"}}, CrossMath.solve(new String[][]{{"48", "/", "C", "=", "24"},{"/", " ", "/", " ", "/"},{"24", "/", "B", "=", "12"},{"=", " ", "=", " ", "="},{"A", "/", "2", "=", "6"}}));}- {"2", "+", "3", "=", "5"},
- {"+", " ", "+", " ", "+"},
- {"4", "+", "1", "=", "5"},
- {"+", " ", "+", " ", "+"},
- {"6", "+", "2", "=", "8"}
- }, CrossMath.solve(new String[][]{
- {"2", "+", "3", "=", "C"},
- {"+", " ", "+", " ", "+"},
- {"A", "+", "1", "=", "5"},
- {"+", " ", "+", " ", "+"},
- {"6", "+", "B", "=", "8"}
- }));
@Testvoid TestBasic() {assertArrayEquals(new String[][]{{"24", "/", "3", "=", "8"},{"-", " ", "*", " ", "*"},{"16", "-", "4", "=", "12"},{"=", " ", "=", " ", "="},{"8", "*", "12", "=", "96"}}, CrossMath.solve(new String[][]{{"24", "/", "3", "=", "8"},{"-", " ", "*", " ", "*"},{"A", "-", "4", "=", "C"},{"=", " ", "=", " ", "="},{"8", "*", "B", "=", "96"}}));- assertArrayEquals(new String[][]{
- {"9", "-", "3", "=", "6"},
- {"-", " ", "-", " ", "-"},
- {"7", "-", "2", "=", "5"},
- {"=", " ", "=", " ", "="},
- {"2", "-", "1", "=", "1"}
- }, CrossMath.solve(new String[][]{
- {"9", "-", "3", "=", "6"},
- {"-", " ", "-", " ", "-"},
- {"A", "-", "2", "=", "5"},
- {"=", " ", "=", " ", "="},
- {"B", "-", "1", "=", "C"}
- }));
assertArrayEquals(new String[][]{{"1", "/", "1", "=", "1"},{"/", " ", "/", " ", "/"},{"1", "/", "1", "=", "1"},{"=", " ", "=", " ", "="},{"1", "/", "1", "=", "1"}}, CrossMath.solve(new String[][]{{"1", "/", "1", "=", "C"},{"/", " ", "/", " ", "/"},{"1", "/", "A", "=", "1"},{"=", " ", "=", " ", "="},{"B", "/", "1", "=", "1"}}));- assertArrayEquals(new String[][]{
- {"1", "+", "3", "=", "4"},
- {"+", " ", "-", " ", "+"},
- {"3", "-", "3", "=", "0"},
- {"=", " ", "=", " ", "="},
- {"4", "+", "0", "=", "8"}
- }, CrossMath.solve(new String[][]{
- {"1", "+", "3", "=", "4"},
- {"+", " ", "-", " ", "+"},
- {"A", "-", "3", "=", "0"},
- {"=", " ", "=", " ", "="},
- {"B", "+", "C", "=", "8"}
- }));
assertArrayEquals(new String[][]{{"1", "+", "5", "=", "6"},{"+", " ", "-", " ", "+"},{"7", "-", "3", "=", "4"},{"=", " ", "=", " ", "="},{"8", "+", "2", "=", "10"}}, CrossMath.solve(new String[][]{{"1", "+", "A", "=", "6"},{"+", " ", "-", " ", "+"},{"7", "-", "3", "=", "C"},{"=", " ", "=", " ", "="},{"B", "+", "2", "=", "10"}}));assertArrayEquals(new String[][]{{"1", "+", "3", "=", "4"},{"+", " ", "-", " ", "+"},{"6", "-", "3", "=", "3"},{"=", " ", "=", " ", "="},{"7", "+", "0", "=", "7"}}, CrossMath.solve(new String[][]{{"1", "+", "A", "=", "4"},{"+", " ", "-", " ", "+"},{"6", "-", "B", "=", "3"},{"=", " ", "=", " ", "="},{"7", "+", "C", "=", "7"}}));}- assertArrayEquals(new String[][]{
- {"2", "*", "3", "=", "6"},
- {"*", " ", "*", " ", "*"},
- {"4", "*", "2", "=", "8"},
- {"=", " ", "=", " ", "="},
- {"8", "*", "6", "=", "48"}
- }, CrossMath.solve(new String[][]{
- {"2", "*", "3", "=", "C"},
- {"*", " ", "*", " ", "*"},
- {"A", "*", "2", "=", "8"},
- {"=", " ", "=", " ", "="},
- {"8", "*", "B", "=", "48"}
- }));
- assertArrayEquals(new String[][]{
- {"48", "/", "2", "=", "24"},
- {"/", " ", "/", " ", "/"},
- {"24", "/", "2", "=", "12"},
- {"=", " ", "=", " ", "="},
- {"12", "/", "2", "=", "6"}
- }, CrossMath.solve(new String[][]{
- {"48", "/", "C", "=", "24"},
- {"/", " ", "/", " ", "/"},
- {"24", "/", "B", "=", "12"},
- {"=", " ", "=", " ", "="},
- {"A", "/", "2", "=", "6"}
- }));
- }
- @Test
- void TestBasic() {
- assertArrayEquals(new String[][]{
- {"24", "/", "3", "=", "8"},
- {"-", " ", "*", " ", "*"},
- {"16", "-", "4", "=", "12"},
- {"=", " ", "=", " ", "="},
- {"8", "*", "12", "=", "96"}
- }, CrossMath.solve(new String[][]{
- {"24", "/", "3", "=", "8"},
- {"-", " ", "*", " ", "*"},
- {"A", "-", "4", "=", "C"},
- {"=", " ", "=", " ", "="},
- {"8", "*", "B", "=", "96"}
- }));
- assertArrayEquals(new String[][]{
- {"1", "/", "1", "=", "1"},
- {"/", " ", "/", " ", "/"},
- {"1", "/", "1", "=", "1"},
- {"=", " ", "=", " ", "="},
- {"1", "/", "1", "=", "1"}
- }, CrossMath.solve(new String[][]{
- {"1", "/", "1", "=", "C"},
- {"/", " ", "/", " ", "/"},
- {"1", "/", "A", "=", "1"},
- {"=", " ", "=", " ", "="},
- {"B", "/", "1", "=", "1"}
- }));
- assertArrayEquals(new String[][]{
- {"1", "+", "5", "=", "6"},
- {"+", " ", "-", " ", "+"},
- {"7", "-", "3", "=", "4"},
- {"=", " ", "=", " ", "="},
- {"8", "+", "2", "=", "10"}
- }, CrossMath.solve(new String[][]{
- {"1", "+", "A", "=", "6"},
- {"+", " ", "-", " ", "+"},
- {"7", "-", "3", "=", "C"},
- {"=", " ", "=", " ", "="},
- {"B", "+", "2", "=", "10"}
- }));
- assertArrayEquals(new String[][]{
- {"1", "+", "3", "=", "4"},
- {"+", " ", "-", " ", "+"},
- {"6", "-", "3", "=", "3"},
- {"=", " ", "=", " ", "="},
- {"7", "+", "0", "=", "7"}
- }, CrossMath.solve(new String[][]{
- {"1", "+", "A", "=", "4"},
- {"+", " ", "-", " ", "+"},
- {"6", "-", "B", "=", "3"},
- {"=", " ", "=", " ", "="},
- {"7", "+", "C", "=", "7"}
- }));
- }
- @Test
- void cerosTest() {
- String[][] unsolved = new String[][] {
- {"0","+","0","=","B"},
- {"*"," ","-"," ","+"},
- {"A","-","0","=","D"},
- {"="," ","="," ","="},
- {"0","+","C","=","0"}
- };
- String[][] expected = new String[][] {
- {"0","+","0","=","0"},
- {"*"," ","-"," ","+"},
- {"0","-","0","=","0"},
- {"="," ","="," ","="},
- {"0","+","0","=","0"}
- };
- assertArrayEquals(expected, CrossMath.solve(unsolved));
- }
- @Test
- void oneTest() {
- String[][] unsolved = new String[][] {
- {"1","+","A","=","1"},
- {"*"," ","+"," ","*"},
- {"1","-","1","=","0"},
- {"="," ","="," ","="},
- {"1","-","B","=","0"}
- };
- String[][] expected = new String[][] {
- {"1","+","0","=","1"},
- {"*"," ","+"," ","*"},
- {"1","-","1","=","0"},
- {"="," ","="," ","="},
- {"1","-","1","=","0"}
- };
- assertArrayEquals(expected, CrossMath.solve(unsolved));
- }
- @Test
- void TestRandomA() {
- for(int z = 0; z < 100; z++) {
- String[][] board = generatePlusMinusMultiDiv();
- String[][] end = generatePlusMinusMultiDiv();
- for(int i = 0; i < end.length; i++) {
- end[i] = board[i].clone();
- }
- for(int i = 0; i < board.length; i++) {
- for(int k = 0; k < board[i].length; k++) {
- end[i][k] = board[i][k];
- }
- }
- board = incognitaCreator(board);
- System.out.println(Arrays.deepToString(board));
- System.out.println(Arrays.deepToString(end));
- assertArrayEquals(end, CrossMath.solve(board));
- }
- }
- @Test
- void TestRandomB(){
- for(int i = 0; i < 100; i++){
- String[][] expected = generateSol();
- String[][] input = incognitaCreator(expected);
- assertArrayEquals(expected,input);
- }
- }
- public static String[][] generateSol(){
- int num1 = new Random().nextInt(1,100);
- int num2 = new Random().nextInt(1,100);
- int corners = num1 * num2;
- String[][] solution = new String[5][5];
- for(int y = 0; y < solution.length; y++)
- for(int x = 0; x < solution[y].length; x++)
- solution[y][x] = " ";
- for(int i = 0; i < solution.length; i +=2) {
- solution[i][solution.length-2] = "=";
- solution[solution.length-2][i] = "=";
- }
- if (new Random().nextBoolean()) {
- solution[0][0] = String.valueOf(num1);
- solution[solution.length-1][solution.length-1]= String.valueOf(num2);
- solution[0][solution.length-1] = String.valueOf(num1*num2);
- solution[solution.length-1][0] = String.valueOf(num1*num2);
- } else {
- solution[0][solution.length-1] = String.valueOf(num1);
- solution[solution.length-1][0] = String.valueOf(num2);
- solution[0][0] = String.valueOf(num1*num2);
- solution[solution.length-1][solution.length-1] = String.valueOf(num1*num2);
- }
- if (Integer.parseInt(solution[0][0]) > Integer.parseInt(solution[0][solution.length-1])) {
- solution[0][1] = "/";
- solution[0][2] = String.valueOf(Integer.parseInt(solution[0][0])/Integer.parseInt(solution[0][solution.length-1]));
- } else {
- solution[0][1] = "*";
- solution[0][2] = String.valueOf(Integer.parseInt(solution[0][solution.length-1])/Integer.parseInt(solution[0][0]));
- }
- if (Integer.parseInt(solution[solution.length-1][0]) > Integer.parseInt(solution[solution.length-1][solution.length-1])) {
- solution[solution.length-1][1] = "/";
- solution[solution.length-1][2] = String.valueOf(Integer.parseInt(solution[solution.length-1][0])/Integer.parseInt(solution[solution.length-1][solution.length-1]));
- } else {
- solution[solution.length-1][1] = "*";
- solution[solution.length-1][2] = String.valueOf(Integer.parseInt(solution[solution.length-1][solution.length-1])/Integer.parseInt(solution[solution.length-1][0]));
- }
- if (Integer.parseInt(solution[0][0]) > Integer.parseInt(solution[solution.length-1][0])) {
- solution[1][0] = "-";
- solution[2][0] = String.valueOf(Integer.parseInt(solution[0][0])-Integer.parseInt(solution[solution.length-1][0]));
- } else {
- solution[1][0] = "+";
- solution[2][0] = String.valueOf(Integer.parseInt(solution[solution.length-1][0])-Integer.parseInt(solution[0][0]));
- }
- if (Integer.parseInt(solution[0][solution.length-1]) > Integer.parseInt(solution[solution.length-1][solution.length-1])) {
- solution[1][solution.length-1] = "-";
- solution[2][solution.length-1] = String.valueOf(Integer.parseInt(solution[0][solution.length-1])-Integer.parseInt(solution[solution.length-1][solution.length-1]));
- } else {
- solution[1][solution.length-1] = "+";
- solution[2][solution.length-1] = String.valueOf(Integer.parseInt(solution[solution.length-1][solution.length-1])-Integer.parseInt(solution[0][solution.length-1]));
- }
- if (Integer.parseInt(solution[0][2]) > Integer.parseInt(solution[solution.length-1][2])) {
- solution[1][2] = "-";
- solution[2][2] = String.valueOf(Integer.parseInt(solution[0][2])-Integer.parseInt(solution[solution.length-1][2]));
- } else {
- solution[1][2] = "+";
- solution[2][2] = String.valueOf(Integer.parseInt(solution[solution.length-1][2])-Integer.parseInt(solution[0][2]));
- }
- if (Integer.parseInt(solution[2][0]) > Integer.parseInt(solution[2][solution.length-1])) {
- solution[2][1] = "-";
- } else {
- solution[2][1] = "+";
- }
- return solution;
- }
- public static String[][] generatePlusMinusMultiDiv() {
- Random r = new Random();
- String[][] moss = new String[5][5];
- if(r.nextInt(2) == 1) {
- int mult = r.nextInt(5)+1;
- int base = r.nextInt(5)+5;
- int num = base*mult;
- if(base > mult) {
- moss[1][2] = "+";
- moss[2][1] = "+";
- }else {
- moss[1][2] = "-";
- moss[2][1] = "-";
- }
- moss[0][0] = String.valueOf(base);
- moss[0][1] = "+";
- moss[0][2] = String.valueOf(num-base);
- moss[0][3] = "=";
- moss[0][4] = String.valueOf(num);
- moss[1][0] = "*";
- moss[1][1] = " ";
- moss[1][3] = " ";
- moss[1][4] = "/";
- moss[2][0] = String.valueOf(mult);
- moss[2][2] = String.valueOf(Math.abs(base-mult));
- moss[2][3] = "=";
- moss[2][4] = String.valueOf(base);
- moss[3][0] = "=";
- moss[3][1] = " ";
- moss[3][2] = "=";
- moss[3][3] = " ";
- moss[3][4] = "=";
- moss[4][0] = String.valueOf(num);
- moss[4][1] = "-";
- moss[4][2] = String.valueOf(num-mult);
- moss[4][3] = "=";
- moss[4][4] = String.valueOf(mult);
- }else {
- int mult = r.nextInt(9)+1;
- int base = r.nextInt(9)+1;
- int num = base*mult;
- if(base < mult) {
- moss[1][2] = "-";
- moss[2][1] = "+";
- }else {
- moss[1][2] = "+";
- moss[2][1] = "-";
- }
- moss[0][0] = String.valueOf(num);
- moss[0][1] = "-";
- moss[0][2] = String.valueOf(num-base);
- moss[0][3] = "=";
- moss[0][4] = String.valueOf(base);
- moss[1][0] = "/";
- moss[1][1] = " ";
- moss[1][3] = " ";
- moss[1][4] = "*";
- moss[2][0] = String.valueOf(base);
- moss[2][2] = String.valueOf(Math.abs(base-mult));
- moss[2][3] = "=";
- moss[2][4] = String.valueOf(mult);
- moss[3][0] = "=";
- moss[3][1] = " ";
- moss[3][2] = "=";
- moss[3][3] = " ";
- moss[3][4] = "=";
- moss[4][0] = String.valueOf(mult);
- moss[4][1] = "+";
- moss[4][2] = String.valueOf(num-mult);
- moss[4][3] = "=";
- moss[4][4] = String.valueOf(num);
- }
- return moss;
- }
- public static String[][] incognitaCreator(String[][] moss) {
- String[] arr = {"A","B","C"};
- Random r = new Random();
- for(String a : arr) {
- moss[r.nextInt(3)*2][r.nextInt(3)*2] = a;
- }
- return moss;
- }
- }