Skip to content

Commit bbe276a

Browse files
Charlie SchmidtCharlie Schmidt
authored andcommitted
clean up day 22 a bit
1 parent 017a58b commit bbe276a

File tree

1 file changed

+11
-83
lines changed

1 file changed

+11
-83
lines changed

AdventOfCode/day22.m

Lines changed: 11 additions & 83 deletions
Original file line numberDiff line numberDiff line change
@@ -45,40 +45,14 @@ - (void)day22:(NSArray *)inputs part:(NSNumber *)part
4545
}
4646

4747
int bestManaSpent = 5000000;
48-
49-
NSMutableArray *spellList = nil;
50-
51-
if (NO)
52-
{
53-
//bossHp = 14;
54-
//bossDamage = 8;
55-
//mana = 250;
56-
//hp = 10;
57-
58-
spellList = [[NSMutableArray alloc] initWithArray:@[@"poison",@"recharge",@"shield",@"poison",@"recharge",@"shield",@"poison",@"recharge",@"shield",@"magic missile",@"poison",@"magic missile"]];
59-
}
60-
48+
6149
for (NSString *spell in [spells allKeys])
6250
{
63-
NSString *spellToPerform = spell;
64-
65-
if (spellList != nil)
66-
{
67-
if ([spellList count] != 0)
68-
{
69-
spellToPerform = spellList[0];
70-
[spellList removeObjectAtIndex:0];
71-
}
72-
else
73-
{
74-
spellToPerform = nil;
75-
}
76-
}
7751

7852
NSMutableArray *spellsPerformed = [[NSMutableArray alloc] init];
7953

8054
[self doRPGTurn:spells
81-
spellToPerform:spellToPerform
55+
spellToPerform:spell
8256
hpRemaining:hp
8357
manaRemaining:mana
8458
armor:0
@@ -87,7 +61,6 @@ - (void)day22:(NSArray *)inputs part:(NSNumber *)part
8761
currentStatusEffects:nil
8862
totalManaSpent:0
8963
bestManaSpent:&bestManaSpent
90-
spellList:spellList
9164
spellsPerformed:spellsPerformed
9265
hardMode:([part intValue] ==2)
9366
];
@@ -108,7 +81,6 @@ - (void) doRPGTurn:(NSDictionary*)spells
10881
currentStatusEffects:(NSMutableArray*)currentStatusEffects
10982
totalManaSpent:(int)totalManaSpent
11083
bestManaSpent:(int*)bestManaSpent
111-
spellList:(NSMutableArray *)spellList
11284
spellsPerformed:(NSArray *)spellsPerformed
11385
hardMode:(BOOL)hardMode
11486
{
@@ -134,18 +106,14 @@ - (void) doRPGTurn:(NSDictionary*)spells
134106
}
135107
}
136108

137-
//NSLog(@"\n\n");
138-
//NSLog(@"Player turn p(%d,%d,%d) vs b(%d)\n",hpRemaining,manaRemaining,armor,bossHpRemaining);
139109
// check status effects
140110
currentStatusEffects = [self doStatusEffects:currentStatusEffects spells:spells hpRemaining:&hpRemaining manaRemaining:&manaRemaining armor:&armor bossHpRemaining:&bossHpRemaining];
141111

