Spyke

Replies

Comment on

🦌 - 2023 DAY 2 SOLUTIONS -🦌

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,))

Comment on

[2023 Day #1] Massive Difficulty Increase

Reply in thread

The bug is some strings can have overlapping characters. onEight threEight fivEight. There are more cases. So if you do a search and replace your string becomes 1ight 3ight and the second number does not get found.

Possible fixes: Search and replace and add the extra letter: oneEigh then search and replace. Search and replace words to numbers but put some extra letters in just in case.

You reached the end