This commit is contained in:
itamar 2026-04-10 16:39:57 +02:00
commit 1ac693fdc2
Signed by: itamar
SSH key fingerprint: SHA256:Dv6UzB9hN8q8FUgMR/7X3DTFpE/vSB2m05+KNnxM4B0
9 changed files with 670 additions and 0 deletions

126
nodes.py Normal file
View file

@ -0,0 +1,126 @@
from dataclasses import dataclass
@dataclass
class NumberNode:
value: float
def __repr__(self):
return f"{self.value}"
@dataclass
class AddNode:
node_a: any
node_b: any
def __repr__(self):
return f"[{self.node_a}+{self.node_b}]"
@dataclass
class SubtractNode:
node_a: any
node_b: any
def __repr__(self):
return f"[{self.node_a}-{self.node_b}]"
@dataclass
class MultiplyNode:
node_a: any
node_b: any
def __repr__(self):
return f"[{self.node_a}*{self.node_b}]"
@dataclass
class DivideNode:
node_a: any
node_b: any
def __repr__(self):
return f"[{self.node_a}/{self.node_b}]"
@dataclass
class PowerNode:
node_a: any
node_b: any
def __repr__(self):
return f"[{self.node_b}^{self.node_b}]"
@dataclass
class ModuleNode:
node_a: any
node_b: any
def __repr__(self):
return f"[{self.node_b}%{self.node_b}]"
@dataclass
class AverageNode:
node_a: any
node_b: any
def __repr__(self):
return f"[{self.node_b}@{self.node_b}]"
@dataclass
class MaximumNode:
node_a: any
node_b: any
def __repr__(self):
return f"[{self.node_b}${self.node_b}]"
@dataclass
class MinimumNode:
node_a: any
node_b: any
def __repr__(self):
return f"[{self.node_b}&{self.node_b}]"
# Uniary symbols #
@dataclass
class PlusNode:
node: any
def __repr__(self):
return f"(+{self.node})"
@dataclass
class MinusNode:
node: any
def __repr__(self):
return f"(-{self.node})"
@dataclass
class FactorialNode:
node: any
def __repr__(self):
return f"(!{self.node})"
@dataclass
class NegateNode:
node: any
def __repr__(self):
return f"(~{self.node})"