// Program to test solutions to problem #9 on the cse142a final, winter 2015. // Fill in your solution to splitPairs, then compile and run the program. import java.util.*; public class FinalTest9 { public static int[] splitPairs(int[] list) { // fill in your solution here // you can also rename the parameters above } // this is the sample solution public static int[] splitPairs2(int[] list) { int half = list.length / 2; int[] result = new int[list.length]; for (int i = 0; i < list.length; i++) { if (i % 2 == 0) { result[i / 2] = list[i]; } else if (list.length % 2 == 0) { result[i / 2 + half] = list[i]; } else { result[i / 2 + half + 1] = list[i]; } } return result; } private static int count, failCount; public static final int ERRORS_MAX = 10; public static void main(String[] args) { for (int i = 0; i < 10; i++) { test(i); } if (failCount == 0) { System.out.println("passed all " + count + " tests"); } else { System.out.println("failed " + failCount + " of " + count + " tests"); } } public static void test(int n) { int[] list = new int[n]; for (int i = 0; i < n; i++) { list[i] = 2 * i; } System.out.println("testing " + Arrays.toString(list)); int[] copy = Arrays.copyOf(list, list.length); count++; int[] result1 = splitPairs2(list); int[] result2 = null; RuntimeException except = null; boolean fail = false; try { result2 = splitPairs(list); } catch (RuntimeException e) { except = e; fail = true; } if (!Arrays.equals(result1, result2) || !Arrays.equals(list, copy)) { fail = true; } if (fail) { if (!Arrays.equals(result1, result2)) { System.out.println("correct = " + Arrays.toString(result1)); if (except == null) { System.out.println("yours = " + Arrays.toString(result2)); } else { int line = except.getStackTrace()[0].getLineNumber(); System.out.println(" threw " + except + " at line #" + line); } } if (!Arrays.equals(list, copy)) { System.out.println("they changed the array"); System.out.println("list = " + Arrays.toString(list)); } failCount++; } else { System.out.println("passed"); } System.out.println(); } }