Skip to content

Commit dde4301

Browse files
committed
Day 14 part 1
1 parent fc5baa9 commit dde4301

File tree

3 files changed

+160
-0
lines changed

3 files changed

+160
-0
lines changed
Lines changed: 91 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,91 @@
1+
package com.sbaars.adventofcode2019.days;
2+
3+
import java.io.IOException;
4+
import java.util.Arrays;
5+
import java.util.Map.Entry;
6+
7+
import com.sbaars.adventofcode2019.common.Day;
8+
import com.sbaars.adventofcode2019.util.CountMap;
9+
10+
public class Day14 implements Day {
11+
public static void main(String[] args) throws IOException {
12+
new Day14().printParts();
13+
}
14+
15+
@Override
16+
public Object part1() throws IOException {
17+
Trade[] trades = Arrays.stream(readDay(15).split(System.lineSeparator())).map(Trade::new).toArray(Trade[]::new);
18+
CountMap<String> items = new CountMap<>();
19+
for(int i = 13311; i<15000; i++) {
20+
System.out.println("We now have "+i+" ORE");
21+
items.put("ORE", i);
22+
if(i == 14000) {
23+
System.out.println("Hi");
24+
}
25+
if(canMakeFuel(trades, items)) {
26+
return i;
27+
}
28+
}
29+
return 0;
30+
}
31+
32+
private boolean canMakeFuel(Trade[] trades, CountMap<String> items) {
33+
//System.out.println(items);
34+
//System.out.println("----");
35+
for(Trade trade : trades) {
36+
CountMap<String> newItems = new CountMap<>(items);
37+
if(trade.perform(newItems)) {
38+
if(trade.output.item.equals("FUEL")) {
39+
return true;
40+
}
41+
if(canMakeFuel(trades, newItems))
42+
return true;
43+
}
44+
}
45+
return false;
46+
}
47+
48+
@Override
49+
public Object part2() throws IOException {
50+
return 0;
51+
}
52+
53+
class Trade {
54+
CountMap<String> input = new CountMap<>();
55+
Item output;
56+
57+
public Trade(String trade) {
58+
String[] inputOutput = trade.split(" => ");
59+
Arrays.stream(inputOutput[0].split(", ")).map(Item::new).forEach(e -> input.increment(e.item, e.amount));
60+
output = new Item(inputOutput[1]);
61+
}
62+
63+
public boolean perform(CountMap<String> items) {
64+
for(Entry<String, Integer> item : input.entrySet()) {
65+
if(!items.containsKey(item.getKey()) || items.get(item.getKey()) < item.getValue())
66+
return false;
67+
else {
68+
items.increment(item.getKey(), -item.getValue());
69+
}
70+
}
71+
items.increment(output.item, output.amount);
72+
return true;
73+
}
74+
}
75+
76+
class Item {
77+
int amount;
78+
String item;
79+
80+
public Item(String item) {
81+
String[] i = item.split(" ");
82+
amount = Integer.parseInt(i[0]);
83+
this.item = i[1];
84+
}
85+
86+
public Item(int i, String string) {
87+
amount = i;
88+
item = string;
89+
}
90+
}
91+
}

src/main/resources/day14.txt

