Решение на FMI Buzz от Даниел Стоянов

Обратно към всички решения

Към профила на Даниел Стоянов

Резултати

  • 15 точки от тестове
  • 0 бонус точки
  • 15 точки общо
  • 10 успешни тест(а)
  • 0 неуспешни тест(а)

Код

pub fn fizzbuzz(n: usize) -> Vec<String> {
let mut result: Vec<String> = Vec::new();
if n <= 0 {
return result;
}
for _i in 1..(n + 1) {

По конвенция, подчертавката в Rust се използва за променлива, която не се използва. Не е технически проблем да наречеш променливата си _i, но е добра идея да го избягваш ако ще ползваш променливата после.

Да и аз се учудих, просто написах for + tab + tab и по default си излезе, все пак я смених, но след това при компилиране също ми предложи да я преименувам на _i от i, което пак ми се стори странно и така го оставих. Ще знам за напред. Благодаря!

if (_i % 3 == 0) & (_i % 5 != 0) {
result.push(String::from("Fizz"));
} else if (_i % 5 == 0) & (_i % 3 != 0) {
result.push(String::from("Buzz"));
} else if (_i % 3 == 0) & (_i % 5 == 0) {
result.push(String::from("Fizzbuzz"));
} else {
result.push(_i.to_string());
}
}
result
}
pub fn custom_buzz(n: usize, k1: u8, k2: u8) -> Vec<String> {
let mut result: Vec<String> = Vec::new();
if n <= 0 {
return result;
}
if (k1 <= 1) || (k2 <= 1) {
panic!("Bad divisors!");
}
for _i in 1..(n + 1) {
let temp = _i as u8;
if (temp % k1 == 0) & (temp % k2 != 0) {
result.push(String::from("Fizz"));
} else if (temp % k2 == 0) & (temp % k1 != 0) {
result.push(String::from("Buzz"));
} else if (temp % k1 == 0) & (temp % k2 == 0) {
result.push(String::from("Fizzbuzz"));
} else {
result.push(temp.to_string());
}
}
result
}
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 result: Vec<String> = Vec::new();
if n <= 0 {
return result;
}
if (self.k1 <= 1) || (self.k2 <= 1) {
panic!("Bad divisors!");
}
for _i in 1..(n + 1) {
let temp = _i as u8;
if (temp % self.k1 == 0) & (temp % self.k2 != 0) {
result.push(self.labels[0].to_string());
} else if (temp % self.k2 == 0) & (temp % self.k1 != 0) {
result.push(String::from(self.labels[1].to_string()));
} else if (temp % self.k1 == 0) & (temp % self.k2 == 0) {
result.push(String::from(self.labels[2].to_string()));
} else {
result.push(temp.to_string());
}
}
result
}
pub fn change_label(&mut self, index: usize, value: &String) {
self.labels[index] = value.to_string();
}
}

Лог от изпълнението

Compiling solution v0.1.0 (/tmp/d20201028-2816268-1u4c5h0/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 ... ok
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

test result: ok. 10 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out

   Doc-tests solution

running 0 tests

test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out

История (1 версия и 2 коментара)

Даниел качи първо решение на 25.10.2020 14:22 (преди почти 5 години)