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