From e23e0b8cde8b5e64e642376fe80f826b742d52b9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lukas=20W=C3=B6lfer?= Date: Sat, 26 Jul 2025 14:33:28 +0200 Subject: [PATCH] Started working on optimizer --- canvas/src/icon_bitfield.rs | 9 +++++---- canvas/src/lib.rs | 2 ++ canvas/src/optimizer.rs | 5 +++++ 3 files changed, 12 insertions(+), 4 deletions(-) create mode 100644 canvas/src/optimizer.rs diff --git a/canvas/src/icon_bitfield.rs b/canvas/src/icon_bitfield.rs index 8e15fbe..55c8268 100644 --- a/canvas/src/icon_bitfield.rs +++ b/canvas/src/icon_bitfield.rs @@ -13,7 +13,7 @@ pub(crate) struct IconBitfield { } impl IconBitfield { - pub(crate) fn get_icon_bits(&self, icon: Icon) -> u8 { + pub fn get_icon_bits(&self, icon: Icon) -> u8 { match icon { Icon::Circle => self.circle, Icon::Square => self.square, @@ -21,11 +21,11 @@ impl IconBitfield { Icon::Color => self.color, } } - pub(crate) fn get_point_bits(&self) -> u8 { + pub fn get_point_bits(&self) -> u8 { self.points } - pub(crate) fn add_icon(&mut self, icon: Icon, index: u8) { + fn add_icon(&mut self, icon: Icon, index: u8) { let field = match icon { Icon::Circle => &mut self.circle, Icon::Square => &mut self.square, @@ -46,11 +46,12 @@ impl IconBitfield { CardField::Empty => (), } } + pub fn new(card: &Card) -> Self { let mut result = Self::default(); (0u8..) .zip(card.field.iter()) - .for_each(|(index, field)| result.add_field(field.clone(), index)); + .for_each(|(index, field)| result.add_field(*field, index)); result } diff --git a/canvas/src/lib.rs b/canvas/src/lib.rs index 7e7bd7f..3fbd82d 100644 --- a/canvas/src/lib.rs +++ b/canvas/src/lib.rs @@ -4,6 +4,8 @@ use crate::objective::Objective; mod card; mod icon_bitfield; mod objective; +mod optimizer; + use card::Card; #[derive(Debug)] diff --git a/canvas/src/optimizer.rs b/canvas/src/optimizer.rs new file mode 100644 index 0000000..d4e3068 --- /dev/null +++ b/canvas/src/optimizer.rs @@ -0,0 +1,5 @@ +use crate::{CriteriaCard, icon_bitfield::IconBitfield, objective::Objective}; + +fn draw_painting(cards: &[IconBitfield], obj: Vec<(&CriteriaCard, u8)>) -> [usize; 3] { + todo!() +}