Guest User

Untitled

a guest
Dec 19th, 2015
139
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 1.81 KB | None | 0 0
  1. import java.util.ArrayList;
  2. import java.util.List;
  3.  
  4. /**
  5.  * @author /u/Philboyd_Studge on 12/18/2015.
  6.  */
  7. public class Advent19 {
  8.  
  9.     public static String replace(String s, String in, String out, int position) {
  10.         return s.substring(0, position) + out + s.substring(position + in.length());
  11.     }
  12.     public static void main(String[] args) {
  13.         List<String[]> input = FileIO.getFileLinesSplit("advent19.txt", " => ");
  14.         List<String> output = new ArrayList<>();
  15.         String molecule = "CRnSiRnCaPTiMgYCaPTiRnFArSiThFArCaSiThSiThPBCaCaSiRnSiRnTiTiMgArPBCaPMgYPTiRnFArFArCaSiRnBPMgArPRnCaPTiRnFArCaSiThCaCaFArPBCaCaPTiTiRnFArCaSiRnSiAlYSiThRnFArArCaSiRnBFArCaCaSiRnSiThCaCaCaFYCaPTiBCaSiThCaSiThPMgArSiRnCaPBFYCaCaFArCaCaCaCaSiThCaSiRnPRnFArPBSiThPRnFArSiRnMgArCaFYFArCaSiRnSiAlArTiTiTiTiTiTiTiRnPMgArPTiTiTiBSiRnSiAlArTiTiRnPMgArCaFYBPBPTiRnSiRnMgArSiThCaFArCaSiThFArPRnFArCaSiRnTiBSiThSiRnSiAlYCaFArPRnFArSiThCaFArCaCaSiThCaCaCaSiRnPRnCaFArFYPMgArCaPBCaPBSiRnFYPBCaFArCaSiAl";
  16.  
  17.         // part 1
  18.         for (String[] each : input) {
  19.             int position = 0;
  20.             while ((position = molecule.indexOf(each[0], position)) >= 0) {
  21.                 output.add(replace(molecule, each[0], each[1], position));
  22.                 position += each[0].length();
  23.             }
  24.         }
  25.  
  26.         long count = output.stream()
  27.                 .distinct()
  28.                 .count();
  29.  
  30.         System.out.println(count);
  31.  
  32.         //part 2
  33.         int count2 = 0;
  34.         while(!molecule.equals("e")) {
  35.             for (String[] each : input) {
  36.                 if (molecule.contains(each[1])) {
  37.                     molecule = replace(molecule, each[1], each[0], molecule.lastIndexOf(each[1]));
  38.                     count2++;
  39.                 }
  40.             }
  41.         }
  42.         System.out.println(count2);
  43.     }
  44. }
Advertisement
Add Comment
Please, Sign In to add comment