Stockfish (4000 ELO) mais pour les maths Veuillez admirer ma belle calculatrice
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 

73 lines
1.9 KiB

from Pile import Pile_chaine
from tkinter import *
class Expression:
def __init__(self, valeur, gauche, droit):
self.valeur = valeur
self.gauche = gauche
self.droit = droit
def evalue(self):
dfs_post(self)
print(self.valeur)
def __str__(self):
expstr = dfs_in(self, "")
return expstr
def dfs_post(a):
if a == None:
return
dfs_post(a.gauche)
dfs_post(a.droit)
if a.valeur == "+":
a.valeur = a.gauche.valeur + a.droit.valeur
if a.valeur == "*":
a.valeur = a.gauche.valeur * a.droit.valeur
def dfs_in(a, expstr):
if a == None:
return expstr
if a.gauche is not None or a.droit is not None:
expstr += "("
expstr = dfs_in(a.gauche, expstr)
expstr += str(a.valeur)
expstr = dfs_in(a.droit, expstr)
if a.gauche is not None or a.droit is not None:
expstr += ")"
return expstr
def npi2tree(exptext):
exptext = exptext.split()
expression = Pile_chaine()
for element in exptext:
if element in ("+", "*"):
droit = expression.depiler()
gauche = expression.depiler()
expression.empiler(Expression(element, gauche, droit))
else:
expression.empiler(Expression(int(element), None, None))
return expression.sommet()
def insert(text):
pass
window = Tk()
window.title("Stockfish mais pour les maths")
window.geometry(f"300x400+50+50")
canvas = Canvas(window, width = 300, height = 400, bg = "#abcdef")
canvas.pack()
lcdscreen = Entry(window, width = 35)
lcdscreen.place(x=5, y=5)
touches = "0 1 2 3 4 5 6 7 8 9 + * - / ^".split()
for touche in touches:
button = Button(window, text = touche, command = lambda touche=touche: insert(touche), bg = "#fedcba")
button.place(x=touches.index(touche) // 3 * 50 + 10, y = touches.index(touche) % 3 * 50 + 100)
exp = "6 4 3 + *"
exp = npi2tree(exp)
print(exp)
exp.evalue()