Lines changed: 60 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,60 @@
1+
11 BNMWF, 1 MRVFT, 10 PBNSF => 7 XSFVQ
2+
149 ORE => 4 SMSB
3+
1 XHQDX, 1 SVSTJ, 2 LDHX => 7 JMWQG
4+
12 MJCLX => 9 PBNSF
5+
132 ORE => 7 XPTXL
6+
15 TZMWG, 1 LDHX, 1 PDVR => 7 LBQB
7+
1 HJTD, 8 VFXHC => 2 SVSTJ
8+
5 LBHQ, 6 MTQCB => 4 MHBZ
9+
1 PRXT, 1 FWZN => 2 PBMPL
10+
1 XPTXL => 1 HMRGM
11+
10 XHPHR => 6 NSVJL
12+
3 QZQLZ, 3 MTQCB => 4 TZMWG
13+
5 LBHQ, 2 VPSDV => 3 ZFCD
14+
13 WPFP => 6 ZXMGK
15+
10 MHJMX, 75 LDHX, 52 JMWQG, 4 QWRB, 1 SVNVJ, 17 BNMWF, 18 GHVN => 1 FUEL
16+
4 PFQRG, 14 XVNL => 5 PDCV
17+
11 JMWQG, 10 ZBNCP => 6 NTJZH
18+
14 PBMPL, 12 PRXT, 9 MJQS => 9 XVNL
19+
9 GDNG, 13 LBQB => 9 QWRB
20+
1 CXNM => 6 PFQRG
21+
9 NTJZH, 7 BNMWF, 11 JCHP, 1 MHBZ, 1 SVSTJ, 9 XRDN => 5 SVNVJ
22+
1 XHPHR, 1 GSMP => 4 THRVR
23+
26 FWZN => 4 WPFP
24+
35 VJTFJ, 2 XSFVQ, 6 HJVN, 1 NSVJL, 1 JCHP, 3 MJCLX, 1 QZNCK => 6 GHVN
25+
1 WPFP, 3 XHPHR => 2 HJVN
26+
5 SMSB => 7 HNCDS
27+
111 ORE => 4 GSMP
28+
6 LBHQ => 8 GDNG
29+
2 GDNG, 5 MHBZ => 1 RNMKC
30+
15 THRVR, 4 NWNSH, 1 NSVJL => 7 FDVH
31+
2 HMRGM => 9 FWZN
32+
6 MJQS, 5 JRZXM => 5 NWNSH
33+
14 ZXMGK, 1 JTXWX => 6 DLWT
34+
1 MJQS, 3 FWZN, 2 PRXT => 1 JTXWX
35+
1 GSMP, 4 CXNM => 3 JRZXM
36+
151 ORE => 9 ZNPRL
37+
2 NTJZH, 1 DLWT, 3 ZBNCP => 9 MRVFT
38+
14 SWZCB, 1 VPSDV => 7 XRDN
39+
14 LBHQ, 16 FDVH, 9 PFQRG => 4 PRXT
40+
22 CXNM => 9 HJTD
41+
1 VFXHC, 1 MTQCB => 6 QZQLZ
42+
6 SWZCB, 2 PDCV, 17 RNMKC => 9 LTHFW
43+
4 ZNPRL => 6 CXNM
44+
2 CXNM => 3 LBHQ
45+
8 MHBZ, 2 QZQLZ, 2 LBQB => 3 VJTFJ
46+
3 ZFCD => 1 XHQDX
47+
1 VJTFJ, 7 MHBZ => 8 ZBNCP
48+
5 CXNM => 2 VPSDV
49+
7 MJQS => 9 VFXHC
50+
2 LTHFW, 11 HJVN, 4 XRDN, 8 MRVFT, 3 NSVJL, 3 SVSTJ, 5 XSFVQ, 13 RNMKC => 8 MHJMX
51+
2 HMRGM => 3 XHPHR
52+
1 GDNG, 19 PDVR => 3 SWZCB
53+
18 HMRGM, 10 HNCDS => 2 MJQS
54+
6 HNCDS, 2 HMRGM, 1 LBHQ => 3 MTQCB
55+
16 VJTFJ, 1 WPFP, 6 JMWQG => 6 BNMWF
56+
3 TZMWG, 1 FWZN => 7 PDVR
57+
10 ZXMGK => 4 QZNCK
58+
32 LBQB, 1 ZBNCP => 1 JCHP
59+
27 PDVR, 7 QZQLZ, 7 PBMPL => 3 MJCLX
60+
5 MHBZ, 12 ZFCD => 4 LDHX

src/main/resources/day15.txt

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
157 ORE => 5 NZVS
2+
165 ORE => 6 DCFZ
3+
44 XJWVT, 5 KHKGT, 1 QDVJ, 29 NZVS, 9 GPVTF, 48 HKGWZ => 1 FUEL
4+
12 HKGWZ, 1 GPVTF, 8 PSHF => 9 QDVJ
5+
179 ORE => 7 PSHF
6+
177 ORE => 5 HKGWZ
7+
7 DCFZ, 7 PSHF => 2 XJWVT
8+
165 ORE => 2 GPVTF
9+
3 DCFZ, 7 NZVS, 5 HKGWZ, 10 PSHF => 8 KHKGT

0 commit comments

Comments
 (0)