DEV Community

Foroogh Varmazyar
Foroogh Varmazyar

Posted on

Hackerrank-Kangaroo Solution in Kotlin

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 x2 and moves at a rate of v2 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

After one jump, they are both at x=3,(x1+v1=2+1,x2+v2=1+2)so the answer is YES.

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

Constraints

0<x1<x2<10000
1<v1<10000
1<v2<10000

Sample Input 0

0 3 4 2
Enter fullscreen mode Exit fullscreen mode

Sample Output 0

YES
Enter fullscreen mode Exit fullscreen mode

Explanation 0

The two kangaroos jump through the following sequence of locations:

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

Sample Input 1

0 2 5 3
Enter fullscreen mode Exit fullscreen mode

Sample Output 1

NO
Enter fullscreen mode Exit fullscreen mode

The second kangaroo has a starting location that is ahead (further to the right) of the first kangaroo's starting location (i.e., x1>x2) 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.

Solution :

fun kangaroo(x1: Int, v1: Int, x2: Int, v2: Int): String {
    var start_k1 = x1+v1
    var startt_k2 = x2+v2
    var answer =0

     if(v1!= v2){
         var v = Math.abs(v2-v1)
         answer = (startt_k2-start_k1)%v
     } 

     if (v1<v2 || answer!=0 ||v1==v2){ 
         return "NO"
     }
       else{
          return "YES"
       }
   }

fun main(args: Array<String>) {
    val first_multiple_input = readLine()!!.trimEnd().split(" ")

    val x1 = first_multiple_input[0].toInt()

    val v1 = first_multiple_input[1].toInt()

    val x2 = first_multiple_input[2].toInt()

    val v2 = first_multiple_input[3].toInt()

    val result = kangaroo(x1, v1, x2, v2)

    println(result)
}
Enter fullscreen mode Exit fullscreen mode

Top comments (0)