dns@aussie.zonetoAdvent Of Code@programming.dev•[2023 Day 1] It is not supposed to ramp up this fast
8·
1 year agohttps://adventofcode.com/2023 The first question is public, login to get your test data and submit your answers and unlock part 2.
https://adventofcode.com/2023 The first question is public, login to get your test data and submit your answers and unlock part 2.
My solution was worse than most: replace one -> one1one You are only going to do the replace all for each number and if the “e” is also in eight it is still there for the next set of replace.
A better quick and dirty solution from Mastodon was to just add the common character first: twone -> twoone
First and last number, so loop through the characters, ask is it a letter or a number. Find the first and last number in the string and add the strings together and convert it to a number. So you find a 3,4,5 in the line so find the first in the result is 3 and 5 is the last so it becomes 35.
$3 or 2 for $5
My solution in python
input="""Game 1: 3 blue, 4 red; 1 red, 2 green, 6 blue; 2 green Game 2: 1 blue, 2 green; 3 green, 4 blue, 1 red; 1 green, 1 blue Game 3: 8 green, 6 blue, 20 red; 5 blue, 4 red, 13 green; 5 green, 1 red Game 4: 1 green, 3 red, 6 blue; 3 green, 6 red; 3 green, 15 blue, 14 red Game 5: 6 red, 1 blue, 3 green; 2 blue, 1 red, 2 green""" def parse(line): data={} data['game']=int(line[5:line.index(':')]) data['hands']=[] for str in line[line.index(':')+1:].split(';'): h={'red':0,'green':0,'blue':0} for str2 in str.split(','): tmp=str2.strip(' ').split(' ') h[tmp[1]]=int(tmp[0]) data['hands'].append(h) data['max_red']=max([x['red'] for x in data['hands']]) data['max_green']=max([x['green'] for x in data['hands']]) data['max_blue']=max([x['blue'] for x in data['hands']]) data['power']=data['max_red']*data['max_green']*data['max_blue'] data['possible'] = True if data['max_red'] > 12: data['possible'] = False if data['max_green'] > 13: data['possible'] = False if data['max_blue'] > 14: data['possible'] = False return data def loadFile(path): with open(path,'r') as f: return f.read() if __name__ == '__main__': input=loadFile('day2_input') res=[] total=0 power_sum=0 for row in input.split('\n'): data=parse(row) if data['possible']: total=total+data['game'] power_sum=power_sum+data['power'] print('total: %s, power: %s ' % (total,power_sum,))