Compare The Triplets | HackerRank Solution

Hello coders, today we are going to solve Compare The Triplets HackerRank Solution which is a Part of HackerRank Algorithm Series.

Compare The Triplets

Task

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 clarityoriginality, 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 2a[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 ≤ a[i] ≤ 100
  • 1 ≤ b[i] ≤ 100

Sample Input 0

5 6 7
3 6 10

Sample Output 0

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

17 28 30
99 16 8

Sample Output 1

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].

Solution – Compare The Triplets

C++

#include <bits/stdc++.h>

using namespace std;

string ltrim(const string &);
string rtrim(const string &);
vector<string> split(const string &);

/*
 * Complete the 'compareTriplets' function below.
 *
 * The function is expected to return an INTEGER_ARRAY.
 * The function accepts following parameters:
 *  1. INTEGER_ARRAY a
 *  2. INTEGER_ARRAY b
 */
 

vector<int> compareTriplets(vector<int> a, vector<int> b) {
    
    vector<int> result;
    int aliceScore = 0;
    int bobScore = 0;

    for(int i=0;i<a.size();i++){
        if(a[i] > b[i]) 
            aliceScore ++;
        else if(b[i] > a[i])
            bobScore++;
        }         
        result.push_back(aliceScore);
        result.push_back(bobScore);
    return result;
}


int main()
{
    ofstream fout(getenv("OUTPUT_PATH"));

    string a_temp_temp;
    getline(cin, a_temp_temp);

    vector<string> a_temp = split(rtrim(a_temp_temp));

    vector<int> a(3);

    for (int i = 0; i < 3; i++) {
        int a_item = stoi(a_temp[i]);

        a[i] = a_item;
    }

    string b_temp_temp;
    getline(cin, b_temp_temp);

    vector<string> b_temp = split(rtrim(b_temp_temp));

    vector<int> b(3);

    for (int i = 0; i < 3; i++) {
        int b_item = stoi(b_temp[i]);

        b[i] = b_item;
    }

    vector<int> result = compareTriplets(a, b);

    for (size_t i = 0; i < result.size(); i++) {
        fout << result[i];

        if (i != result.size() - 1) {
            fout << " ";
        }
    }

    fout << "\n";

    fout.close();

    return 0;
}

string ltrim(const string &str) {
    string s(str);

    s.erase(
        s.begin(),
        find_if(s.begin(), s.end(), not1(ptr_fun<int, int>(isspace)))
    );

    return s;
}

string rtrim(const string &str) {
    string s(str);

    s.erase(
        find_if(s.rbegin(), s.rend(), not1(ptr_fun<int, int>(isspace))).base(),
        s.end()
    );

    return s;
}

vector<string> split(const string &str) {
    vector<string> tokens;

    string::size_type start = 0;
    string::size_type end = 0;

    while ((end = str.find(" ", start)) != string::npos) {
        tokens.push_back(str.substr(start, end - start));

        start = end + 1;
    }

    tokens.push_back(str.substr(start));

    return tokens;
}

Python 3

#!/bin/python3

import math
import os
import random
import re
import sys

# Complete the compareTriplets function below.
def compareTriplets(a, b):
    pointa=0
    pointb=0
    ar = []
    for i in range(3):
        if a[i]>b[i]:
            pointa+=1
            
        if a[i]<b[i]:
            pointb+=1
    ar.insert(0,pointa)
    ar.insert(1,pointb)        
    return(ar)

if __name__ == '__main__':
    fptr = open(os.environ['OUTPUT_PATH'], 'w')

    a = list(map(int, input().rstrip().split()))

    b = list(map(int, input().rstrip().split()))

    result = compareTriplets(a, b)

    fptr.write(' '.join(map(str, result)))
    fptr.write('\n')

    fptr.close()

Java

import java.io.*;
import java.math.*;
import java.security.*;
import java.text.*;
import java.util.*;
import java.util.concurrent.*;
import java.util.function.*;
import java.util.regex.*;
import java.util.stream.*;
import static java.util.stream.Collectors.joining;
import static java.util.stream.Collectors.toList;

class Result {

    /*
     * Complete the 'compareTriplets' function below.
     *
     * The function is expected to return an INTEGER_ARRAY.
     * The function accepts following parameters:
     *  1. INTEGER_ARRAY a
     *  2. INTEGER_ARRAY b
     */

