-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathmain.py
121 lines (101 loc) · 4.06 KB
/
main.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
import sys
import re
from sympy import symbols, Eq, solve, sympify
def print_ascii_art():
ascii_art = """
/$$ /$$ /$$$$$$ /$$$$$$$$ /$$ /$$ /$$$$$$ /$$$$$$$
| $$$ /$$$ /$$__ $$|__ $$__/| $$ | $$ /$$__ $$| $$__ $$
| $$$$ /$$$$| $$ \ $$ | $$ | $$ | $$| $$ \ $$| $$ \ $$
| $$ $$/$$ $$| $$$$$$$$ | $$ | $$$$$$$$| $$ | $$| $$$$$$$/
| $$ $$$| $$| $$__ $$ | $$ | $$__ $$| $$ | $$| $$__ $$
| $$\ $ | $$| $$ | $$ | $$ | $$ | $$| $$ | $$| $$ \ $$
| $$ \/ | $$| $$ | $$ | $$ | $$ | $$| $$$$$$/| $$ | $$
|__/ |__/|__/ |__/ |__/ |__/ |__/ \______/ |__/ |__/
"""
print(ascii_art)
def print_intro():
print_ascii_art()
print("Mathor - Version 1.0")
print("Créé par AE Corp.")
print("Code par Abiye Enzo")
print("Tous droits réservés.\n")
def evaluate_expression(expression):
try:
# Convertir l'expression en objet sympy et évaluer
expr = sympify(expression)
return expr.evalf()
except Exception as e:
return f"Erreur d'évaluation: {e}"
def solve_equation(equation):
try:
# Identifier la variable inconnue dans l'équation
variables = re.findall(r'[a-zA-Z_]\w*', equation)
if len(variables) != 1:
return "Erreur: Cette version ne prend en charge qu'une seule variable inconnue."
var_name = variables[0]
var = symbols(var_name)
symbols_dict = {var_name: var}
# Séparer l'équation en deux parties
lhs, rhs = equation.split('=')
# Créer l'équation SymPy avec la variable trouvée
lhs_expr = sympify(lhs, locals=symbols_dict)
rhs_expr = sympify(rhs, locals=symbols_dict)
eq = Eq(lhs_expr, rhs_expr)
# Résoudre l'équation
solutions = solve(eq, var)
if len(solutions) == 0:
return "Pas de solution"
return {var_name: solutions[0]}
except Exception as e:
return f"Erreur de résolution: {e}"
def process_file(filename):
try:
with open(filename, 'r') as file:
for line in file:
line = line.strip()
if line:
if '=' in line:
result = solve_equation(line)
if isinstance(result, dict):
result_str = f"{list(result.keys())[0]} = {list(result.values())[0]}"
print(f"{line} => {result_str}")
else:
print(f"{line} => {result}")
else:
result = evaluate_expression(line)
print(f"{line} = {result}")
except FileNotFoundError:
print(f"Le fichier {filename} n'a pas été trouvé.")
except Exception as e:
print(f"Erreur lors de la lecture du fichier: {e}")
def interactive_mode():
print_intro()
print("Mode interactif activé. Tapez 'exit' pour quitter.")
while True:
try:
line = input(">>> ").strip()
if line.lower() == 'exit':
break
if '=' in line:
result = solve_equation(line)
if isinstance(result, dict):
result_str = f"{list(result.keys())[0]} = {list(result.values())[0]}"
print(f"{line} => {result_str}")
else:
print(f"{line} => {result}")
else:
result = evaluate_expression(line)
print(f"{line} = {result}")
except Exception as e:
print(f"Erreur: {e}")
def main():
if len(sys.argv) > 1:
filename = sys.argv[1]
if filename.endswith(".mth"):
process_file(filename)
else:
print("Le fichier doit avoir l'extension .mth")
else:
interactive_mode()
if __name__ == "__main__":
main()