142112
// check if boss is dead
143-
//NSLog(@"After status effects, p(%d,%d,%d) vs b(%d)\n",hpRemaining,manaRemaining,armor,bossHpRemaining);
144113
if (bossHpRemaining <= 0)
145114
{
146115
if (totalManaSpent < *bestManaSpent)
147116
{
148-
//NSLog(@"%@ led to boss death at cost of %d (vs %d) (%d,%d,%d)\n",newSpellsPerformed,totalManaSpent,*bestManaSpent,hpRemaining,manaRemaining,armor);
149117
*bestManaSpent = totalManaSpent;
150118
}
151119
return;
@@ -162,7 +130,7 @@ - (void) doRPGTurn:(NSDictionary*)spells
162130
armor += [spells[spellToPerform][@"armor"] intValue];
163131
hpRemaining += [spells[spellToPerform][@"hpGain"] intValue];
164132
bossHpRemaining -= [spells[spellToPerform][@"damage"] intValue];
165-
//NSLog(@"cast %@ for %d mana (%d left): %d armor, %d hp, %d damage\n",spellToPerform,[spells[spellToPerform][@"cost"] intValue],manaRemaining,[spells[spellToPerform][@"armor"] intValue],[spells[spellToPerform][@"hpGain"] intValue],[spells[spellToPerform][@"damage"] intValue]);
133+
166134
int turns = [spells[spellToPerform][@"turns"] intValue];
167135
if (turns != 0)
168136
{
@@ -180,42 +148,34 @@ - (void) doRPGTurn:(NSDictionary*)spells
180148
{
181149
if (totalManaSpent < *bestManaSpent)
182150
{
183-
//NSLog(@"%@ led to boss death at cost of %d (vs %d) (%d,%d,%d)\n",newSpellsPerformed,totalManaSpent,*bestManaSpent,hpRemaining,manaRemaining,armor);
184151
*bestManaSpent = totalManaSpent;
185152
}
186153
return;
187154
}
188-
//NSLog(@"end player turn p(%d,%d,%d) vs b(%d)\n",hpRemaining,manaRemaining,armor,bossHpRemaining);
189155
// end player turn
190156

191157

192158

193159
// do boss turn
194-
//NSLog(@"Boss turn p(%d,%d,%d) vs b(%d)\n",hpRemaining,manaRemaining,armor,bossHpRemaining);
195-
196160
// check status effects
197161
currentStatusEffects = [self doStatusEffects:currentStatusEffects spells:spells hpRemaining:&hpRemaining manaRemaining:&manaRemaining armor:&armor bossHpRemaining:&bossHpRemaining];
198162

199163
// check if boss is dead
200-
//NSLog(@"After status effects, p(%d,%d,%d) vs b(%d)\n",hpRemaining,manaRemaining,armor,bossHpRemaining);
201164
if (bossHpRemaining <= 0)
202165
{
203166
if (totalManaSpent < *bestManaSpent)
204167
{
205-
//NSLog(@"%@ led to boss death at cost of %d (vs %d) (%d,%d,%d)\n",newSpellsPerformed,totalManaSpent,*bestManaSpent,hpRemaining,manaRemaining,armor);
206168
*bestManaSpent = totalManaSpent;
207169
}
208170
return;
209171
}
210172

211173
// boss attack
212174
hpRemaining -= max(1,bossDamage - armor);
213-
//NSLog(@"boss does %d damage, player now at %d\n",max(1,bossDamage-armor),hpRemaining);
214175

215176
// check if player is dead
216177
if (hpRemaining <= 0)
217178
{
218-
//NSLog(@"%@ led to player death\n",spellsPerformed);
219179
return;
220180
}
221181
// end boss turn
@@ -238,19 +198,6 @@ - (void) doRPGTurn:(NSDictionary*)spells
238198
{
239199
NSString *nextSpellToPerform = spell;
240200

241-
if (spellList != nil)
242-
{
243-
if ([spellList count] != 0)
244-
{
245-
nextSpellToPerform = spellList[0];
246-
[spellList removeObjectAtIndex:0];
247-
}
248-
else
249-
{
250-
nextSpellToPerform = nil;
251-
}
252-
}
253-
254201
BOOL cantPerform = NO;
255202
for (NSDictionary *effect in currentStatusEffects)
256203
{
@@ -272,7 +219,6 @@ - (void) doRPGTurn:(NSDictionary*)spells
272219
currentStatusEffects:currentStatusEffects
273220
totalManaSpent:totalManaSpent
274221
bestManaSpent:bestManaSpent
275-
spellList:spellList
276222
spellsPerformed:newSpellsPerformed
277223
hardMode:hardMode
278224
];
@@ -285,11 +231,11 @@ - (void) doRPGTurn:(NSDictionary*)spells
285231

286232

287233
- (NSMutableArray *)doStatusEffects:(NSArray*)currentStatusEffects
288-
spells:(NSDictionary*)spells
289-
hpRemaining:(int*)hpRemaining
290-
manaRemaining:(int*)manaRemaining
291-
armor:(int*)armor
292-
bossHpRemaining:(int*)bossHpRemaining
234+
spells:(NSDictionary*)spells
235+
hpRemaining:(int*)hpRemaining
236+
manaRemaining:(int*)manaRemaining
237+
armor:(int*)armor
238+
bossHpRemaining:(int*)bossHpRemaining
293239
{
294240
NSMutableArray *statusEffects;
295241
if (currentStatusEffects == nil)
@@ -314,34 +260,16 @@ - (NSMutableArray *)doStatusEffects:(NSArray*)currentStatusEffects
314260

315261
if (turnsRemaining >= 1)
316262
{
317-
if ([statusEffect[@"name"] isEqualToString:@"poison"])
318-
{
319-
*bossHpRemaining -= [spells[@"poison"][@"damagePerTurn"] intValue];
320-
321-
//NSLog(@"boss takes poison damage for %d, left at %d (%d remaining)\n",[spells[@"poison"][@"damagePerTurn"] intValue],*bossHpRemaining,turnsRemaining-1);
322-
323-
}
324-
else if ([statusEffect[@"name"] isEqualToString:@"shield"])
325-
{
326-
//NSLog(@"shield still active (%d remaining)\n",turnsRemaining-1);
327-
}
328-
else if ([statusEffect[@"name"] isEqualToString:@"recharge"])
329-
{
330-
*manaRemaining += [spells[@"recharge"][@"manaGainPerTurn"] intValue];
331-
//NSLog(@"you recharge %d mana, now at %d (%d remaining)\n",[spells[@"recharge"][@"manaGainPerTurn"] intValue],*manaRemaining,turnsRemaining-1);
332-
}
263+
*bossHpRemaining -= [spells[statusEffect[@"name"]][@"damagePerTurn"] intValue];
264+
*manaRemaining += [spells[statusEffect[@"name"]][@"manaGainPerTurn"] intValue];
333265

334266
turnsRemaining--;
335267
statusEffect[@"turnsRemaining"] = [NSNumber numberWithInt:turnsRemaining];
336268

337269
}
338270
else
339271
{
340-
if ([statusEffect[@"name"] isEqualToString:@"shield"])
341-
{
342-
//NSLog(@"shield wears off\n");
343-
*armor -= [spells[@"shield"][@"armor"] intValue];
344-
}
272+
*armor -= [spells[statusEffect[@"name"]][@"armor"] intValue];
345273

346274
[statusEffectsToRemove addObject:statusEffect];
347275
}

0 commit comments

Comments
 (0)