Added 2017/13 part 2
This commit is contained in:
parent
31fec7fe38
commit
e4caab3731
@ -193,8 +193,6 @@ immediately, *what is the severity of your whole trip*?
|
|||||||
|
|
||||||
Your puzzle answer was `1844`.
|
Your puzzle answer was `1844`.
|
||||||
|
|
||||||
The first half of this puzzle is complete! It provides one gold star: \*
|
|
||||||
|
|
||||||
## \-\-- Part Two \-\-- {#part2}
|
## \-\-- Part Two \-\-- {#part2}
|
||||||
|
|
||||||
Now, you need to pass through the firewall without being caught - easier
|
Now, you need to pass through the firewall without being caught - easier
|
||||||
@ -320,7 +318,13 @@ picoseconds you would need to delay to get through safely is `10`.
|
|||||||
*What is the fewest number of picoseconds* that you need to delay the
|
*What is the fewest number of picoseconds* that you need to delay the
|
||||||
packet to pass through the firewall without being caught?
|
packet to pass through the firewall without being caught?
|
||||||
|
|
||||||
Answer:
|
Your puzzle answer was `3897604`.
|
||||||
|
|
||||||
Although it hasn\'t changed, you can still [get your puzzle
|
Both parts of this puzzle are complete! They provide two gold stars:
|
||||||
|
\*\*
|
||||||
|
|
||||||
|
At this point, you should [return to your Advent calendar](/2017) and
|
||||||
|
try another puzzle.
|
||||||
|
|
||||||
|
If you still want to see it, you can [get your puzzle
|
||||||
input](13/input).
|
input](13/input).
|
||||||
|
@ -6,7 +6,7 @@ from fred import list2int, ppprint
|
|||||||
|
|
||||||
input_f = 'input'
|
input_f = 'input'
|
||||||
|
|
||||||
part = 2
|
part = 3
|
||||||
|
|
||||||
#########################################
|
#########################################
|
||||||
# #
|
# #
|
||||||
@ -16,8 +16,6 @@ part = 2
|
|||||||
|
|
||||||
grid = []
|
grid = []
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
if part == 1:
|
if part == 1:
|
||||||
for i in range(0,100):
|
for i in range(0,100):
|
||||||
grid.append([])
|
grid.append([])
|
||||||
@ -103,7 +101,7 @@ if part == 1:
|
|||||||
# #
|
# #
|
||||||
#########################################
|
#########################################
|
||||||
if part == 2:
|
if part == 2:
|
||||||
grid_length = 100
|
grid_length = 7
|
||||||
for i in range(0,grid_length):
|
for i in range(0,grid_length):
|
||||||
grid.append([])
|
grid.append([])
|
||||||
with open(input_f) as file:
|
with open(input_f) as file:
|
||||||
@ -115,6 +113,8 @@ if part == 2:
|
|||||||
count = 0
|
count = 0
|
||||||
hit = []
|
hit = []
|
||||||
|
|
||||||
|
debug = 0
|
||||||
|
|
||||||
direction = 1
|
direction = 1
|
||||||
|
|
||||||
packet_loc = 0
|
packet_loc = 0
|
||||||
@ -144,11 +144,12 @@ if part == 2:
|
|||||||
#print(packet_loc,scanner_loc)
|
#print(packet_loc,scanner_loc)
|
||||||
|
|
||||||
for idx,i in enumerate(grid):
|
for idx,i in enumerate(grid):
|
||||||
|
debug += 1
|
||||||
|
|
||||||
if scanner_loc[idx] == 0 and packet_loc == idx:
|
if scanner_loc[idx] == 0 and packet_loc == idx:
|
||||||
hit.append(idx)
|
hit.append(idx)
|
||||||
#print('Got hit at',idx)
|
print('Got hit at',idx)
|
||||||
got_hit = True
|
got_hit = True
|
||||||
elif len(grid[idx]) != 0:
|
elif len(grid[idx]) != 0:
|
||||||
loc = scanner_loc[idx] % len(grid[idx])
|
loc = scanner_loc[idx] % len(grid[idx])
|
||||||
scanner_loc[idx] += directions[idx]
|
scanner_loc[idx] += directions[idx]
|
||||||
@ -158,9 +159,12 @@ if part == 2:
|
|||||||
directions[idx] = 1
|
directions[idx] = 1
|
||||||
if got_hit:
|
if got_hit:
|
||||||
break
|
break
|
||||||
|
#print(grid)
|
||||||
packet_loc += 1
|
packet_loc += 1
|
||||||
|
|
||||||
if len(hit) == 0:
|
if len(hit) == 0:
|
||||||
print(abs(start_loc))
|
print(abs(start_loc))
|
||||||
|
print('Debug:',debug)
|
||||||
break
|
break
|
||||||
#input()
|
#input()
|
||||||
#print(hit)
|
#print(hit)
|
||||||
@ -171,3 +175,49 @@ if part == 2:
|
|||||||
#print(damage)
|
#print(damage)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
if part == 3:
|
||||||
|
grid_length = 100
|
||||||
|
scanners = {}
|
||||||
|
for i in range(0,grid_length):
|
||||||
|
grid.append([])
|
||||||
|
with open(input_f) as file:
|
||||||
|
for line in file:
|
||||||
|
l = line.rstrip().split(': ')
|
||||||
|
l = list2int(l)
|
||||||
|
for i in range(0,l[1]):
|
||||||
|
grid[l[0]].append('[ ]')
|
||||||
|
|
||||||
|
for idx,i in enumerate(grid):
|
||||||
|
scanners[idx] = len(i)
|
||||||
|
|
||||||
|
debug = 0
|
||||||
|
damage = 0
|
||||||
|
delay = 0
|
||||||
|
End = False
|
||||||
|
|
||||||
|
|
||||||
|
while not End:
|
||||||
|
damage = False
|
||||||
|
for spot, range in enumerate(grid):
|
||||||
|
debug += 1
|
||||||
|
#print(spot%(2*(scanners[spot]-1)))
|
||||||
|
|
||||||
|
if not (delay+spot)%(2*(len(range)-1)) and len(range) > 0:
|
||||||
|
#print('hit at ', spot)
|
||||||
|
damage += 1
|
||||||
|
break
|
||||||
|
if damage:
|
||||||
|
delay += 1
|
||||||
|
else:
|
||||||
|
End = True
|
||||||
|
|
||||||
|
#print('-----')
|
||||||
|
#print()
|
||||||
|
#print('debug',debug)
|
||||||
|
#input()
|
||||||
|
print(debug)
|
||||||
|
print(delay)
|
||||||
|
#pprint(grid)
|
||||||
|
#print(scanners)
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user