bitart: Complete builder pattern to allow changing parameters
Change expression depth to 4
This commit is contained in:
@@ -270,11 +270,7 @@ pub struct RandomExpressionBuilder {
|
||||
depth: usize,
|
||||
}
|
||||
impl RandomExpressionBuilder {
|
||||
pub fn build<R: Rng>(rng: &mut R) -> Expression {
|
||||
let builder = Self::new();
|
||||
builder.build_binary(rng, builder.depth)
|
||||
}
|
||||
fn new() -> RandomExpressionBuilder {
|
||||
pub fn new() -> RandomExpressionBuilder {
|
||||
// Default values
|
||||
let unary_rate = 0.3;
|
||||
let variable_rate = 0.5;
|
||||
@@ -287,6 +283,9 @@ impl RandomExpressionBuilder {
|
||||
depth,
|
||||
}
|
||||
}
|
||||
pub fn build<R: Rng>(&self, rng: &mut R) -> Expression {
|
||||
self.build_binary(rng, self.depth)
|
||||
}
|
||||
fn build_recursive<R: Rng>(&self, rng: &mut R, depth: usize, left: bool) -> Expression {
|
||||
if depth == 0 {
|
||||
self.build_leaf(rng, left)
|
||||
@@ -315,4 +314,25 @@ impl RandomExpressionBuilder {
|
||||
let arg1 = self.build_recursive(rng, depth - 1, false);
|
||||
binary_operation(op, arg0, arg1)
|
||||
}
|
||||
|
||||
#[allow(unused)]
|
||||
pub fn unary_rate(mut self, unary_rate: f64) -> Self {
|
||||
self.unary_rate = unary_rate;
|
||||
self
|
||||
}
|
||||
#[allow(unused)]
|
||||
pub fn variable_rate(mut self, variable_rate: f64) -> Self {
|
||||
self.variable_rate = variable_rate;
|
||||
self
|
||||
}
|
||||
#[allow(unused)]
|
||||
pub fn max_literal(mut self, max_literal: i64) -> Self {
|
||||
self.max_literal = max_literal;
|
||||
self
|
||||
}
|
||||
#[allow(unused)]
|
||||
pub fn depth(mut self, depth: usize) -> Self {
|
||||
self.depth = depth;
|
||||
self
|
||||
}
|
||||
}
|
||||
|
||||
@@ -118,6 +118,8 @@ fn main() -> std::io::Result<()> {
|
||||
let mut old_board = Board::with(Color::black(), bbox, |_p| Square::Uncommon);
|
||||
let mut new_board = Board::with(Color::black(), bbox, |_p| Square::Uncommon);
|
||||
|
||||
let builder = RandomExpressionBuilder::new().depth(4);
|
||||
|
||||
let mut time_count = frame_time_count;
|
||||
loop {
|
||||
if time_count >= frame_time_count {
|
||||
@@ -129,7 +131,7 @@ fn main() -> std::io::Result<()> {
|
||||
|
||||
// Pick a random expression.
|
||||
loop {
|
||||
let expression = RandomExpressionBuilder::build(&mut rng);
|
||||
let expression = builder.build(&mut rng);
|
||||
let values = Array2d::with(bbox, |p| {
|
||||
let x = x0 + xk * p.x();
|
||||
let y = y0 + yk * p.y();
|
||||
|
||||
Reference in New Issue
Block a user