Guest User

Untitled

a guest
Jan 3rd, 2018
63
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.45 KB | None | 0 0
  1. import java.io.BufferedReader;
  2. import java.io.IOException;
  3. import java.io.InputStreamReader;
  4. import java.util.ArrayList;
  5. import java.util.List;
  6. import java.util.regex.Matcher;
  7. import java.util.regex.Pattern;
  8.  
  9. public class Problem2 {
  10. public static void main(String[] args) throws IOException {
  11. BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
  12. int countLines = 0;
  13. List<String> crates = new ArrayList<>();
  14. List<String> validFoodCrates = new ArrayList<>();
  15. List<String> validDrinkCrates = new ArrayList<>();
  16.  
  17.  
  18. String command = reader.readLine();
  19. while (!"Collect".equals(command)){
  20. countLines++;
  21. Pattern pattern = Pattern.compile("([\\[](.*?)[]])");
  22. Matcher matcher = pattern.matcher(command);
  23. while (matcher.find()){
  24. crates.add(matcher.group());
  25. }
  26. command = reader.readLine();
  27. }
  28. int n = crates.size()/countLines;
  29.  
  30. String foodCratePattern = String.format("[#][0-9]{%d}",n);
  31. String drinkCratePattern = String.format("[#][a-z]{%d}",n);
  32.  
  33. extractValidCrates(crates, validFoodCrates, foodCratePattern, n);
  34. extractValidCrates(crates, validDrinkCrates, drinkCratePattern, n);
  35.  
  36. int food = 0;
  37. int drink = 0;
  38.  
  39. if (validFoodCrates.size()>0 || validDrinkCrates.size()>0){
  40. for (String validFoodCrate : validFoodCrates) {
  41. food+=getFood(validFoodCrate.substring(n+2,validFoodCrate.length()-n-2), n);
  42. }
  43. String debug ="";
  44. for (String validDrinkCrate : validDrinkCrates) {
  45. drink+=getDrinks(validDrinkCrate, n);
  46. }
  47. System.out.println(String.format("Number of supply crates: %d",validFoodCrates.size()+validDrinkCrates.size()));
  48. System.out.println(String.format("Amount of food collected: %d",food));
  49. System.out.println(String.format("Amount of drinks collected: %d",drink));
  50. } else {
  51. System.out.println("No supplies found!");
  52. }
  53. }
  54.  
  55. private static int getDrinks(String validDrinkCrate, int n) {
  56. String multiplier = validDrinkCrate.substring(2, 2 + n);
  57. String substring = validDrinkCrate.substring(n + 2, validDrinkCrate.length() - n - 2);
  58. int mult = multiplier.chars().sum();
  59. int sum = substring.chars().sum();
  60. return sum*mult;
  61. }
  62.  
  63. private static void extractValidCrates(List<String> crates, List<String> validCrates, String foodCratePattern, int n) {
  64. Pattern begginingPattern = Pattern.compile("^" + foodCratePattern);
  65. Pattern endPattern = Pattern.compile(foodCratePattern+ "$");
  66.  
  67. for (String crate : crates) {
  68. Matcher match1 = begginingPattern.matcher(crate.substring(1,crate.length()-1));
  69. Matcher match2 = endPattern.matcher(crate.substring(1,crate.length()-1));
  70. if (match1.find() && match2.find()){
  71. if (match1.group().equals(match2.group())){
  72. validCrates.add(crate);
  73. }
  74. // String matchTxt1 = crate.substring(2, 2 + n);
  75. // String matchTxt2 = crate.substring(crate.length() - 1 - n, crate.length() - 1);
  76. //
  77. }
  78. }
  79. }
  80.  
  81. private static int getFood (String input, int n) {
  82. return input.chars()
  83. .distinct().sum()*n;
  84. }
  85. }
Advertisement
Add Comment
Please, Sign In to add comment