Advertisement
Guest User

Java - Treasure Hunt

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