2024 - Day 5 part 1
This commit is contained in:
		
							parent
							
								
									d1e7ff9785
								
							
						
					
					
						commit
						14413dce5b
					
				
					 3 changed files with 1442 additions and 0 deletions
				
			
		
							
								
								
									
										48
									
								
								2024/5/5.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										48
									
								
								2024/5/5.py
									
									
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,48 @@ | ||||||
|  | #!/usr/bin/env python | ||||||
|  | # 2024 - Advent Of Code 5 | ||||||
|  | 
 | ||||||
|  | from math import floor | ||||||
|  | 
 | ||||||
|  | # file = 'input_example.txt' | ||||||
|  | file = 'input.txt' | ||||||
|  | 
 | ||||||
|  | updates = [] | ||||||
|  | rules = {} | ||||||
|  | update = 0 | ||||||
|  | with open(file, encoding="utf-8") as f: | ||||||
|  |     for line in f.read().splitlines(): | ||||||
|  |         if line == '': | ||||||
|  |             update = 1 | ||||||
|  |             continue | ||||||
|  |         if update == 0: | ||||||
|  |             before, after = line.split('|') | ||||||
|  |             if int(before) in rules: | ||||||
|  |                 l = rules[int(before)] | ||||||
|  |                 l.append(int(after)) | ||||||
|  |                 rules[int(before)] = l | ||||||
|  |             else: | ||||||
|  |                 rules[int(before)] = [int(after)] | ||||||
|  |         else: | ||||||
|  |             updates.append([int(x) for x in line.split(',')]) | ||||||
|  | 
 | ||||||
|  | #print(f'{rules=}') | ||||||
|  | #print(f'{updates=}') | ||||||
|  | 
 | ||||||
|  | good_updates = [] | ||||||
|  | for update in updates: | ||||||
|  |     broken_rule = False | ||||||
|  |     for num, page in enumerate(update): | ||||||
|  |         if page in rules: | ||||||
|  |             for p in rules[page]: | ||||||
|  |                 if p in update[0:num]: | ||||||
|  |                     broken_rule = True | ||||||
|  |                     break | ||||||
|  |     if not broken_rule: | ||||||
|  |         good_updates.append(update) | ||||||
|  | 
 | ||||||
|  | accum = 0 | ||||||
|  | print(f'# good_updates {len(good_updates)}') | ||||||
|  | for u in good_updates: | ||||||
|  |     accum += u[floor(len(u)/2)] | ||||||
|  | 
 | ||||||
|  | print(f'{accum=}') | ||||||
							
								
								
									
										1366
									
								
								2024/5/input.txt
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										1366
									
								
								2024/5/input.txt
									
									
									
									
									
										Normal file
									
								
							
										
											
												File diff suppressed because it is too large
												Load diff
											
										
									
								
							
							
								
								
									
										28
									
								
								2024/5/input_example.txt
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										28
									
								
								2024/5/input_example.txt
									
									
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,28 @@ | ||||||
|  | 47|53 | ||||||
|  | 97|13 | ||||||
|  | 97|61 | ||||||
|  | 97|47 | ||||||
|  | 75|29 | ||||||
|  | 61|13 | ||||||
|  | 75|53 | ||||||
|  | 29|13 | ||||||
|  | 97|29 | ||||||
|  | 53|29 | ||||||
|  | 61|53 | ||||||
|  | 97|53 | ||||||
|  | 61|29 | ||||||
|  | 47|13 | ||||||
|  | 75|47 | ||||||
|  | 97|75 | ||||||
|  | 47|61 | ||||||
|  | 75|61 | ||||||
|  | 47|29 | ||||||
|  | 75|13 | ||||||
|  | 53|13 | ||||||
|  | 
 | ||||||
|  | 75,47,61,53,29 | ||||||
|  | 97,61,53,29,13 | ||||||
|  | 75,29,13 | ||||||
|  | 75,97,47,61,53 | ||||||
|  | 61,13,29 | ||||||
|  | 97,13,75,29,47 | ||||||
		Loading…
	
		Reference in a new issue