Advertisement
mark79

Java Fundamentals - Treasure Hunt

Aug 19th, 2019
509
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 2.20 KB | None | 0 0
  1. import java.util.Arrays;
  2. import java.util.List;
  3. import java.util.Scanner;
  4. import java.util.stream.Collectors;
  5.  
  6. public class TreasureHunt {
  7.     public static void main(String[] args) {
  8.         Scanner scanner = new Scanner(System.in);
  9.  
  10.         List<String> treasure = Arrays.stream(scanner.nextLine().split("\\|")).collect(Collectors.toList());
  11.  
  12.         String input = scanner.nextLine();
  13.         while (!input.equals("Yohoho!")) {
  14.  
  15.             String[] tokens = input.split("\\s+");
  16.             String command = tokens[0];
  17.             switch (command) {
  18.                 case "Loot": {
  19.                     for (int i = 1; i < tokens.length; i++) {
  20.                         if (!treasure.contains(tokens[i])) {
  21.                             treasure.add(0, tokens[i]);
  22.                         }
  23.                     }
  24.                 }
  25.                 break;
  26.                 case "Drop": {
  27.                     int index = Integer.parseInt(tokens[1]);
  28.                     if (isIndexValid(index, treasure)) {
  29.                         treasure.add(treasure.get(index));
  30.                         treasure.remove(index);
  31.                     }
  32.                 }
  33.                 break;
  34.                 case "Steal": {
  35.                     int count = Integer.parseInt(tokens[1]);
  36.                     int min = Math.min(count, treasure.size());
  37.                     List<String> stolenTreasure = treasure.stream().skip(treasure.size() - min).collect(Collectors.toList());
  38.                     treasure = treasure.stream().limit(treasure.size() - min).collect(Collectors.toList());
  39.                     System.out.println(String.join(", ", stolenTreasure));
  40.                 }
  41.                 break;
  42.             }
  43.  
  44.             input = scanner.nextLine();
  45.         }
  46.  
  47.         if (treasure.size() > 0) {
  48.             double avgTreasure = treasure.stream().mapToInt(String::length).average().getAsDouble();
  49.             System.out.printf("Average treasure gain: %.2f pirate credits.", avgTreasure);
  50.         } else {
  51.             System.out.println("Failed treasure hunt.");
  52.         }
  53.     }
  54.  
  55.     private static boolean isIndexValid(int index, List<String> treasure) {
  56.         return index >= 0 && index < treasure.size();
  57.     }
  58. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement