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 /labs/lab05_permutation/PermutationTester.java | |
| download | coe0445-89cdf3efb49335e7c07a68a5a64657eeec2288a6.tar.gz coe0445-89cdf3efb49335e7c07a68a5a64657eeec2288a6.tar.bz2 coe0445-89cdf3efb49335e7c07a68a5a64657eeec2288a6.zip | |
Diffstat (limited to 'labs/lab05_permutation/PermutationTester.java')
| -rw-r--r-- | labs/lab05_permutation/PermutationTester.java | 129 |
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 |
