diff --git a/src/hackerrank/warmup/birthday_cake_candles.rs b/src/hackerrank/warmup/birthday_cake_candles.rs new file mode 100644 index 0000000..7d6c26c --- /dev/null +++ b/src/hackerrank/warmup/birthday_cake_candles.rs @@ -0,0 +1,23 @@ +// @link Problem definition [[docs/hackerrank/warmup/a_very_big_sum.md]] + + + +#[allow(non_snake_case)] +pub fn birthdayCakeCandles(candles: &[i32]) -> i32 { + + let mut counter: i32 = 0; + let mut maximum: &i32 = &candles[0]; + + for element in candles.iter() { + if element > maximum + { + maximum = element; + counter = 1; + } else if element == maximum { + counter += 1; + } + } + + counter +} + diff --git a/src/hackerrank/warmup/mod.rs b/src/hackerrank/warmup/mod.rs index 7efd7b4..95abc83 100644 --- a/src/hackerrank/warmup/mod.rs +++ b/src/hackerrank/warmup/mod.rs @@ -6,3 +6,4 @@ pub mod diagonal_difference; pub mod plus_minus; pub mod staircase; pub mod mini_max_sum; +pub mod birthday_cake_candles; diff --git a/tests/data/hackerrank/warmup/birthday_cake_candles.testcases.json b/tests/data/hackerrank/warmup/birthday_cake_candles.testcases.json new file mode 100644 index 0000000..daf3a47 --- /dev/null +++ b/tests/data/hackerrank/warmup/birthday_cake_candles.testcases.json @@ -0,0 +1,20 @@ +[ + { + "input": [ + 3, + 2, + 1, + 3 + ], + "expected": 2 + }, + { + "input": [ + 1, + 2, + 3, + 3 + ], + "expected": 2 + } +] \ No newline at end of file diff --git a/tests/hackerrank/warmup/birthday_cake_candles.rs b/tests/hackerrank/warmup/birthday_cake_candles.rs new file mode 100644 index 0000000..c1cdf32 --- /dev/null +++ b/tests/hackerrank/warmup/birthday_cake_candles.rs @@ -0,0 +1,31 @@ +use exercises::hackerrank::warmup::birthday_cake_candles::birthdayCakeCandles; +use once_cell::sync::Lazy; +use serde::Deserialize; + +use crate::common; +use common::utils::load_json; + +#[cfg(test)] +mod tests { + use super::*; + + #[derive(Debug, Deserialize)] + struct BirthdayCakeCandlesTestCase { + input: Vec, + expected: i32, + } + + static TEST_DATA: Lazy> = Lazy::new(|| { + load_json("tests/data/hackerrank/warmup/birthday_cake_candles.testcases.json") + }); + + #[test] + fn test_birthday_cake_candles() { + println!("Testing hackerrank::warmup::birthday_cake_candles::birthdayCakeCandles()"); + + for test_case in TEST_DATA.iter() { + let result = birthdayCakeCandles(test_case.input.as_slice()); + assert_eq!(result, test_case.expected); + } + } +} diff --git a/tests/hackerrank/warmup/mini_max_sum.rs b/tests/hackerrank/warmup/mini_max_sum.rs index fd97fc8..357ada1 100644 --- a/tests/hackerrank/warmup/mini_max_sum.rs +++ b/tests/hackerrank/warmup/mini_max_sum.rs @@ -28,7 +28,7 @@ mod tests { let result = mini_max_sum(slice); miniMaxSum(slice); - assert_eq!(result, test_case.expected); + assert_eq!(result, test_case.expected, "hackerrank::warmup::mini_max_sum::mini_max_sum() => {}", test_case.title); } } diff --git a/tests/hackerrank/warmup/mod.rs b/tests/hackerrank/warmup/mod.rs index 7efd7b4..95abc83 100644 --- a/tests/hackerrank/warmup/mod.rs +++ b/tests/hackerrank/warmup/mod.rs @@ -6,3 +6,4 @@ pub mod diagonal_difference; pub mod plus_minus; pub mod staircase; pub mod mini_max_sum; +pub mod birthday_cake_candles;