Luna Lailatova
2 years ago
3 changed files with 2031 additions and 7 deletions
@ -0,0 +1,83 @@ |
|||||||
|
with open('input21.txt','r') as f: |
||||||
|
inp = f.read().splitlines(keepends=False) |
||||||
|
|
||||||
|
_monkeys = {} |
||||||
|
|
||||||
|
for line in inp: |
||||||
|
monkey, value = line.split(': ') |
||||||
|
_monkeys[monkey] = value |
||||||
|
|
||||||
|
Equation1 = _monkeys['root'].split()[0] |
||||||
|
Equation2 = _monkeys['root'].split()[2] |
||||||
|
print(Equation1, Equation2) |
||||||
|
|
||||||
|
n = 0 |
||||||
|
done = False |
||||||
|
|
||||||
|
monkeys = _monkeys.copy() |
||||||
|
monkeys['humn'] = 'humn' |
||||||
|
|
||||||
|
while not done: |
||||||
|
done = True |
||||||
|
for item in Equation1.split(): |
||||||
|
if item not in ['-','+','/','*','humn','(',')'] and not item.isnumeric(): |
||||||
|
if monkeys[item].isnumeric(): |
||||||
|
insert = monkeys[item] |
||||||
|
else: |
||||||
|
insert = '( ' + monkeys[item] + ' )' |
||||||
|
Equation1 = Equation1.replace(item, insert) |
||||||
|
done = False |
||||||
|
break |
||||||
|
done = False |
||||||
|
while not done: |
||||||
|
done = True |
||||||
|
for item in Equation2.split(): |
||||||
|
if item not in ['-','+','/','*','humn','(',')'] and not item.isnumeric(): |
||||||
|
if monkeys[item].isnumeric(): |
||||||
|
insert = monkeys[item] |
||||||
|
else: |
||||||
|
insert = '( ' + monkeys[item] + ' )' |
||||||
|
Equation2 = Equation2.replace(item, insert) |
||||||
|
done = False |
||||||
|
break |
||||||
|
|
||||||
|
if 'humn' in Equation1: |
||||||
|
Equation1 = Equation1.replace('humn', 'x') |
||||||
|
Equation = eval('lambda x:' + Equation1) |
||||||
|
else: |
||||||
|
Equation1 = eval('lambda x:' + Equation1) |
||||||
|
number = Equation1(1) |
||||||
|
|
||||||
|
if 'humn' in Equation2: |
||||||
|
Equation2 = Equation2.replace('humn', 'x') |
||||||
|
Equation = eval('lambda x:' + Equation2) |
||||||
|
else: |
||||||
|
Equation2 = eval('lambda x:' + Equation2) |
||||||
|
number = Equation2(1) |
||||||
|
|
||||||
|
if Equation(0) < number: |
||||||
|
increase = False |
||||||
|
else: |
||||||
|
increase = True |
||||||
|
|
||||||
|
step = 100000000 |
||||||
|
|
||||||
|
while not Equation(n) == number: |
||||||
|
print(n, Equation(n), number) |
||||||
|
if increase: |
||||||
|
if Equation(n) < number: |
||||||
|
increase = False |
||||||
|
step /= 10 |
||||||
|
else: |
||||||
|
n += step |
||||||
|
else: |
||||||
|
if Equation(n) > number: |
||||||
|
increase = True |
||||||
|
step /= 10 |
||||||
|
else: |
||||||
|
n -= step |
||||||
|
|
||||||
|
print(n) |
||||||
|
print(Equation1,'\n', Equation2) |
||||||
|
|
||||||
|
|
@ -1,7 +1,15 @@ |
|||||||
1 |
root: pppw + sjmn |
||||||
2 |
dbpl: 5 |
||||||
-3 |
cczh: sllz + lgvd |
||||||
3 |
zczc: 2 |
||||||
-2 |
ptdq: humn - dvpt |
||||||
0 |
dvpt: 3 |
||||||
4 |
lfqf: 4 |
||||||
|
humn: 5 |
||||||
|
ljgn: 2 |
||||||
|
sjmn: drzm * dbpl |
||||||
|
sllz: 4 |
||||||
|
pppw: cczh / lfqf |
||||||
|
lgvd: ljgn * ptdq |
||||||
|
drzm: hmdt - zczc |
||||||
|
hmdt: 32 |
Loading…
Reference in new issue