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
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()
|