Skip to content

Instantly share code, notes, and snippets.

@desrtfx
Created December 19, 2015 12:53
Show Gist options
  • Save desrtfx/b27fbbe3726f92eab61e to your computer and use it in GitHub Desktop.
Save desrtfx/b27fbbe3726f92eab61e to your computer and use it in GitHub Desktop.
import java.util.ArrayList;
import java.util.List;
public class Day19 {
public static String replace(String where, String what, String with, int pos) {
return where.substring(0, pos) + with + where.substring(pos + what.length());
}
public static void main(String[] args) {
List<String[]> transforms = FileIO.getFileLinesSplit(".\\InputDay19.txt", " => ");
String medicine = "ORnPBPMgArCaCaCaSiThCaCaSiThCaCaPBSiRnFArRnFArCaCaSiThCaCaSiThCaCaCaCaCaCaSiRnFYFArSiRnMgArCaSiRnPTiTiBFYPBFArSiRnCaSiRnTiRnFArSiAlArPTiBPTiRnCaSiAlArCaPTiTiBPMgYFArPTiRnFArSiRnCaCaFArRnCaFArCaSiRnSiRnMgArFYCaSiRnMgArCaCaSiThPRnFArPBCaSiRnMgArCaCaSiThCaSiRnTiMgArFArSiThSiThCaCaSiRnMgArCaCaSiRnFArTiBPTiRnCaSiAlArCaPTiRnFArPBPBCaCaSiThCaPBSiThPRnFArSiThCaSiThCaSiThCaPTiBSiRnFYFArCaCaPRnFArPBCaCaPBSiRnTiRnFArCaPRnFArSiRnCaCaCaSiThCaRnCaFArYCaSiRnFArBCaCaCaSiThFArPBFArCaSiRnFArRnCaCaCaFArSiRnFArTiRnPMgArF";
// part 1
List<String> molecules = new ArrayList<>();
for(String[] trans : transforms) {
int pos = 0;
while((pos = medicine.indexOf(trans[0], pos)) >= 0) {
molecules.add(replace(medicine,trans[0],trans[1],pos));
pos += trans[0].length();
}
}
long count = molecules.stream()
.distinct()
.count();
System.out.println("Part 1: Total unique molecules = " + count);
// part 2
int count2 = 0;
while (!medicine.equals("e")) {
for(String[] trans : transforms) {
if(medicine.contains(trans[1])) {
medicine = replace(medicine, trans[1], trans[0], medicine.indexOf(trans[1]));
System.out.println(medicine);
count2++;
}
}
}
System.out.println("Part 2: Total unique molecules = " + count2);
}
}
Al => ThF
Al => ThRnFAr
B => BCa
B => TiB
B => TiRnFAr
Ca => CaCa
Ca => PB
Ca => PRnFAr
Ca => SiRnFYFAr
Ca => SiRnMgAr
Ca => SiTh
F => CaF
F => PMg
F => SiAl
H => CRnAlAr
H => CRnFYFYFAr
H => CRnFYMgAr
H => CRnMgYFAr
H => HCa
H => NRnFYFAr
H => NRnMgAr
H => NTh
H => OB
H => ORnFAr
Mg => BF
Mg => TiMg
N => CRnFAr
N => HSi
O => CRnFYFAr
O => CRnMgAr
O => HP
O => NRnFAr
O => OTi
P => CaP
P => PTi
P => SiRnFAr
Si => CaSi
Th => ThCa
Ti => BP
Ti => TiTi
e => HF
e => NAl
e => OMg
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment