day24: input system for python z3
This commit is contained in:
		
							parent
							
								
									5b03b8f156
								
							
						
					
					
						commit
						1f83bca4e6
					
				| @ -103,3 +103,14 @@ let's try? | |||||||
|         z + Dz * t2 == 390970075767404 + -149 * t2 |         z + Dz * t2 == 390970075767404 + -149 * t2 | ||||||
|         solve for x, y, z, Dx, Dy, Dz, t1, t2, t3. ti > 0 |         solve for x, y, z, Dx, Dy, Dz, t1, t2, t3. ti > 0 | ||||||
|     #+end_src |     #+end_src | ||||||
|  | * got some solution | ||||||
|  | enefedov@LLF33A87M:~/Documents/personal/advent-of-code-2023$ python day24/pythonZ3/forInput.py | ||||||
|  | Solution: [t0 = 666003776903, | ||||||
|  |  t2 = 779453185471, | ||||||
|  |  t1 = 654152070134, | ||||||
|  |  Dz = 18, | ||||||
|  |  Dx = 47, | ||||||
|  |  Dy = -360, | ||||||
|  |  z = 273997500449219, | ||||||
|  |  y = 463222539161932, | ||||||
|  |  x = 239756157786030] | ||||||
|  | |||||||
							
								
								
									
										49
									
								
								day24/pythonZ3/forInput.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										49
									
								
								day24/pythonZ3/forInput.py
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,49 @@ | |||||||
|  | #!/usr/bin/env python3 | ||||||
|  | 
 | ||||||
|  | from z3 import * | ||||||
|  | 
 | ||||||
|  | s = Solver() | ||||||
|  | 
 | ||||||
|  | x = Real('x') | ||||||
|  | Dx = Real('Dx') | ||||||
|  | y = Real('y') | ||||||
|  | Dy = Real('Dy') | ||||||
|  | z = Real('z') | ||||||
|  | Dz = Real('Dz') | ||||||
|  | t0 = Real('t0') | ||||||
|  | eqT0 = t0 >= 0 | ||||||
|  | eq0x = x + Dx * t0 == (185 * t0) + 147847636573416 | ||||||
|  | eq0y = y + Dy * t0 == (49 * t0) + 190826994408605 | ||||||
|  | eq0z = z + Dz * t0 == (219 * t0) + 140130741291716 | ||||||
|  | t1 = Real('t1') | ||||||
|  | eqT1 = t1 >= 0 | ||||||
|  | eq1x = x + Dx * t1 == (-26 * t1) + 287509258905812 | ||||||
|  | eq1y = y + Dy * t1 == (31 * t1) + 207449079739538 | ||||||
|  | eq1z = z + Dz * t1 == (8 * t1) + 280539021150559 | ||||||
|  | t2 = Real('t2') | ||||||
|  | eqT2 = t2 >= 0 | ||||||
|  | eq2x = x + Dx * t2 == (-147 * t2) + 390970075767404 | ||||||
|  | eq2y = y + Dy * t2 == (-453 * t2) + 535711685410735 | ||||||
|  | eq2z = z + Dz * t2 == (-149 * t2) + 404166182422876 | ||||||
|  | #solve for x, y, z, Dx, Dy, Dz, t1, t2, t3. | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | s.add(eqT0, | ||||||
|  |       eq0x, | ||||||
|  |       eq0y, | ||||||
|  |       eq0z, | ||||||
|  |       eqT1, | ||||||
|  |       eq1x, | ||||||
|  |       eq1y, | ||||||
|  |       eq1z, | ||||||
|  |       eqT2, | ||||||
|  |       eq2x, | ||||||
|  |       eq2y, | ||||||
|  | eq2z) | ||||||
|  | 
 | ||||||
|  | if s.check() == sat: | ||||||
|  |     print("Solution:", s.model()) | ||||||
|  | else: | ||||||
|  |     print("No solution found") | ||||||
|  | 
 | ||||||
|  | print(273997500449219 + 463222539161932 + 239756157786030) | ||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user