## The challenge

Complete the function which takes two arguments and returns all numbers which are divisible by the given divisor. First argument is an array of `numbers` and the second is the `divisor`.

### Example

 ``````1 `````` ``````divisibleBy([1, 2, 3, 4, 5, 6], 2) == [2, 4, 6] ``````

## The solution in Java

Option 1 (using `streams`):

 `````` 1 2 3 4 5 6 7 8 9 10 11 `````` ``````import java.util.stream.*; import java.util.Arrays; public class EvenNumbers { public static int[] divisibleBy(int[] numbers, int divider) { return Arrays.stream(numbers) .filter(i -> (i % divider) == 0) .toArray(); } } ``````

Option 2 (writing the code ourselves):

 `````` 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 `````` ``````public class EvenNumbers { public static int[] divisibleBy(int[] numbers, int divider) { int count = 0; for (int number : numbers){ if (number % divider == 0){ count ++; } } int[] arr = new int[count]; int i = 0; for (int number : numbers){ if (number % divider == 0){ arr[i] = number; i++; } } return arr; } } ``````

## Test cases to validate our code

 `````` 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 `````` ``````import java.util.Arrays; import java.util.Random; import static org.junit.Assert.assertArrayEquals; import org.junit.Test; public class EvenNumbersTest { private static int[] divisibleBy(int[] numbers, int divider) { return Arrays.stream(numbers).filter(n -> n % divider == 0).toArray(); } @Test public void testSimple() { assertArrayEquals(new int[] {2,4,6}, EvenNumbers.divisibleBy(new int[] {1,2,3,4,5,6},2)); assertArrayEquals(new int[] {3,6}, EvenNumbers.divisibleBy(new int[] {1,2,3,4,5,6},3)); assertArrayEquals(new int[] {0,4}, EvenNumbers.divisibleBy(new int[] {0,1,2,3,4,5,6},4)); } @Test public void testRandom() { Random r = new Random(); for (int i = 0; i < 20; i++) { int n = 2 + r.nextInt(10); int[] a = r.ints(100,0,100).toArray(); assertArrayEquals(divisibleBy(a, n), EvenNumbers.divisibleBy(a, n)); } } } ``````