Skip to content
thecscience
THECSICENCE

Learn everything about computer science

  • Home
  • Human values
  • NCERT Solutions
  • HackerRank solutions
    • HackerRank Algorithms problems solutions
    • HackerRank C solutions
    • HackerRank C++ solutions
    • HackerRank Java problems solutions
    • HackerRank Python problems solutions
thecscience
THECSICENCE

Learn everything about computer science

HackerRank Number Line Jumps Problem Solution

Yashwant Parihar, April 11, 2023April 11, 2023

In this post, We are going to solve HackerRank Number Line Jumps Problem.

You are choreographing a circus show with various animals. For one act, you are given two kangaroos on a number line ready to jump in the positive direction (i.e, toward positive infinity).

  • The first kangaroo starts at location x1 and moves at a rate of v1 meters per jump.
  • The second kangaroo starts at location x1 and moves at a rate of v1 meters per jump.

You have to figure out a way to get both kangaroos at the same location at the same time as part of the show. If it is possible, return YES, otherwise return NO.

Example

x1 = 2

v1 = 1

x2 = 1

v2 = 2

Function Description

Complete the function kangaroo in the editor below.

kangaroo has the following parameter(s):

  • int x1, int v1: starting position and jump distance for kangaroo 1
  • int x2, int v2: starting position and jump distance for kangaroo 2

Returns

  • string: either YES or NO

Input Format

A single line of four space-separated integers denoting the respective values of x1, v1, x2, and v2.

Sample Input 0

0 3 4 2

Sample Output 0

YES

Explanation 0

The two kangaroos jump through the following sequence of locations:

From the image, it is clear that the kangaroos meet at the same location (number  on the number line) after the same number of jumps ( jumps), and we print YES.

Sample Input 1

0 2 5 3

Sample Output 1
NO

Explanation 1

The second kangaroo has a starting location that is ahead (further to the right) of the first kangaroo’s starting location (i.e. x2 > x1, ). Because the second kangaroo moves at a faster rate (meaning v2 > v1) and is already ahead of the first kangaroo, the first kangaroo will never be able to catch up. Thus, we print NO.

HackerRank Number Line Jumps Problem Solution
HackerRank Number Line Jumps Problem Solution

Number Line Jumps C Solution

#include <math.h>
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <assert.h>
#include <limits.h>
#include <stdbool.h>

int main(){
    int x1; 
    int v1; 
    int x2; 
    int v2; 
    int ispossible = 0;
    scanf("%d %d %d %d",&x1,&v1,&x2,&v2);
    if ( v1 == v2 ) {
       if ( x1 == x2 ) {
           ispossible = 1;
       }
    } else {
        float it = (float)(x1-x2)/(v2-v1);
        if ( it >= 0 && (int)it == it ) {
           ispossible = 1;
        }
    }
    if ( ispossible == 1 ) {
        printf("YES");
    } else {
        printf("NO");
    }
    return 0;
}

Number Line Jumps C++ Solution

#include <cmath>
#include <cstdio>
#include <vector>
#include <iostream>
#include <algorithm>
using namespace std;

bool HasSolution(int x1, int x2, int v1, int v2)
{
    if (v1 <= v2) return false;
    
    return (x2-x1)%((v2-v1)) == 0;
    
}

int main() {
    int x1, x2, v1, v2;
    
    cin >> x1 >> v1 >> x2 >> v2;
    
    if (HasSolution(x1,x2,v1,v2))
    {
        cout << "YES" << endl;
    } else
        {
        cout << "NO" << endl;
    }
    
    return 0;
}

Number Line Jumps C Sharp Solution

using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
class Solution {

    static void Main(String[] args) {
        string[] tokens_x1 = Console.ReadLine().Split(' ');
        int x1 = Convert.ToInt32(tokens_x1[0]);
        int v1 = Convert.ToInt32(tokens_x1[1]);
        int x2 = Convert.ToInt32(tokens_x1[2]);
        int v2 = Convert.ToInt32(tokens_x1[3]);
        
        int pass = HopsUntilSeparating(x1, v1, x2, v2);
        if(x1 + pass*v1 == x2 + pass*v2)
            Console.WriteLine("YES");
        else
            Console.WriteLine("NO");
    }
    
    static int HopsUntilSeparating(int x1, int v1, int x2, int v2)
    {
        if(x2 > x1 && v2 >= v1)
            return -1;
        else if (x2 < x1 && v2 <= v1)
            return -1;
        else if (x1 == x2)
            return -1;
        else if (v1 == v2)
            return 0;
        else
            return (Math.Abs(x1-x2) / Math.Abs(v1-v2));
    }
}

Number Line Jumps Java Solution

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 'kangaroo' function below.
     *
     * The function is expected to return a STRING.
     * The function accepts following parameters:
     *  1. INTEGER x1
     *  2. INTEGER v1
     *  3. INTEGER x2
     *  4. INTEGER v2
     */

    public static String kangaroo(int x1, int v1, int x2, int v2) {
        int loc1 = x1;
        int loc2 = x2;
        if (v1 <= v2) {
            return "NO";
        }
        while (loc1 < loc2) {
            loc1 += v1;
            loc2 += v2;
        }
        if (loc1 == loc2) {
            return "YES";
        }
        return "NO";

    }

}

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")));

        String[] firstMultipleInput = bufferedReader.readLine().replaceAll("\\s+$", "").split(" ");

        int x1 = Integer.parseInt(firstMultipleInput[0]);

        int v1 = Integer.parseInt(firstMultipleInput[1]);

        int x2 = Integer.parseInt(firstMultipleInput[2]);

        int v2 = Integer.parseInt(firstMultipleInput[3]);

        String result = Result.kangaroo(x1, v1, x2, v2);

        bufferedWriter.write(result);
        bufferedWriter.newLine();

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

Number Line Jumps JavaScript Solution

process.stdin.resume();
process.stdin.setEncoding('ascii');

var input_stdin = "";
var input_stdin_array = "";
var input_currentline = 0;

process.stdin.on('data', function (data) {
    input_stdin += data;
});

process.stdin.on('end', function () {
    input_stdin_array = input_stdin.split("\n");
    main();    
});

function readLine() {
    return input_stdin_array[input_currentline++];
}

/////////////// ignore above this line ////////////////////

function main() {
    var x1_temp = readLine().split(' ');
    var x1 = parseInt(x1_temp[0]);
    var v1 = parseInt(x1_temp[1]);
    var x2 = parseInt(x1_temp[2]);
    var v2 = parseInt(x1_temp[3]);
    console.log(myFunc(x1,v1,x2,v2));
    function myFunc(x1,v1,x2,v2){
  if(x1 == x2  && v1 == v2){//if speed and distance is equal
    return 'YES';
  }
  else if(x1 == x2 && v1 > v2){//if initial distance is same but car1 speed > car2's
    return 'NO';
  }
  else if(x1 == x2 && v1 < v2){//if initial distance is same but car1 speed < car2's
    return 'NO';
  }
  else if(x1 < x2 && v1 == v2){//if speed is same but car1 is behind car2
    return 'NO';
  }
  else if(x1 > x2 && v1 == v2){//if speed is same but car1 is ahead of car2
    return 'NO';
  }
  else if((x1 < x2 && v1 < v2) || (x2 < x1 && v2 < v1)){//if distance and speed of each car is less than that of other one
    return 'NO';
  }
  else {
    if((x2-x1) % (v2-v1) === 0){
      return 'YES';
    }
    else {
      return 'NO';
    }
  }
}
    
}

Number Line Jumps Python Solution

#!/bin/python3

import sys

x1,v1,x2,v2 = input().strip().split(' ')
x1,v1,x2,v2 = [int(x1),int(v1),int(x2),int(v2)]

if v1 <= v2 or ((x2 - x1) % (v1 - v2) > 0):
    print('NO')
else:
    print('YES')

Other Solutions

  • HackerRank Between Two Sets Problem Solution
  • HackerRank Breaking the Records Solution
c C# C++ HackerRank Solutions java javascript python CcppCSharpHackerrank Solutionsjavajavascriptpython

Post navigation

Previous post
Next post

Leave a Reply

You must be logged in to post a comment.

  • HackerRank Dynamic Array Problem Solution
  • HackerRank 2D Array – DS Problem Solution
  • Hackerrank Array – DS Problem Solution
  • Von Neumann and Harvard Machine Architecture
  • Development of Computers
©2025 THECSICENCE | WordPress Theme by SuperbThemes