Solved 2015/12 P1+P2
This commit is contained in:
parent
9e95a2d75f
commit
41a0ed3e8e
@ -24,8 +24,6 @@ What is the *sum of all numbers* in the document?
|
|||||||
|
|
||||||
Your puzzle answer was `191164`.
|
Your puzzle answer was `191164`.
|
||||||
|
|
||||||
The first half of this puzzle is complete! It provides one gold star: \*
|
|
||||||
|
|
||||||
## \-\-- Part Two \-\-- {#part2}
|
## \-\-- Part Two \-\-- {#part2}
|
||||||
|
|
||||||
Uh oh - the Accounting-Elves have realized that they double-counted
|
Uh oh - the Accounting-Elves have realized that they double-counted
|
||||||
@ -43,8 +41,14 @@ the value `"red"`. Do this only for objects (`{...}`), not arrays
|
|||||||
- `[1,"red",5]` has a sum of `6`, because `"red"` in an array has no
|
- `[1,"red",5]` has a sum of `6`, because `"red"` in an array has no
|
||||||
effect.
|
effect.
|
||||||
|
|
||||||
Answer:
|
Your puzzle answer was `87842`.
|
||||||
|
|
||||||
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](/2015) and
|
||||||
|
try another puzzle.
|
||||||
|
|
||||||
|
If you still want to see it, you can [get your puzzle
|
||||||
input](12/input).
|
input](12/input).
|
||||||
|
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
#!/bin/python3
|
#!/bin/python3
|
||||||
import sys,time,re
|
import sys,time,re,json
|
||||||
from pprint import pprint
|
from pprint import pprint
|
||||||
sys.path.insert(0, '../../')
|
sys.path.insert(0, '../../')
|
||||||
from fred import list2int,get_re,nprint,lprint,loadFile
|
from fred import list2int,get_re,nprint,lprint,loadFile
|
||||||
@ -7,26 +7,56 @@ start_time = time.time()
|
|||||||
|
|
||||||
input_f = 'input'
|
input_f = 'input'
|
||||||
|
|
||||||
part = 1
|
|
||||||
#########################################
|
#########################################
|
||||||
# #
|
# #
|
||||||
# Part 1 #
|
# Part 1 #
|
||||||
# #
|
# #
|
||||||
#########################################
|
#########################################
|
||||||
|
|
||||||
if part == 1:
|
def loadLine(input_f:str) -> str:
|
||||||
with open(input_f) as file:
|
with open(input_f) as file:
|
||||||
instructions = file.readline().rstrip()
|
instructions = file.readline().rstrip()
|
||||||
|
return instructions
|
||||||
match = re.findall(r"(-?\d+)",instructions)
|
|
||||||
print(sum(list2int(match)))
|
def sum_numbers(inst:str) -> int:
|
||||||
|
return sum(list2int(re.findall(r"(-?\d+)",inst)))
|
||||||
|
|
||||||
|
def part1() -> int:
|
||||||
|
return sum_numbers(loadLine(input_f))
|
||||||
|
|
||||||
|
start_time = time.time()
|
||||||
|
print('Part 1:',part1(), '\t\t', round((time.time() - start_time)*1000), 'ms')
|
||||||
|
|
||||||
#########################################
|
#########################################
|
||||||
# #
|
# #
|
||||||
# Part 2 #
|
# Part 2 #
|
||||||
# #
|
# #
|
||||||
#########################################
|
#########################################
|
||||||
if part == 2:
|
|
||||||
exit()
|
|
||||||
|
|
||||||
print("--- %s seconds ---" % (time.time() - start_time))
|
def remove_red(data):
|
||||||
|
if isinstance(data, dict):
|
||||||
|
if "red" in data.values():
|
||||||
|
return None
|
||||||
|
|
||||||
|
filtered_dict = {}
|
||||||
|
for key, value in data.items():
|
||||||
|
filtered_value = remove_red(value)
|
||||||
|
if filtered_value is not None:
|
||||||
|
filtered_dict[key] = filtered_value
|
||||||
|
return filtered_dict
|
||||||
|
|
||||||
|
elif isinstance(data, list):
|
||||||
|
filtered_list = []
|
||||||
|
for item in data:
|
||||||
|
filtered_item = remove_red(item)
|
||||||
|
if filtered_item is not None:
|
||||||
|
filtered_list.append(filtered_item)
|
||||||
|
return filtered_list
|
||||||
|
else:
|
||||||
|
return data
|
||||||
|
|
||||||
|
def part2():
|
||||||
|
return sum_numbers(str(remove_red(json.loads(loadLine(input_f)))))
|
||||||
|
|
||||||
|
start_time = time.time()
|
||||||
|
print('Part 2:',part2(), '\t\t', round((time.time() - start_time)*1000), 'ms')
|
||||||
|
Binary file not shown.
17
solution.py
17
solution.py
@ -7,14 +7,16 @@ start_time = time.time()
|
|||||||
|
|
||||||
input_f = 'test'
|
input_f = 'test'
|
||||||
|
|
||||||
part = 1
|
|
||||||
#########################################
|
#########################################
|
||||||
# #
|
# #
|
||||||
# Part 1 #
|
# Part 1 #
|
||||||
# #
|
# #
|
||||||
#########################################
|
#########################################
|
||||||
|
def part1():
|
||||||
if part == 1:
|
return
|
||||||
|
|
||||||
|
start_time = time.time()
|
||||||
|
print('Part 2:',part1(), '\t\t', round((time.time() - start_time)*1000), 'ms')
|
||||||
|
|
||||||
|
|
||||||
#########################################
|
#########################################
|
||||||
@ -22,7 +24,8 @@ if part == 1:
|
|||||||
# Part 2 #
|
# Part 2 #
|
||||||
# #
|
# #
|
||||||
#########################################
|
#########################################
|
||||||
if part == 2:
|
def part1():
|
||||||
exit()
|
return
|
||||||
|
|
||||||
print("--- %s seconds ---" % (time.time() - start_time))
|
start_time = time.time()
|
||||||
|
print('Part 2:',part1(), '\t\t', round((time.time() - start_time)*1000), 'ms')
|
Loading…
Reference in New Issue
Block a user