Advertisement
Guest User

ferry solve 1

a guest
Mar 26th, 2019
91
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 1.90 KB | None | 0 0
  1.     public static String solve(ArrayList<String> carList, double ferryLength, int numCars) {
  2.  
  3.         double capacity = ferryLength;
  4.         int tripNum = 0;
  5.         String output = tripNum + " " + ":";
  6.         StringBuilder sb = new StringBuilder();
  7.         sb.append(output);
  8.  
  9.         if (numCars == 0) {
  10.             return "Day Off!";
  11.         } else {
  12.             ArrayList<String> leftBank = new ArrayList<String>();
  13.             ArrayList<String> rightBank = new ArrayList<String>();
  14.             ArrayDeque<String> boat = new ArrayDeque<String>();
  15.  
  16.             // add cars to respective banks
  17.             for (String s : carList) {
  18.                 if (s.contains("left")) {
  19.                     leftBank.add(s);
  20.                 } else {
  21.                     rightBank.add(s);
  22.                 }
  23.             }
  24.  
  25.             while (leftBank.size() != 0 && rightBank.size() != 0) {
  26.                 // check if left bank car can fit on boat
  27.                 for (int i = 0; i < leftBank.size(); i++) {
  28.                     if (capacity >= 0) {
  29.                         if (convert(getLength(leftBank.get(i))) <= capacity) {
  30.                             boat.add(leftBank.get(i));
  31.                             capacity = capacity - convert(getLength(leftBank.get(i)));
  32.                             leftBank.remove(i);
  33.                             i--;
  34.                         } else {
  35.                             tripNum++;
  36.                             for (String car : boat) {
  37.                                 sb.append(" " + getPlate(car));
  38.                                 boat.pop();
  39.                             }
  40.                             sb.append("\n");
  41.                             capacity = ferryLength;
  42.                         }
  43.                     }
  44.                 }
  45.  
  46.                 // check if right bank car can fit on boat
  47.                 for (int i = 0; i < rightBank.size(); i++) {
  48.                     if (capacity >= 0) {
  49.                         if (convert(getLength(rightBank.get(i))) <= capacity) {
  50.                             boat.add(rightBank.get(i));
  51.                             capacity = capacity - convert(getLength(rightBank.get(i)));
  52.                             rightBank.remove(i);
  53.                             i--;
  54.                         }
  55.                         // capacity is full empty boat and add to output string
  56.                     } else {
  57.                         tripNum++;
  58.                         sb.append(output);
  59.                         for (String car : boat) {
  60.                             sb.append(" " + getPlate(car));
  61.                             boat.pop();
  62.                         }
  63.                         sb.append("\n");
  64.                         capacity = ferryLength;
  65.                     }
  66.                 }
  67.             }
  68.         }
  69.         return sb.toString();
  70.     }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement