summaryrefslogtreecommitdiff
path: root/labs/lab05_permutation/PermutationTester.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 /labs/lab05_permutation/PermutationTester.java
downloadcoe0445-89cdf3efb49335e7c07a68a5a64657eeec2288a6.tar.gz
coe0445-89cdf3efb49335e7c07a68a5a64657eeec2288a6.tar.bz2
coe0445-89cdf3efb49335e7c07a68a5a64657eeec2288a6.zip
Inital commitHEADmaster
Diffstat (limited to 'labs/lab05_permutation/PermutationTester.java')
-rw-r--r--labs/lab05_permutation/PermutationTester.java129
1 files changed, 129 insertions, 0 deletions
diff --git a/labs/lab05_permutation/PermutationTester.java b/labs/lab05_permutation/PermutationTester.java
new file mode 100644
index 0000000..2c56d3b
--- /dev/null
+++ b/labs/lab05_permutation/PermutationTester.java
@@ -0,0 +1,129 @@
+import java.util.ArrayList;
+
+
+public class PermutationTester
+{
+ public static void main(String[] args)
+ {
+ int point = 0;
+ ArrayList<Integer> list = new ArrayList<Integer>();
+ ArrayList<ArrayList<Integer>> result;
+
+ for(int i = 1; i <= 5; i++)
+ {
+ System.out.println("Testing permutation with " + i + " element(s)");
+ list.add(i);
+ /*Take this out*///System.out.println("[ME]Before" + list);
+ result = Permutation.permutation(list);
+ /*Take this out*///System.out.println("[ME]After" + list);
+ System.out.println("Your code said, the permutation of " + list + " is as follows:");
+ System.out.println(result);
+
+ boolean result1 = checkPermutationSize(list, result);
+ boolean result2 = checkPermutation(list, result);
+ if(result1 && result2)
+ {
+ point += 2;
+ System.out.println("Your current point is " + point + ".");
+ System.out.println();
+ }
+ else
+ {
+ System.out.println("Your current point is " + point + ".");
+ System.out.println("There is someting wrong with your method permutation().");
+ System.out.println("Fix your code and run this tester class again.");
+ break;
+ }
+ }
+ }
+
+ private static int factorial(int n)
+ {
+ if(n == 0)
+ return 1;
+ else
+ return n * factorial(n - 1);
+ }
+
+ private static boolean checkPermutation(ArrayList<Integer> list, ArrayList<ArrayList<Integer>> result)
+ {
+ int numberOfElements = list.size();
+ int numberOfResults = result.size();
+
+ System.out.print("Check the size of each element: ");
+ for(int i = 0; i < numberOfResults; i++)
+ {
+ if(result.get(i).size() != list.size())
+ {
+ System.out.println("FAIL");
+ System.out.println("Every element in your result should contains " + numberOfElements + " elements.");
+ System.out.println("But an element of your result contains " + result.get(i).size() + " elements.");
+ return false;
+ }
+ }
+
+ System.out.println("PASS");
+
+ System.out.print("Check for duplicate elements: ");
+
+ for(int i = 0; i < numberOfResults; i++)
+ {
+ ArrayList<Integer> temp = result.get(i);
+
+ for(int j = i + 1; j < numberOfResults; j++)
+ {
+ if(temp.equals(result.get(j)))
+ {
+ System.out.println("FAIL");
+ System.out.println("Your result contains duplicate items which is " + temp + ".");
+ return false;
+ }
+ }
+ }
+
+ System.out.println("PASS");
+
+ System.out.print("Check each element: ");
+ for(int i = 0; i < numberOfResults; i++)
+ {
+ ArrayList<Integer> temp = result.get(i);
+
+ for(int j = 0; j < numberOfElements; j++)
+ {
+ int aNumber = list.get(j);
+
+ if(!temp.contains(aNumber))
+ {
+ System.out.println("FAIL");
+ System.out.println("The element " + temp + " in your result does not contain every element in " + list + ".");
+ }
+ }
+ }
+
+ System.out.println("PASS");
+
+ return true;
+ }
+
+ private static boolean checkPermutationSize(ArrayList<Integer> list, ArrayList<ArrayList<Integer>> result)
+ {
+ System.out.print("Check the size of the result: ");
+
+ int numberOfElements = list.size();
+ int numberOfResults = result.size();
+
+ if(factorial(numberOfElements) != numberOfResults)
+ {
+ System.out.println("FAIL");
+ System.out.println(" The list " + list + " contains " + numberOfElements + " elements.");
+ System.out.println(" Permutation of " + list + " should contains " + factorial(numberOfElements) + "elements.");
+ System.out.println(" But your result contains " + numberOfResults + " elements.");
+ return false;
+ }
+ else
+ {
+ System.out.println("PASS");
+ return true;
+ }
+ }
+} \ No newline at end of file