Advertisement
Tsuki11

WinningTicket

Mar 24th, 2020
217
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 2.62 KB | None | 0 0
  1. package com.company;
  2.  
  3. import java.util.Arrays;
  4. import java.util.List;
  5. import java.util.Map;
  6. import java.util.Scanner;
  7. import java.util.regex.Matcher;
  8. import java.util.regex.Pattern;
  9. import java.util.stream.Collectors;
  10.  
  11. public class Demo1 {
  12.     public static void main(String[] args) {
  13.         Scanner scan = new Scanner(System.in);
  14.  
  15.         List<String> collect = Arrays.stream(scan.nextLine().split(",\\s+")).collect(Collectors.toList());
  16.         Pattern pattern = Pattern.compile("([@]{6,10}|[#]{6,10}|[$]{6,10}|[\\^]{6,10})");
  17.  
  18.         for (int i = 0; i < collect.size(); i++) {
  19.  
  20.             String ticket = collect.get(i).trim();
  21.             if (ticket.length() != 20) {
  22.                 System.out.println("invalid ticket");
  23.                 continue;
  24.             }
  25.  
  26.             String first = ticket.substring(0, 10); // първа част
  27.             String second = ticket.substring(10); //  втора част
  28.             Matcher matcherFirstPart = pattern.matcher(first);
  29.             Matcher matcherSecondPart = pattern.matcher(second);
  30.  
  31.             boolean hasMatchFirst = matcherFirstPart.find();
  32.             boolean hasMatchSecond = matcherSecondPart.find();
  33.  
  34.             if (!hasMatchFirst || !hasMatchSecond) { // ако в едната или другата част е -1, нямаме съвпадение
  35.                 // прекъсваме програмата до тук и продължавам със следващия елемент
  36.                 System.out.printf("ticket \"%s\" - no match%n", ticket);
  37.                 continue;
  38.             }
  39.  
  40.             String left = matcherFirstPart.group(); // взимаме първа част
  41.             String right = matcherSecondPart.group(); // взимаме втора част
  42.  
  43.             if (left.charAt(0) != right.charAt(0)) { // гледаме дали чаровете, които сме отделили са еднакви, ако не са прекъсваме
  44.                 System.out.printf("ticket \"%s\" - no match%n", ticket);
  45.                 continue;
  46.             }
  47.  
  48.  
  49.             int currentLength = Math.min(left.length(),right.length());
  50.             //в резултата винаги трябва да се принтира шест или десет, за това взимамаме дължината с мин
  51.             if (currentLength == 10) {
  52.                 System.out.printf("ticket \"%s\" - %d%c Jackpot!%n", ticket, currentLength, left.charAt(0));
  53.             } else {
  54.                 System.out.printf("ticket \"%s\" - %d%c%n", ticket, currentLength, left.charAt(0));
  55.             }
  56.         }
  57.     }
  58. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement