diff --git a/src/main/java/com/epam/izh/rd/online/service/SimpleMathService.java b/src/main/java/com/epam/izh/rd/online/service/SimpleMathService.java index 2921576..187c182 100644 --- a/src/main/java/com/epam/izh/rd/online/service/SimpleMathService.java +++ b/src/main/java/com/epam/izh/rd/online/service/SimpleMathService.java @@ -1,19 +1,23 @@ package com.epam.izh.rd.online.service; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; + public class SimpleMathService implements MathService { /** * Метод возвращает 0, если value1 = value2. * Метод возвращает -1, если value1 < value2. * Метод возвращает 1, если value1 > value2. - * + *

* Например для (-1, -1) метод должен вернуть 0; * Например для (-3, -1) метод должен вернуть -1; * Например для (3, 1) метод должен вернуть 1; */ @Override public int compare(int value1, int value2) { - return -2; + return Integer.compare(value1, value2); } /** @@ -22,7 +26,7 @@ public int compare(int value1, int value2) { */ @Override public int maxFrom(int value1, int value2) { - return -1; + return Math.max(value1, value2); } /** @@ -31,7 +35,7 @@ public int maxFrom(int value1, int value2) { */ @Override public int maxFrom(int[] values) { - return -1; + return Arrays.stream(values).max().getAsInt(); } /** @@ -40,7 +44,11 @@ public int maxFrom(int[] values) { */ @Override public int sum(int[] values) { - return -1; + int sum = 0; + for (int value : values) { + sum += value; + } + return sum; } /** @@ -49,7 +57,21 @@ public int sum(int[] values) { */ @Override public int[] getEvenDigits(int[] values) { - return new int[]{}; + List list = new ArrayList<>(); + for (int value : values) { + if (value % 2 == 0) { + list.add(value); + } + } + + int[] ret = new int[list.size()]; + for (int i=0; i < ret.length; i++) + { + ret[i] = list.get(i); + } + return ret; + + } /** @@ -59,22 +81,32 @@ public int[] getEvenDigits(int[] values) { */ @Override public long calcFactorial(int initialVal) { - return -1L; + if (initialVal <= 1) { + return 1; + } + else { + return initialVal * calcFactorial(initialVal - 1); + } } /** * Метод возвращает число, которе находится на заданной позиции (счет начинается с нуля) в ряду фибоначчи. - * + *

* Ряд фибоначчи - ряд, следующие элементы которого состоят из суммы двух предыдущих. * Ряд начинается 0 и 1. * Пример 0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55 ... - * + *

* Для числа 9 метод должен вернуть 34 * Для числа 0 метод должен вернуть 0 */ @Override public long calcFibonacci(int number) { - return -1L; + if (number == 0) + return 0; + if (number <= 2) + return 1; + else + return calcFibonacci(number - 1) + calcFibonacci(number - 2); } /** @@ -83,27 +115,42 @@ public long calcFibonacci(int number) { */ @Override public int[] sort(int[] values) { - return new int[]{}; + Arrays.sort(values); + return values; } /** * Метод определяет, является ли заданное число простым. * Простое число - число, которое делится только на 1 и на само себя. - * + *

* Например для числа 22 вернется false, а для числа 23 true. */ @Override public boolean isPrimary(int number) { - return false; + boolean flag = true; + for(int i =2; i * Например для массива {-1, -3, 4, 8, 5, 22, -5} метод вернет {-5, 22, 5, 8, 4, -3, -1} */ @Override public int[] reverseArray(int[] values) { - return new int[]{}; + + for(int i = 0; i < values.length / 2; i++) + { + int value = values[i]; + values[i] = values[values.length - i - 1]; + values[values.length - i - 1] = value; + } + return values; } -} +} \ No newline at end of file