diff --git a/solutions/rust/kindergarten-garden/1/Cargo.toml b/solutions/rust/kindergarten-garden/1/Cargo.toml new file mode 100644 index 00000000..b5edfd55 --- /dev/null +++ b/solutions/rust/kindergarten-garden/1/Cargo.toml @@ -0,0 +1,9 @@ +[package] +name = "kindergarten_garden" +version = "0.1.0" +edition = "2024" + +# Not all libraries from crates.io are available in Exercism's test runner. +# The full list of available libraries is here: +# https://github.com/exercism/rust-test-runner/blob/main/local-registry/Cargo.toml +[dependencies] diff --git a/solutions/rust/kindergarten-garden/1/src/lib.rs b/solutions/rust/kindergarten-garden/1/src/lib.rs new file mode 100644 index 00000000..d486f3bd --- /dev/null +++ b/solutions/rust/kindergarten-garden/1/src/lib.rs @@ -0,0 +1,46 @@ +pub fn plants(diagram: &str, student: &str) -> Vec<&'static str> { + let students = [ + "Alice", "Bob", "Charlie", "David", "Eve", "Fred", "Ginny", "Harriet", "Ileana", "Joseph", + "Kincaid", "Larry", + ]; + let sliced_diagram: Vec =diagram.trim().chars().collect(); + let student_index = students.iter().position(|&x| x == student); + if student_index.is_none() { + return vec![]; + } + let student_index = student_index.unwrap(); + let sliced_diagram_len = sliced_diagram.len(); + + let mut solution: Vec<&'static str> = Vec::new(); + for i in 0..2 { + let plant_index = (student_index * 2) + i; + let plant_row_one = match sliced_diagram[plant_index] { + 'V' => "violets", + 'R' => "radishes", + 'C' => "clover", + 'G' => "grass", + _ => "", + }; + solution.push(plant_row_one); + } + for i in 0..2 { + let plant_index = (student_index * 2) + i+1 + (sliced_diagram_len / 2); + let plant_row_two = match sliced_diagram[plant_index] { + 'V' => "violets", + 'R' => "radishes", + 'C' => "clover", + 'G' => "grass", + _ => "", + }; + solution.push(plant_row_two); + } + solution +} + +fn main() { + let diagram = "VC +RC"; + let student = "Alice"; + let plants_for_alice = plants(diagram, student); + println!("{:?}", plants_for_alice); +} \ No newline at end of file