This commit is contained in:
Ben Charlton 2020-12-22 20:01:31 +00:00
parent 3a23406310
commit c305a3bfca
2 changed files with 119 additions and 0 deletions

57
18/18-1.py Normal file
View file

@ -0,0 +1,57 @@
#!/usr/bin/python3
import sys, re
def find_paren(items):
if ')' not in items:
return None
close = items.index(')')
for x in range(close, -1, -1):
#print (x,items[x])
if items[x] == '(':
return(x, close)
def do(op, a, b):
if op == '+':
return a+b
elif op == '-':
return a-b
elif op == '*':
return a*b
elif op == '/':
return a/b
def solve(nums):
items = nums.split(' ')
total = None
op = ''
for n in items:
if n == '*' or n == '+' or n == '-' or n == '/':
op = n
else:
if total is None:
total = int(n)
else:
total = do(op, total, int(n))
return total
def process(items):
p = find_paren(items)
while p is not None:
before = p[0]
after = p[1]
nitems = items[:before] + str(solve(items[before+1:after])) + items[after+1:]
items = nitems
p = find_paren(items)
return(solve(items))
all = []
for line in sys.stdin:
line = line.rstrip()
print(line)
all.append(process(line))
print(sum(all))

62
18/18-2.py Normal file
View file

@ -0,0 +1,62 @@
#!/usr/bin/python3
import sys, re
def find_paren(items):
if ')' not in items:
return None
close = items.index(')')
for x in range(close, -1, -1):
#print (x,items[x])
if items[x] == '(':
return(x, close)
def do(op, a, b):
if op == '+':
return a+b
elif op == '-':
return a-b
elif op == '*':
return a*b
elif op == '/':
return a/b
def solve(nums):
items = nums.split(' ')
total = None
op = ''
for n in items:
if n == '*' or n == '+' or n == '-' or n == '/':
op = n
else:
if total is None:
total = int(n)
else:
total = do(op, total, int(n))
return total
def process(items):
items =re.sub('(\d+ \+ \d+)', '(\\1)', items)
print(items)
p = find_paren(items)
while p is not None:
before = p[0]
after = p[1]
nitems = items[:before] + str(solve(items[before+1:after])) + items[after+1:]
items = nitems
items =re.sub('(\d+ \+ \d+)', '(\\1)', items)
p = find_paren(items)
return(solve(items))
all = []
for line in sys.stdin:
line = line.rstrip()
print(line)
res = process(line)
print(res)
all.append(res)
print(sum(all))