Enable Javascript in your browser and then refresh this page, for a much enhanced experience.
First solution in Clear category for Calculator-IV by mildm
class Calc:
error=False
display="0"
state="num"
operator="="
memory="0"
pre=""
last=""
def calc(self,s=None):
s = self.display if s is None else self.memory + s
if self.error: return s
s=eval(s)
if type(s) == int:
self.error |= abs(s)>99999
self.memory=str(s)
return
s = round(s,(abs(s)<1000)+(abs(s)<100)+(abs(s)<10)+(abs(s)<1))
self.error |= abs(s)>9999.5
self.memory=str(s).strip("0")
def input(self,k):
if k in ".0123456789":
if self.state != "num" or self.display == "0":
self.display = k
elif len(self.display) < 5 and ( k != "." or "." not in self.display):
self.display += k
self.state = "num"
elif k in "=+-":
if self.operator == "=" and self.pre not in "+-=":
self.calc()
elif k == "=" and self.pre in "+-=":
if self.pre != "=": self.last = self.pre + self.memory
self.calc(self.last)
elif self.operator == "=":
self.calc()
elif self.state == "num":
self.last = self.operator + self.display
self.calc(self.last)
self.display = self.memory
self.state = "ope"
self.operator = k
self.pre = k
def result(self):
return "error" if self.state != "num" and self.error else self.display
def calculator(log: str) -> str:
c = Calc()
for k in list(log):
c.input(k)
return c.result()
March 25, 2024
Comments: