Skip to content

Commit 6cdd2be

Browse files
committed
Okay
1 parent e145e10 commit 6cdd2be

File tree

2 files changed

+56
-17
lines changed

2 files changed

+56
-17
lines changed

src/main/java/com/sbaars/adventofcode2019/days/Day14.java

Lines changed: 49 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -38,33 +38,65 @@ private Trade getTrade(Trade[] trades, String key) {
3838

3939
CountMap<String> created = new CountMap<>();
4040
private int findCost(Trade[] trades, Item buyingItem, CountMap<String> leftOver) {
41+
if(buyingItem.item.equals("ORE"))
42+
return buyingItem.amount;
4143
Trade fuelTrade = getTrade(trades, buyingItem.item);
4244
int timesApplied = (int)Math.ceil((double)buyingItem.amount/(double)fuelTrade.output.amount);
43-
leftOver.increment(fuelTrade.output.item, buyingItem.amount % fuelTrade.output.amount);
4445

45-
//System.out.println(fuelTrade.output.item+" nLeftOver "+leftOver.get(fuelTrade.output.item));
46+
System.out.println("Buy "+timesApplied+"x"+fuelTrade.output.amount+" "+buyingItem.item);
47+
48+
/*if(leftOver.get(fuelTrade.output.item) >= fuelTrade.output.amount) {
49+
System.out.println("Leftover "+fuelTrade.output.item+" = "+leftOver.get(fuelTrade.output.item)+" for trade "+fuelTrade);
50+
leftOver.increment(fuelTrade.output.item, -fuelTrade.output.amount);
51+
System.out.println("Leftover "+fuelTrade.output.item+" = "+leftOver.get(fuelTrade.output.item)+" for trade "+fuelTrade);
52+
//skip = fuelTrade.output.item;
53+
//System.out.println("Enough "+fuelTrade.output.item+" !");
54+
timesApplied--;
55+
//return 0; //You have this material, so you get it for free :)
56+
}*/
57+
//leftOver.increment(fuelTrade.output.item, buyingItem.amount % fuelTrade.output.amount);
58+
4659
int totalCost = 0;
47-
for(int i = 0; i<timesApplied; i++) {
48-
for(Item cost : fuelTrade.input) {
49-
if(leftOver.get(cost.item) >= cost.amount) {
50-
leftOver.increment(fuelTrade.output.item, -fuelTrade.output.amount);
51-
//skip = fuelTrade.output.item;
52-
System.out.println("Enough "+fuelTrade.output.item+" LEFTOVER!");
53-
continue;
54-
}
55-
if(cost.item.equals("ORE")) {
56-
totalCost+=cost.amount;
57-
System.out.println("Spend "+cost.amount+" ORE to get "+fuelTrade.output.amount+" "+fuelTrade.output.item);
58-
} else {
59-
totalCost+=findCost(trades, new Item(cost.amount, cost.item), leftOver);
60-
}
61-
}
60+
for(int i = 0; i<timesApplied; i++) {
61+
/*if(leftOver.get(fuelTrade.output.item) >= fuelTrade.output.amount) {
62+
System.out.println("Leftover "+fuelTrade.output.item+" = "+leftOver.get(fuelTrade.output.item)+" for trade "+fuelTrade);
63+
leftOver.increment(fuelTrade.output.item, -fuelTrade.output.amount);
64+
System.out.println("Leftover "+fuelTrade.output.item+" = "+leftOver.get(fuelTrade.output.item)+" for trade "+fuelTrade);
65+
//skip = fuelTrade.output.item;
66+
System.out.println("Enough "+fuelTrade.output.item+" LEFTOVER!");
67+
continue;
68+
}*/
69+
totalCost = applyTrade(trades, fuelTrade, totalCost, leftOver);
6270
created.increment(buyingItem.item, fuelTrade.output.amount);
6371
}
72+
73+
leftOver.increment(buyingItem.item, buyingItem.amount % fuelTrade.output.amount);
74+
System.out.println(fuelTrade.output.item+" nLeftOver "+leftOver.get(fuelTrade.output.item));
6475
System.out.println("Bought "+(timesApplied*fuelTrade.output.amount)+" "+buyingItem.item+" for "+totalCost);
6576
//System.out.println(fuelTrade.output.item+" costs "+totalCost+" times "+timesApplied);
6677
return totalCost;
6778
}
79+
80+
private int applyTrade(Trade[] trades, Trade fuelTrade, int totalCost, CountMap<String> leftOver) {
81+
for(Item cost : fuelTrade.input) {
82+
/*if(leftOver.get(cost.item) >= cost.amount) {
83+
//System.out.println("Leftover "+fuelTrade.output.item+" = "+leftOver.get(fuelTrade.output.item)+" for trade "+fuelTrade);
84+
leftOver.increment(cost.item, -cost.amount);
85+
//System.out.println("Leftover "+fuelTrade.output.item+" = "+leftOver.get(fuelTrade.output.item)+" for trade "+fuelTrade);
86+
//skip = fuelTrade.output.item;
87+
//System.out.println("Enough "+fuelTrade.output.item+" !");
88+
continue; //You have this material, so you get it for free :)
89+
}*/
90+
if(cost.item.equals("ORE")) {
91+
totalCost+=cost.amount;
92+
System.out.println("Spend "+cost.amount+" ORE to get "+fuelTrade.output.amount+" "+fuelTrade.output.item+" in trade "+fuelTrade);
93+
} else {
94+
totalCost+=findCost(trades, new Item(cost.amount, cost.item), leftOver);
95+
//leftOver.increment(fuelTrade.output.item, cost.amount % fuelTrade.output.amount);
96+
}
97+
}
98+
return totalCost;
99+
}
68100

69101
@Override
70102
public Object part2() throws IOException {

src/main/resources/day17.txt

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
9 ORE => 2 A
2+
8 ORE => 3 B
3+
7 ORE => 5 C
4+
3 A, 4 B => 1 AB
5+
5 B, 7 C => 1 BC
6+
4 C, 1 A => 1 CA
7+
2 AB, 3 BC, 4 CA => 1 FUEL

0 commit comments

Comments
 (0)