From e6fc88d8413622f85712fd3cc06f12a8dbcc2341 Mon Sep 17 00:00:00 2001 From: Vlad Date: Mon, 14 Sep 2020 17:30:51 +0400 Subject: [PATCH] =?UTF-8?q?=D0=94=D0=BE=D0=B1=D0=B0=D0=B2=D0=BB=D0=B5?= =?UTF-8?q?=D0=BD=D0=B0=20=D1=80=D0=B5=D0=B0=D0=BB=D0=B8=D0=B7=D0=B0=D1=86?= =?UTF-8?q?=D0=B8=D1=8F=20=D0=BC=D0=B5=D1=82=D0=BE=D0=B4=D0=BE=D0=B2=20?= =?UTF-8?q?=D0=B2=20SimpleMathService?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- java-basics-template.iml | 22 ++++++ .../rd/online/service/SimpleMathService.java | 75 +++++++++++++++---- 2 files changed, 82 insertions(+), 15 deletions(-) create mode 100644 java-basics-template.iml diff --git a/java-basics-template.iml b/java-basics-template.iml new file mode 100644 index 0000000..038395d --- /dev/null +++ b/java-basics-template.iml @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file 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..4074b65 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.math.BigInteger; +import java.util.Arrays; + 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; + Integer value = value1; + return value.compareTo(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,13 @@ public int maxFrom(int value1, int value2) { */ @Override public int maxFrom(int[] values) { - return -1; + int max = values[0]; + + for (int value : values) { + max = maxFrom(max, value); + } + + return max; } /** @@ -40,16 +50,31 @@ public int maxFrom(int[] values) { */ @Override public int sum(int[] values) { - return -1; + int result = 0; + for (int value : values) { + result += value; + } + return result; } /** * Метод фильтрует массив, оставляя только четные числа. * Например для списка {-1, -3, 4, 8, 5, 22, 17} метод должен вернуть {4, 8, 22} + * + * @return */ @Override public int[] getEvenDigits(int[] values) { - return new int[]{}; + int[] evenDigitsList = new int[0]; + + for (int value : values) { + if (value % 2 == 0) { + evenDigitsList = Arrays.copyOf(evenDigitsList, evenDigitsList.length + 1); + evenDigitsList[evenDigitsList.length - 1] = value; + } + } + + return evenDigitsList; } /** @@ -59,22 +84,36 @@ public int[] getEvenDigits(int[] values) { */ @Override public long calcFactorial(int initialVal) { - return -1L; + int result = 1; + for (int i = 1; i <= initialVal; i++) { + result *= i; + } + return result; } /** * Метод возвращает число, которе находится на заданной позиции (счет начинается с нуля) в ряду фибоначчи. - * + *

* Ряд фибоначчи - ряд, следующие элементы которого состоят из суммы двух предыдущих. * Ряд начинается 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; + int result = 0; + int cacheOne; + int cacheTwo = 1; + + for (int i = 0; i < number; i++) { + cacheOne = cacheTwo; + cacheTwo = result; + result = cacheOne + cacheTwo; + } + + return result; } /** @@ -83,27 +122,33 @@ 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; + BigInteger bigInteger = new BigInteger(String.valueOf(number)); + return bigInteger.isProbablePrime(1); } /** * Метод возвращает массив, в котором элементы расположены в обратном порядке. - * + *

* Например для массива {-1, -3, 4, 8, 5, 22, -5} метод вернет {-5, 22, 5, 8, 4, -3, -1} */ @Override public int[] reverseArray(int[] values) { - return new int[]{}; + int[] reverseArray = new int[values.length]; + for (int i = 0; i < values.length; i++) { + reverseArray[i] = values[values.length - i - 1]; + } + return reverseArray; } }