formula run

This commit is contained in:
Rendo 2025-11-08 22:48:03 +05:00
commit ae8e51c053
4 changed files with 25 additions and 0 deletions

20
src/formula.rs Normal file
View file

@ -0,0 +1,20 @@
use crate::node::Node;
#[derive(Clone)]
pub struct Formula {
tree: Node,
x: f64,
rating: f64,
}
impl Formula {
pub fn run(&mut self, inputs: Vec<f64>) -> Vec<f64> {
let mut outputs: Vec<f64> = vec![];
for input in inputs {
self.x = input;
outputs.push(self.tree.get_value());
}
outputs
}
pub fn mutate(&mut self) {}
}

View file

@ -1 +1,2 @@
mod formula;
mod node; mod node;

View file

@ -1,7 +1,9 @@
#[derive(Clone, Copy)]
pub enum NodeHandler { pub enum NodeHandler {
Number { number: f64 }, Number { number: f64 },
Function { function: fn(Vec<f64>) -> f64 }, Function { function: fn(Vec<f64>) -> f64 },
Variable { getter: fn() -> f64 }, Variable { getter: fn() -> f64 },
Empty,
} }
impl NodeHandler { impl NodeHandler {
@ -10,6 +12,7 @@ impl NodeHandler {
NodeHandler::Number { number } => number.clone(), NodeHandler::Number { number } => number.clone(),
NodeHandler::Function { function } => function(inputs), NodeHandler::Function { function } => function(inputs),
NodeHandler::Variable { getter } => getter(), NodeHandler::Variable { getter } => getter(),
NodeHandler::Empty => 0f64,
} }
} }
} }

View file

@ -5,6 +5,7 @@ mod functions;
mod handler; mod handler;
mod node_modifier; mod node_modifier;
#[derive(Clone)]
pub struct Node { pub struct Node {
children: Vec<Node>, children: Vec<Node>,
handler: NodeHandler, handler: NodeHandler,