python(day18): update
This commit is contained in:
parent
46dff81bad
commit
35d4242541
|
@ -1,47 +1,48 @@
|
||||||
import fileinput
|
import fileinput
|
||||||
|
|
||||||
|
|
||||||
|
def find_matching_parenthesis(line):
|
||||||
|
depth = 1
|
||||||
|
for i, c in enumerate(line[1:]):
|
||||||
|
if c == "(":
|
||||||
|
depth += 1
|
||||||
|
if c == ")":
|
||||||
|
depth -= 1
|
||||||
|
if depth == 0:
|
||||||
|
break
|
||||||
|
return i
|
||||||
|
|
||||||
|
|
||||||
def solve(line):
|
def solve(line):
|
||||||
|
print("".join(line))
|
||||||
if line[0].isdigit():
|
if line[0].isdigit():
|
||||||
if len(line) == 1:
|
if len(line) == 1:
|
||||||
return int(line[0])
|
return int(line[0])
|
||||||
if len(line) == 3 and line[1] == '+':
|
|
||||||
return int(line[0]) + int(line[2])
|
|
||||||
if len(line) == 3 and line[1] == '*':
|
|
||||||
return int(line[0]) * int(line[2])
|
|
||||||
if line[1] == '+':
|
|
||||||
if line[2] == '(':
|
|
||||||
depth = 1
|
|
||||||
for i, c in enumerate(line[3:]):
|
|
||||||
if c == '(':
|
|
||||||
depth += 1
|
|
||||||
if c == ')':
|
|
||||||
depth -= 1
|
|
||||||
if depth == 0:
|
|
||||||
break
|
|
||||||
|
|
||||||
inner = int(line[0]) + solve(line[3:i+3])
|
if len(line) == 3:
|
||||||
return solve([str(inner)] + line[i+4:])
|
if line[1] == "+":
|
||||||
|
return int(line[0]) + int(line[2])
|
||||||
|
if line[1] == "*":
|
||||||
|
return int(line[0]) * int(line[2])
|
||||||
|
|
||||||
|
if line[1] == "+":
|
||||||
|
if line[2] == "(":
|
||||||
|
closing = find_matching_parenthesis(line[2:])
|
||||||
|
inner = int(line[0]) + solve(line[3 : closing + 4])
|
||||||
|
return solve([str(inner)] + line[closing + 5 :])
|
||||||
else:
|
else:
|
||||||
v = solve(line[:3])
|
v = solve(line[:3])
|
||||||
return solve([str(v)] + line[3:])
|
return solve([str(v)] + line[3:])
|
||||||
if line[1] == '*':
|
|
||||||
|
if line[1] == "*":
|
||||||
return solve(line[:1]) * solve(line[2:])
|
return solve(line[:1]) * solve(line[2:])
|
||||||
raise BaseException(f"HELP {repr(line)}")
|
raise BaseException(f"HELP {repr(line)}")
|
||||||
|
|
||||||
|
if line[0] == "(":
|
||||||
|
closing = find_matching_parenthesis(line[1:])
|
||||||
|
inner = str(solve(line[1 : closing +2]))
|
||||||
|
return solve([inner] + line[closing +3 :])
|
||||||
|
|
||||||
if line[0] == '(':
|
|
||||||
depth = 1
|
|
||||||
for i, c in enumerate(line[1:]):
|
|
||||||
if c == '(':
|
|
||||||
depth += 1
|
|
||||||
if c == ')':
|
|
||||||
depth -= 1
|
|
||||||
if depth == 0:
|
|
||||||
break
|
|
||||||
|
|
||||||
inner = str(solve(line[1:i+1]))
|
|
||||||
return solve([inner] + line[i+2:])
|
|
||||||
|
|
||||||
summ = 0
|
summ = 0
|
||||||
for line in fileinput.input():
|
for line in fileinput.input():
|
||||||
|
|
Loading…
Reference in New Issue