import java.util.*; import java.io.*; class Test { // Set the following class constants to true to test the corresponding problem public static final boolean TEST_6 = false; public static final boolean TEST_7 = false; public static final boolean TEST_8 = false; // ENTER YOUR SOLUTION HERE: public static double yardSale(Scanner console, double budget) { return -1; } // ENTER YOUR SOLUTION HERE: public static void randomPattern(int size) { } // ENTER YOUR SOLUTION HERE: public static int collapseDigits(int n) { return -1; } // YOU CAN IGNORE ALL THE FOLLOWING CODE... public static void main(String[] args) { if (TEST_6) { /* yardSale tests */ Scanner input = new Scanner("8.75 2 11.5 3 5.1 5 6.95 2 0.75 8"); double remainingMoney = yardSale(input, 50.75); // Test 6.1 System.check(6.1, 1.75, "yardSale(console, 50.75)"); input = new Scanner(""); remainingMoney = yardSale(input, 4.50); // Test 6.2 System.check(6.2, 4.5, "yardSale(console, 4.5)"); } if (TEST_7) { /* randomPattern tests */ randomPattern(4); // Test 7.1 System.check(7.1, -1, "randomPatten(4)"); randomPattern(10); // Test 7.2 System.check(7.2, -1, "randomPattern(10)"); } if (TEST_8) { /* collapseDigits tests */ int returnVal = collapseDigits(44223553); // Test 8.1 System.check(8.1, returnVal, "collapseDigits(44223553)"); returnVal = collapseDigits(346623); // Test 8.2 System.check(8.2, returnVal, "collapseDigits(346623)"); returnVal = collapseDigits(14436344); // Test 8.3 System.check(8.3, returnVal, "collapseDigits(14436344)"); returnVal = collapseDigits(121212); // Test 8.4 System.check(8.4, returnVal, "collapseDigits(121212)"); returnVal = collapseDigits(0); // Test 8.5 System.check(8.5, returnVal, "collapseDigits(0)"); returnVal = collapseDigits(8); // Test 8.6 System.check(8.6, returnVal, "collapseDigits(8)"); returnVal = collapseDigits(44); // Test 8.7 System.check(8.7, returnVal, "collapseDigits(44)"); returnVal = collapseDigits(22005); // Test 8.8 System.check(8.8, returnVal, "collapseDigits(22005)"); } } static class System { static class out { static String output = ""; static void println() { output += "\n"; } static void println(Object o) { print(o); println(); } static void print(Object o) { output += o.toString(); } } static boolean check(double test, double returnVal, String call) { java.lang.System.out.println("Test " + test + ": " + call); boolean outputC = true; boolean returnC = true; if (outputs.containsKey(test)) { java.lang.System.out.print("Output: "); outputC = checkOutput(outputs.get(test)); } if (test > 8 && test8Returns.containsKey(test)) { java.lang.System.out.print("Return: "); returnC = checkIntReturn(test8Returns.get(test), (int) returnVal); } else if (test > 6 && test6Returns.containsKey(test)) { java.lang.System.out.print("Return: "); returnC = checkDoubleReturn(test6Returns.get(test), returnVal); } if (outputC && returnC) { java.lang.System.out.println("PASSED!"); } else { java.lang.System.out.println("FAILED"); } java.lang.System.out.println(); return outputC && returnC; } static boolean checkIntReturn(int returnExpect, int returnActual) { boolean passed = returnExpect == returnActual; if (passed) { java.lang.System.out.println("correct"); } else { java.lang.System.out.println("incorrect"); java.lang.System.out.println("You got: " + returnActual); java.lang.System.out.println("Should be: " + returnExpect); } return passed; } static boolean checkDoubleReturn(double returnExpect, double returnActual) { boolean passed = returnExpect + 0.005 >= returnActual && returnExpect - 0.005 <= returnActual; if (passed) { java.lang.System.out.println("correct"); } else { java.lang.System.out.println("incorrect"); java.lang.System.out.println("You got: " + returnActual); java.lang.System.out.println("Should be: " + returnExpect); } return passed; } static boolean checkOutput(String result) { if (!result.equals(out.output)) { java.lang.System.out.println("incorrect"); java.lang.System.out.println("You got: "); java.lang.System.out.println(out.output); java.lang.System.out.println("Should be: "); java.lang.System.out.println(result); out.output = ""; return false; } else { java.lang.System.out.println("CORRECT"); out.output = ""; return true; } } } static final Map outputs = new HashMap() {{ put(6.1, "Price? 8.75\nQuantity? 2\nWhat a deal! I'll buy it.\nRemaining money: " + "$33.25\n\nPrice? 11.5\nQuantity? 3\nRemaining money: $33.25\n\nPrice? " + "5.1\nQuantity? 5\nWhat a deal! I'll buy it.\nRemaining money: $7.75\n" + "\nPrice? 6.95\nQuantity? 2\nRemaining money: $7.75\n\nPrice? 0.75\n" + "Quantity? 8\nWhat a deal! I'll buy it.\nRemaining money: $1.75\n\nTotal " + "quantities purchased: 15\nMost expensive purchase: $25.5\n"); put(6.2, "Total quantities purchased: 0\nMost expensive purchase: $0.0\n"); put(7.1, "\\-\\-\\-/\n\\-\\-/-/\n\\-/-/-/\n\\-/-/-/\n"); put(7.2, "\\-\\-\\-\\-\\-\\-\\-\\-\\-/\n\\-\\-\\-\\-/-/-/-/-/-/\n\\-\\-\\" + "-\\-\\-\\-\\-\\-/-/\n\\-\\-/-/-/-/-/-/-/-/\n\\-\\-\\-\\-\\-\\-/" + "-/-/-/\n\\-\\-\\-\\-\\-\\-\\-\\-\\-/\n\\-\\-\\-\\-/-/-/-/-/-/\n" + "\\-\\-\\-\\-\\-\\-\\-\\-\\-/\n\\-\\-\\-\\-\\-\\-\\-/-/-/\n\\-\\" + "-\\-/-/-/-/-/-/-/\n"); }}; static final Map test6Returns = new HashMap() {{ put(6.1, 1.75); put(6.2, 4.5); }}; static final Map test8Returns = new HashMap() {{ put(8.1, 42353); put(8.2, 34623); put(8.3, 143634); put(8.4, 121212); put(8.5, 0); put(8.6, 8); put(8.7, 4); put(8.8, 205); }}; } class Random { static int seed = 20; java.util.Random r; public Random() { r = new java.util.Random(seed++); } public int nextInt(int range) { return r.nextInt(range); } public double nextDouble() { java.lang.System.out.println("This testing program won't work with nextDouble solutions."); java.lang.System.out.println("Run your code manually to see if your output looks correct."); return r.nextDouble(); } } class Scanner { java.util.Scanner console; public Scanner(String source) { console = new java.util.Scanner(source); } public Scanner(InputStream source) { java.lang.System.out.println("You should not be creating your own Scanner."); java.lang.System.out.println("This testing program does not support Scanners created on System.in"); console = new java.util.Scanner(source); } public int nextInt() { int value = console.nextInt(); Test.System.out.println(value); return value; } public double nextDouble() { Double value = console.nextDouble(); Test.System.out.println(value); return value; } public String next() { String value = console.next(); Test.System.out.println(value); return value; } public String nextLine() { String value = console.nextLine(); Test.System.out.println(value); return value; } }