d22p2
This commit is contained in:
		
							
								
								
									
										30
									
								
								day22/d22p2.swift
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										30
									
								
								day22/d22p2.swift
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,30 @@ | ||||
| import Foundation | ||||
|  | ||||
| func readInput(_ filePath: String) throws -> [Int] { | ||||
|     return try String(contentsOfFile: filePath, encoding: .ascii) | ||||
|         .split(separator: "\n").compactMap { Int($0) } | ||||
| } | ||||
|  | ||||
| func haggle(_ seeds: [Int]) -> [[Int]: [Int: Int]] { | ||||
|     var bananas: [[Int]: [Int: Int]] = [:] | ||||
|     for (monkey, seed) in seeds.enumerated() { | ||||
|         var prevs = [Int.min, Int.min, Int.min, Int.min] | ||||
|         var lastPrice = seed | ||||
|         for _ in 0..<2000 { | ||||
|             var price = ((lastPrice << 6) ^ lastPrice) & 16777215 | ||||
|             price = ((price >> 5) ^ price) | ||||
|             price = ((price << 11) ^ price) & 16777215 | ||||
|             prevs[0] = prevs[1]; prevs[1] = prevs[2]; prevs[2] = prevs[3] | ||||
|             prevs[3] = (price % 10) - (lastPrice % 10) | ||||
|             lastPrice = price | ||||
|             if let _ = bananas[prevs, default: [:]][monkey] { continue } | ||||
|             bananas[prevs, default: [:]][monkey] = price % 10 | ||||
|         } | ||||
|     } | ||||
|     return bananas | ||||
| } | ||||
|  | ||||
| let seeds = try readInput(CommandLine.arguments[1]) | ||||
| let bananas = haggle(seeds) | ||||
| print(bananas.values.map { $0.values.reduce(0, +) }.max() ?? "ERROR") | ||||
|  | ||||
							
								
								
									
										4
									
								
								day22/test2.txt
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										4
									
								
								day22/test2.txt
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,4 @@ | ||||
| 1 | ||||
| 2 | ||||
| 3 | ||||
| 2024 | ||||
		Reference in New Issue
	
	Block a user