Keta/chainify.py

37 lines
739 B
Python
Raw Normal View History

2019-12-26 09:23:20 +00:00
dyads = "*+-/%"
monads = list(map(chr, range(ord("A"), ord("Z") + 1)))
nilads = "1234567890"
2019-12-26 09:48:18 +00:00
source = input()[::-1]
2019-12-26 09:23:20 +00:00
arities = []
for char in source:
if char in dyads:
arities.append((2, char))
elif char in monads:
arities.append((1, char))
else:
arities.append((0, char))
exprs = []
2019-12-26 09:48:18 +00:00
expr = []
patterns = ["02", "10", "11", "12", "20", "21", "22"]
pattern = ""
2019-12-26 09:23:20 +00:00
while len(arities):
2019-12-26 09:48:18 +00:00
if pattern in patterns:
exprs += [pattern, expr]
expr = []
pattern = ""
pattern += str(arities[-1][0])
expr.append(arities[-1][1])
arities.pop()
2019-12-26 09:23:20 +00:00
2019-12-26 09:48:18 +00:00
if not exprs and pattern in patterns:
exprs += [pattern, expr]
expr = []
pattern = ""
2019-12-26 09:23:20 +00:00
print(exprs)