diff options
Diffstat (limited to 'THT-C/Q-2016/bai2.py')
-rwxr-xr-x | THT-C/Q-2016/bai2.py | 47 |
1 files changed, 0 insertions, 47 deletions
diff --git a/THT-C/Q-2016/bai2.py b/THT-C/Q-2016/bai2.py deleted file mode 100755 index bb04c54..0000000 --- a/THT-C/Q-2016/bai2.py +++ /dev/null @@ -1,47 +0,0 @@ -#!/usr/bin/env python3 -d = {'+': '+', '-': '-', '.': '*', ':': '/', '^': '**'} - -def Steps(string): - val = int() - for char in string: - if char in '+-.:^': - val += 1 - return val - -def Calc(string): - global d - for char in '+-.:^': - string = string.replace(char, ' {} '.format(char)) - l = string.split() - for char in '^.:+-': - if char in l: - idx = l.index(char) - s = ' '.join(l[idx - 1:idx + 2]) - return string.replace(s, str(eval(s.replace(char, d[char])))) - -def MetaCalc(string): - for idx0, char0 in enumerate(string): - if char0 == ')': - for idx1, char1 in enumerate(reversed(string)): - if char1 == '(': - idx1 = len(string) - idx1 - 1 - s = '({})'.format(Calc(string[idx1 + 1:idx0])) - if not(Steps(s)) or ((Steps(s) == 1) and (s[:2] == '(-')): - s = s[1:-1] - return string.replace(string[idx1:idx0 + 1], s) - return Calc(string) - -with open('bai2.inp') as f: - s = f.readline() -lines = Steps(s) -for i in d: - s = s.replace(i, ' ' + i + ' ') -for i in d: - s = s.replace(i + ' - ', i + ' -') -l = s.split() -with open('bai2.out', 'w') as f: - f.write(''.join(l) + '\n') - for _ in range(lines): - s = MetaCalc(s).replace(' ', '') - f.write('=' + s) - print(s) |