Решение на FMI Buzz от Станислав Жечев
Към профила на Станислав Жечев
Резултати
- 14 точки от тестове
- 0 бонус точки
- 14 точки общо
- 9 успешни тест(а)
- 1 неуспешни тест(а)
Код
pub fn fill_vector(n: usize, k1: u8, k2: u8, vector: &mut Vec<String>, labels: &[String; 3]) -> () {
if n == 0 {
return;
} else if (k1 == 0 || k1 ==1) || (k2 == 0 || k2 == 1) {
panic!("0 or 1 are not valid inputs for k1 or k2!");
} else {
for x in 1..=(n as u8) {
let remainder = x % k1;
match remainder {
0 => {
if x % k2 == 0 {
vector.push(String::from(&labels[2]));
} else {
vector.push(String::from(&labels[0]));
}
},
_ => {
if x % k2 == 0 {
vector.push(String::from(&labels[1]));
} else {
vector.push(x.to_string());
}
},
}
}
}
}
pub fn fizzbuzz(n: usize) -> Vec<String> {
let mut vec: Vec<String> = Vec::new();
let labels = [String::from("Fizz"), String::from("Buzz"), String::from("Fizzbuzz")];
fill_vector(n, 3 , 5, &mut vec, &labels);
vec
}
pub fn custom_buzz(n: usize, k1: u8, k2: u8) -> Vec<String> {
let mut vec: Vec<String> = Vec::new();
let labels = [String::from("Fizz"), String::from("Buzz"), String::from("Fizzbuzz")];
fill_vector(n, k1, k2, &mut vec, &labels);
vec
}
pub struct FizzBuzzer {
pub k1: u8,
pub k2: u8,
pub labels: [String; 3],
}
impl FizzBuzzer {
pub fn take(&self, n: usize) -> Vec<String> {
let mut vec: Vec<String> = Vec::new();
fill_vector(n, self.k1, self.k2, &mut vec, &self.labels);
vec
}
pub fn change_label(&mut self, index: usize, value: &String) {
self.labels[index] = String::from(value);
}
}
Лог от изпълнението
Compiling solution v0.1.0 (/tmp/d20201028-2816268-112d68r/solution) Finished test [unoptimized + debuginfo] target(s) in 2.03s Running target/debug/deps/solution-ebb42508826ef2b4 running 0 tests test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out Running target/debug/deps/solution_test-9e954a53ed808c89 running 10 tests test solution_test::test_change_label_basic ... ok test solution_test::test_change_label_invalid ... ok test solution_test::test_classic1 ... ok test solution_test::test_classic2 ... FAILED test solution_test::test_coefficients1 ... ok test solution_test::test_coefficients2 ... ok test solution_test::test_coefficients_invalid ... ok test solution_test::test_struct_basic ... ok test solution_test::test_struct_invalid ... ok test solution_test::test_zeroes ... ok failures: ---- solution_test::test_classic2 stdout ---- thread 'main' panicked at 'assertion failed: `(left == right)` left: `None`, right: `Some("Fizzbuzz")`', tests/solution_test.rs:36:5 failures: solution_test::test_classic2 test result: FAILED. 9 passed; 1 failed; 0 ignored; 0 measured; 0 filtered out error: test failed, to rerun pass '--test solution_test'