28 lines
676 B
Plaintext
28 lines
676 B
Plaintext
|
|
#!/usr/bin/env python3
|
||
|
|
|
||
|
|
import sys as _sys
|
||
|
|
import json as _json
|
||
|
|
|
||
|
|
|
||
|
|
def evaluate(node):
|
||
|
|
# _sys.stderr.write("eval: %s\n" % _json.dumps(node))
|
||
|
|
if (node["label"] == "constant"):
|
||
|
|
return node["value"][0]["data"]["value"]
|
||
|
|
elif (node["label"] == "negation"):
|
||
|
|
return (not evaluate(node["children"][0]))
|
||
|
|
elif (node["label"] == "conjunction"):
|
||
|
|
return (evaluate(node["children"][0]) and evaluate(node["children"][1]))
|
||
|
|
elif (node["label"] == "disjunction"):
|
||
|
|
return (evaluate(node["children"][0]) or evaluate(node["children"][1]))
|
||
|
|
|
||
|
|
|
||
|
|
def main():
|
||
|
|
content = _sys.stdin.read()
|
||
|
|
node = _json.loads(content)
|
||
|
|
value = evaluate(node)
|
||
|
|
_sys.stdout.write(str(value) + "\n")
|
||
|
|
|
||
|
|
|
||
|
|
main()
|
||
|
|
|