diff --git a/2025/03/solution.py b/2025/03/solution.py new file mode 100644 index 0000000..2705faf --- /dev/null +++ b/2025/03/solution.py @@ -0,0 +1,89 @@ +#!/bin/python3 +import sys,time,re,os +from pprint import pprint +sys.path.insert(0, '../../') +from fred import list2int,get_re,nprint,lprint,loadFile +start_time = time.time() + +if sys.argv[1] == 'test': + input_f = 'test' +elif sys.argv[1] == 'input': + input_f = 'input' +else: + print('No argv provided') + exit() + + +######################################### +# # +# Part 1 # +# # +######################################### + +def part1(): + score = 0 + nums = loadFile(input_f) + + + for n in nums: + max_nums = 0 + max_idx = 0 + for i in range(0,len(n)-1): + if int(n[i]) > max_nums: + max_nums = int(n[i]) + max_idx = i + + + max2_nums = 0 + + if max_idx+2 == len(n): + score+= int(str(max_nums)+str(n[max_idx+1])) + else: + for i in range(max_idx+1,len(n)): + if int(n[i]) > max2_nums: + max2_nums = int(n[i]) + + score += int(str(max_nums)+str(max2_nums)) + + return score + +start_time = time.time() +p1 = part1() +print('Part 1:',p1, '\t\t', round((time.time() - start_time)*1000), 'ms') + +######################################### +# # +# Part 2 # +# # +######################################### + +def part2(): + score = 0 + nums = loadFile(input_f) + + for n in nums: + n=list2int(list(n)) + + pos = 0 + filled = 0 + left = len(n) + can_skip = left - 12 + number = '' + + while filled < 12: + current = n[pos] + window = n[pos:pos+can_skip+1] + if current >= max(window): + number += str(current) + pos += 1 + filled += 1 + else: + pos += 1 + can_skip -= 1 + score += int(number) + return score + +start_time = time.time() +p2 = part2() +print('Part 2:',p2, '', round((time.time() - start_time)*1000), 'ms') + diff --git a/README.md b/README.md index 75fe246..6a97480 100644 --- a/README.md +++ b/README.md @@ -6,7 +6,8 @@ ________/O___\__________|_________________O______ 1 ** _______||_________ | _@__ || _o_ '.|_ _________________________ 2 ** - + |_&_%__||_oo__^=_[ \|..' _ .. .. .. | + \_]__--|_|___[]_[]_[]__//_| 3 ** ## 2024