desislava_topuzakova

02. Race

Mar 19th, 2021
1,321
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 2.27 KB | None | 0 0
  1. import java.util.*;
  2. import java.util.regex.Matcher;
  3. import java.util.regex.Pattern;
  4. import java.util.stream.Collectors;
  5.  
  6. public class demo {
  7.     public static void main(String[] args) {
  8.         Scanner scanner = new Scanner(System.in);
  9.         //Regexes
  10.         String regexName = "[A-Za-z]+";
  11.         String regexDistance = "[0-9]";
  12.         Pattern patternName = Pattern.compile(regexName);
  13.         Pattern patternDistance = Pattern.compile(regexDistance);
  14.         //"George, Peter, Bill, Tom"
  15.         List<String> racers = Arrays.stream(scanner.nextLine().split(", ")).collect(Collectors.toList());
  16.         Map<String, Integer> racersDistances = new LinkedHashMap<>();
  17.         //име -> разстояние
  18.         racers.forEach(racer -> racersDistances.put(racer, 0));
  19.         String input = scanner.nextLine();
  20.  
  21.         while(!input.equals("end of race")) {
  22.             //G4e@55or%6g6!68e!!@
  23.             //всички букви -> име на състезателя
  24.             //всички цифри -> сумираме = дистанция
  25.             Matcher matcherName = patternName.matcher(input);
  26.             StringBuilder builderName = new StringBuilder();
  27.             while(matcherName.find()) {
  28.                 builderName.append(matcherName.group());
  29.             }
  30.             String name = builderName.toString();
  31.  
  32.             int distance = 0;
  33.             Matcher matcherDistance = patternDistance.matcher(input);
  34.             while(matcherDistance.find()) {
  35.                 distance += Integer.parseInt(matcherDistance.group());
  36.             }
  37.  
  38.             if(racersDistances.containsKey(name)) {
  39.                 racersDistances.put(name, racersDistances.get(name) + distance);
  40.             }
  41.  
  42.             input = scanner.nextLine();
  43.         }
  44.  
  45.           List<String> firstThree = racersDistances.entrySet().stream()
  46.                 .sorted(Map.Entry.comparingByValue(Comparator.reverseOrder()))
  47.                 .limit(3)
  48.                 .map(Map.Entry::getKey)
  49.                 .collect(Collectors.toList());
  50.  
  51.         //"Geo", "Pesho", "Ivan"
  52.         System.out.println("1st place: " + firstThree.get(0));
  53.         System.out.println("2nd place: " + firstThree.get(1));
  54.         System.out.println("3rd place: " + firstThree.get(2));
  55.  
  56.  
  57.  
  58.  
  59.     }
  60. }
Advertisement
Add Comment
Please, Sign In to add comment