From 0289488687288ee9d274da3b102ab1878ddd2f6d Mon Sep 17 00:00:00 2001 From: Gonzalo Diaz Date: Tue, 9 Sep 2025 16:10:16 -0300 Subject: [PATCH] =?UTF-8?q?[Hacker=20Rank]=20Warmup:=20Compare=20the=20Tri?= =?UTF-8?q?plets=20solved=20=E2=9C=93?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/hackerrank/warmup/compare_triplets.md | 104 ++++++++++++++++++ src/hackerrank/warmup/compare_triplets.rs | 15 +++ src/hackerrank/warmup/mod.rs | 1 + .../warmup/compare_triplets.testcases.json | 4 + tests/hackerrank/warmup/compare_triplets.rs | 31 ++++++ tests/hackerrank/warmup/mod.rs | 1 + 6 files changed, 156 insertions(+) create mode 100644 docs/hackerrank/warmup/compare_triplets.md create mode 100644 src/hackerrank/warmup/compare_triplets.rs create mode 100644 tests/data/hackerrank/warmup/compare_triplets.testcases.json create mode 100644 tests/hackerrank/warmup/compare_triplets.rs diff --git a/docs/hackerrank/warmup/compare_triplets.md b/docs/hackerrank/warmup/compare_triplets.md new file mode 100644 index 0000000..e87c789 --- /dev/null +++ b/docs/hackerrank/warmup/compare_triplets.md @@ -0,0 +1,104 @@ +# [Compare the Triplets](https://www.hackerrank.com/challenges/compare-the-triplets) + +Difficulty: #easy +Category: #warmup + +Alice and Bob each created one problem for HackerRank. A reviewer rates the two +challenges, awarding points on a scale from 1 to 100 for three categories: +problem clarity, originality, and difficulty. +The rating for Alice's challenge is the triplet $ a = (a[0], a[1], a[2]) $, +and the rating for Bob's challenge is the triplet $ b = (b[0], b[1], b[2]) $. + +The task is to find their comparison points by comparing $ a[0] $ with +$ b[0] $, $ a[1] $ with $ b[1] $, and $ a[2] $ with $ b[2] $. + +- If $ a[i] > b[i] $, then Alice is awarded $ 1 $ point. +- If $ a[i] < b[i] $, then Bob is awarded $ 1 $ point. +- If $ a[i] = b[i] $, then neither person receives a point. + +Comparison points is the total points a person earned. +Given a and b, determine their respective comparison points. + +## Example + +$ a = [1, 2, 3] $ \ +$ b = [3, 2, 1] $ + +- For elements \*0\*, Bob is awarded a point because $ a[0] $. +- For the equal elements $ a[1] $ and $ b[1] $, no points are earned. +- Finally, for elements $ 2 $, $ a[2] > b[2] $ so Alice receives a point. + +The return array is $ [1, 1] $ with Alice's score first and Bob's second. + +## Function Description + +Complete the function compareTriplets in the editor below. +compareTriplets has the following parameter(s): + +- int a[3]: Alice's challenge rating +- int b[3]: Bob's challenge rating + +## Return + +- int[2]: Alice's score is in the first position, and Bob's score is in the second. + +## Input Format + +The first line contains 3 space-separated integers, $ a[0] $, $ a[1] $, and +$ a[2] $, the respective values in triplet a. +The second line contains 3 space-separated integers, $ b[0] $, $ b[1] $, and +$ b[2] $, the respective values in triplet b. + +## Constraints + +- $ 1 \leq a[i] \leq 100 $ +- $ 1 \leq b[i] \leq 100 $ + +## Sample Input 0 + +```text +5 6 7 +3 6 10 +``` + +## Sample Output 0 + +```text +1 1 +``` + +## Explanation 0 + +In this example: + +- $ a = (a[0], a[1], a[2]) = (5, 6, 7) $ +- $ b = (b[0], b[1], b[2]) = (3, 6, 10) $ + +Now, let's compare each individual score: + +- $ a[0] > b[0] $, so Alice receives $ 1 $ point. \ +- $ a[1] = b[1] $, so nobody receives a point. \ +- $ a[2] < b[2] $, so Bob receives $ 1 $ point. + +Alice's comparison score is $ 1 $, and Bob's comparison score is $ 1 $. +Thus, we return the array $ [1, 1] $. + +## Sample Input 1 + +```text +17 28 30 +99 16 8 +``` + +## Sample Output 1 + +```text +2 1 +``` + +## Explanation 1 + +Comparing the *0th* elements, $ 17 < 99 $ so Bob receives a point. +Comparing the *1st* and *2nd* elements $ 28 > 16 $ and $ 30 > 8 $ so Alice + receives two points. +The return array is $ [2, 1] $. diff --git a/src/hackerrank/warmup/compare_triplets.rs b/src/hackerrank/warmup/compare_triplets.rs new file mode 100644 index 0000000..191b236 --- /dev/null +++ b/src/hackerrank/warmup/compare_triplets.rs @@ -0,0 +1,15 @@ +// @link Problem definition [[docs/hackerrank/warmup/compare_triplets.md]] + +pub fn compare_triplets(a: &[i32], b: &[i32]) -> Vec { + let mut awards: Vec = vec![0, 0]; + + for (i, value) in a.iter().enumerate() { + if *value > b[i] { + awards[0] += 1; + } else if *value < b[i] { + awards[1] += 1; + } + } + + awards +} diff --git a/src/hackerrank/warmup/mod.rs b/src/hackerrank/warmup/mod.rs index 3ada41f..c06d418 100644 --- a/src/hackerrank/warmup/mod.rs +++ b/src/hackerrank/warmup/mod.rs @@ -1,2 +1,3 @@ pub mod solve_me_first; pub mod simple_array_sum; +pub mod compare_triplets; diff --git a/tests/data/hackerrank/warmup/compare_triplets.testcases.json b/tests/data/hackerrank/warmup/compare_triplets.testcases.json new file mode 100644 index 0000000..467731a --- /dev/null +++ b/tests/data/hackerrank/warmup/compare_triplets.testcases.json @@ -0,0 +1,4 @@ +[ + { "a": [5, 6, 7], "b": [3, 6, 10], "expected": [1, 1] }, + { "a": [], "b": [], "expected": [0, 0] } +] diff --git a/tests/hackerrank/warmup/compare_triplets.rs b/tests/hackerrank/warmup/compare_triplets.rs new file mode 100644 index 0000000..df48a74 --- /dev/null +++ b/tests/hackerrank/warmup/compare_triplets.rs @@ -0,0 +1,31 @@ +use exercises::hackerrank::warmup::compare_triplets::compare_triplets; +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 SolveMeFirstTestCase { + a: Vec, + b: Vec, + expected: Vec + } + + static TEST_DATA: Lazy> = + Lazy::new(|| load_json("tests/data/hackerrank/warmup/compare_triplets.testcases.json")); + + #[test] + fn test_compare_triplets() { + for test_case in TEST_DATA.iter() { + println!("Testing hackerrank::warmup::compare_triplets::compare_triplets()"); + + let result = compare_triplets(test_case.a.as_slice(), test_case.b.as_slice()); + assert_eq!(result, test_case.expected); + } + } +} diff --git a/tests/hackerrank/warmup/mod.rs b/tests/hackerrank/warmup/mod.rs index 3ada41f..c06d418 100644 --- a/tests/hackerrank/warmup/mod.rs +++ b/tests/hackerrank/warmup/mod.rs @@ -1,2 +1,3 @@ pub mod solve_me_first; pub mod simple_array_sum; +pub mod compare_triplets;