Compare commits
	
		
			2 Commits
		
	
	
		
			0478a8789a
			...
			6ddcc106ec
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| 6ddcc106ec | |||
| 8ec6322f51 | 
							
								
								
									
										21
									
								
								2017/02/2checksum.py
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										21
									
								
								2017/02/2checksum.py
									
									
									
									
									
										Executable file
									
								
							| @ -0,0 +1,21 @@ | ||||
| #!/usr/bin/env python3 | ||||
| 
 | ||||
| if __name__ == '__main__': | ||||
|     total = 0 | ||||
|     with open("input", "r", encoding="utf-8") as sheet: | ||||
|         remainder = [] | ||||
|         for line in sheet: | ||||
|             values = list(map(int, line.split())) | ||||
|             values.sort() | ||||
|             result = "" | ||||
|             i = 1 | ||||
|             while i < len(values) and result == "": | ||||
|                 j = 0 | ||||
|                 while j >= 0 and j < i and result == "": | ||||
|                     remainder = values[i] % values[j] | ||||
|                     if remainder == 0: | ||||
|                         result = int(values[i] / values[j]) | ||||
|                     j += 1 | ||||
|                 i += 1 | ||||
|             total += result | ||||
|     print(total) | ||||
							
								
								
									
										41
									
								
								2017/03/1spiral_memory.py
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										41
									
								
								2017/03/1spiral_memory.py
									
									
									
									
									
										Executable file
									
								
							| @ -0,0 +1,41 @@ | ||||
| #!/usr/bin/env python3 | ||||
| if __name__ == '__main__': | ||||
|     target = 277678 | ||||
|     xstep = 1 | ||||
|     ystep = 1 | ||||
|     origin = [0, 0] | ||||
|     square = 1 | ||||
|     pointer = origin | ||||
| 
 | ||||
|     def inc_step(step): | ||||
|       if step >= 0: | ||||
|         return int(-1 * (step + 1)) | ||||
|       else: | ||||
|         return int(-1 * (step - 1)) | ||||
| 
 | ||||
|     while square < target: | ||||
|       i = 1 | ||||
|       while i <= abs(xstep) and square < target: | ||||
|         square += 1 | ||||
|         if xstep >= 0: | ||||
|           pointer[0] += 1 | ||||
|         else: | ||||
|           pointer[0] += -1 | ||||
|         i += 1 | ||||
|       xstep = inc_step(xstep) | ||||
| 
 | ||||
|       i = 1 | ||||
|       while i <= abs(ystep) and square < target: | ||||
|         square += 1 | ||||
|         if ystep >= 0: | ||||
|           pointer[1] += 1 | ||||
|         else: | ||||
|           pointer[1] += -1 | ||||
|         i += 1 | ||||
|       ystep = inc_step(ystep) | ||||
| 
 | ||||
|     if square == target: | ||||
|       xloc = pointer[0] | ||||
|       yloc = pointer[1] | ||||
|       distance = abs(xloc) + abs(yloc) | ||||
|       print(f"dist to square {target} is {int(abs(xloc))}+{int(abs(yloc))}={distance}") | ||||
							
								
								
									
										62
									
								
								2017/03/notes
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										62
									
								
								2017/03/notes
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,62 @@ | ||||
| spiral memory! | ||||
| 
 | ||||
| i think i'll keep a live count of the current position relative to square 1, | ||||
| slowly stepping one by one through each square sequentially. | ||||
| my input is only 277678, so this should be fine! | ||||
| 
 | ||||
| i notice that the pointer starts at square 1, at, say, (0,0), | ||||
| and then moves one square right, then one up, | ||||
| then two left, then two down, | ||||
| then three right, three up, etc | ||||
| 
 | ||||
| seems like it follows the pattern: | ||||
| 
 | ||||
| (x1 , y1 ) = (0      , 0     ) | ||||
| (x2 , y2 ) = (x1 + 1 , y1    ) | ||||
| (x3 , y3 ) = (x2     , y1 + 1) | ||||
| (x5 , y5 ) = (x3 - 2 , y3    ) | ||||
| (x7 , y7 ) = (x5     , y3 - 2) | ||||
| (x10, y10) = (x5 + 3 , y7    ) | ||||
| etc. | ||||
| 
 | ||||
| i'll just for loop this shit | ||||
| something like: (copied to 1spiral_memory.py and worked further from there) | ||||
| (the following is my first rough sketch. see 1spiral_memory.py) | ||||
| 
 | ||||
| target = 277678 | ||||
| xstep = 1 | ||||
| ystep = 1 | ||||
| origin = (0, 0) | ||||
| square = 1 | ||||
| pointer = origin | ||||
| 
 | ||||
| def inc_step(step): | ||||
|   if step >= 0: | ||||
|     return int(-1 * (step + 1)) | ||||
|   else: | ||||
|     return int(-1 * (step - 1)) | ||||
| 
 | ||||
| while square < target: | ||||
|   i = 1 | ||||
|   while i <= abs(xstep) and square < target: | ||||
|     square += 1 | ||||
|     if xstep >= 0: | ||||
|       pointer += (1, 0) | ||||
|     else: | ||||
|       pointer -= (1, 0) | ||||
|     i += 1 | ||||
|   xstep = inc_step(xstep) | ||||
| 
 | ||||
|   i = 1 | ||||
|   while i <= abs(ystep) and square < target: | ||||
|     square += 1 | ||||
|     if ystep >= 0: | ||||
|       pointer += (0, 1) | ||||
|     else: | ||||
|       pointer -= (0, 1) | ||||
|   ystep = inc_step(ystep) | ||||
| 
 | ||||
| if square == target: | ||||
|   xloc = pointer[0] | ||||
|   yloc = pointer[1] | ||||
|   distance = abs(xloc) + abs(yloc) | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user