    public static List<Integer> compareTriplets(List<Integer> a, List<Integer> b) {
    // Write your code here
    int alice = 0;
    int bob = 0;
    List<Integer> answer = new ArrayList<>();
    for(int i = 0; i < 3; i++) {
        if (a.get(i) > b.get(i)) alice++;
        if (a.get(i) < b.get(i)) bob++;
    }
    answer.add(0,alice);
    answer.add(1,bob);
    return answer;
    }

}

public class Solution {
    public static void main(String[] args) throws IOException {
        BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(System.in));
        BufferedWriter bufferedWriter = new BufferedWriter(new FileWriter(System.getenv("OUTPUT_PATH")));

        List<Integer> a = Stream.of(bufferedReader.readLine().replaceAll("\\s+$", "").split(" "))
            .map(Integer::parseInt)
            .collect(toList());

        List<Integer> b = Stream.of(bufferedReader.readLine().replaceAll("\\s+$", "").split(" "))
            .map(Integer::parseInt)
            .collect(toList());

        List<Integer> result = Result.compareTriplets(a, b);

        bufferedWriter.write(
            result.stream()
                .map(Object::toString)
                .collect(joining(" "))
            + "\n"
        );

        bufferedReader.close();
        bufferedWriter.close();
    }
}

Disclaimer: The above Problem (Compare The Triplets) is generated by Hacker Rank but the Solution is Provided by CodingBroz. This tutorial is only for Educational and Learning Purpose.

4 thoughts on “Compare The Triplets | HackerRank Solution”

  1. Kamalesh Pulavarty

    Hi using System.CodeDom.Compiler;
    using System.Collections.Generic;
    using System.Collections;
    using System.ComponentModel;
    using System.Diagnostics.CodeAnalysis;
    using System.Globalization;
    using System.IO;
    using System.Linq;
    using System.Reflection;
    using System.Runtime.Serialization;
    using System.Text.RegularExpressions;
    using System.Text;
    using System;

    class Result
    {

    /*
    * Complete the ‘compareTriplets’ function below.
    *
    * The function is expected to return an INTEGER_ARRAY.
    * The function accepts following parameters:
    * 1. INTEGER_ARRAY a
    * 2. INTEGER_ARRAY b
    */

    public static List compareTriplets(List a, List b)
    {

    int x=0;
    int y=0;
    List answer= new List();
    for(int i=0;ib[i])
    {
    x++;
    }

    else if(a[i]< b[i])
    {
    y++;
    }

    }

    answer.Add(x);
    answer.Add(y);

    return answer;
    }

    }

    class Solution
    {
    public static void Main(string[] args)
    {
    TextWriter textWriter = new StreamWriter(@System.Environment.GetEnvironmentVariable("OUTPUT_PATH"), true);

    List a = Console.ReadLine().TrimEnd().Split(‘ ‘).ToList().Select(aTemp => Convert.ToInt32(aTemp)).ToList();

    List b = Console.ReadLine().TrimEnd().Split(‘ ‘).ToList().Select(bTemp => Convert.ToInt32(bTemp)).ToList();

    List result = Result.compareTriplets(a, b);

    textWriter.WriteLine(String.Join(” “, result));

    textWriter.Flush();
    textWriter.Close();
    }
    }

  2. Tấn Khoa Huỳnh

    #!/bin/python3

    import math
    import os
    import random
    import re
    import sys

    #
    # Complete the ‘compareTriplets’ function below.
    #
    # The function is expected to return an INTEGER_ARRAY.
    # The function accepts following parameters:
    # 1. INTEGER_ARRAY a
    # 2. INTEGER_ARRAY b
    #

    def compareTriplets(a, b):
    # Write your code here
    alice_point = 0
    bob_point = 0

    pair = zip(a, b)

    for element in pair:

    if element[0] > element[1]:

    alice_point += 1

    elif element[0] < element[1]:

    bob_point += 1

    return [alice_point, bob_point]

    if __name__ == '__main__':
    fptr = open(os.environ['OUTPUT_PATH'], 'w')

    a = list(map(int, input().rstrip().split()))

    b = list(map(int, input().rstrip().split()))

    result = compareTriplets(a, b)

    fptr.write(' '.join(map(str, result)))
    fptr.write('\n')

    fptr.close()

Leave a Comment

Your email address will not be published. Required fields are marked *