## Hackerrank Java Lambda Expressions Solution

.MathJax_SVG_LineBox {display: table!important} .MathJax_SVG_LineBox span {display: table-cell!important; width: 10000em!important; min-width: 0; max-width: none; padding: 0; border: 0; margin: 0}

This Java 8 challenge tests your knowledge of Lambda expressions!

Write the following methods that *return a lambda expression* performing a specified action:

- PerformOperation isOdd(): The lambda expression must return if a number is odd or if it is even.
- PerformOperation isPrime(): The lambda expression must return if a number is prime or if it is composite.
- PerformOperation isPalindrome(): The lambda expression must return if a number is a palindrome or if it is not.

**Input Format**

Input is handled for you by the locked stub code in your editor.

**Output Format**

The locked stub code in your editor will print lines of output.

**Sample Input**

The first line contains an integer, (the number of test cases).

The subsequent lines each describe a test case in the form of space-separated integers:

The first integer specifies the condition to check for ( for Odd/Even, for Prime, or for Palindrome). The second integer denotes the number to be checked.

```
5
1 4
2 5
3 898
1 3
2 12
```

**Sample Output**

```
EVEN
PRIME
PALINDROME
ODD
COMPOSITE
```

### Solution in java8

**Approach 1**.

```
PerformOperation isOdd(){
return x -> (x % 2)==1;
}
PerformOperation isPrime(){
return p -> {if(p<3)return true;if((p % 2)==0)return false;for(int i=3;i<Math.sqrt(p);i+=2)if((p % i)==0)return false;return true;};
}
PerformOperation isPalindrome(){
return p -> {String pS=((Integer)p).toString();int n=pS.length();for(int i=0;i<n/2;i++)if(pS.charAt(i) != pS.charAt(n-1-i))return false;return true;};
}
}
```

**Approach 2**.

```
// Write your code here
public PerformOperation isOdd() {
return (int a) -> a % 2 != 0;
}
public PerformOperation isPrime() {
return (int a) -> java.math.BigInteger.valueOf(a).isProbablePrime(1);
}
public PerformOperation isPalindrome() {
return (int a) -> Integer.toString(a).equals( new StringBuilder(Integer.toString(a)).reverse().toString() );
}
}
```

**Approach 3**.

```
// Write your code here
public static PerformOperation isOdd(){
return (int a) -> a % 2 != 0;
}
public static PerformOperation isPrime(){
return (int a) -> java.math.BigInteger.valueOf(a).isProbablePrime(1);
}
public static PerformOperation isPalindrome(){
return (int a) -> Integer.toString(a).equals( new StringBuilder(Integer.toString(a)).reverse().toString() );
}
}
```