diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..4f858a0 --- /dev/null +++ b/.gitignore @@ -0,0 +1,7 @@ +/target/classes/com/epam/intro/SubTask10.class +/target/classes/com/epam/intro/SubTask1.class +/target/classes/com/epam/intro/SubTask11.class +/target/classes/com/epam/intro/SubTask12.class +/target/classes/com/epam/intro/SubTask13.class +/target +/.idea diff --git a/pom.xml b/pom.xml new file mode 100644 index 0000000..09d711e --- /dev/null +++ b/pom.xml @@ -0,0 +1,16 @@ + + + 4.0.0 + + org.example + 2_Algorithmization + 1.0-SNAPSHOT + + + 8 + 8 + + + \ No newline at end of file diff --git a/src/main/java/com/epam/intro/SubTask1.java b/src/main/java/com/epam/intro/SubTask1.java new file mode 100644 index 0000000..431ef59 --- /dev/null +++ b/src/main/java/com/epam/intro/SubTask1.java @@ -0,0 +1,32 @@ +package com.epam.intro; + +import java.util.Scanner; + +public class SubTask1 { + + public static void main(String[] args) { + int n = readVariable("number of elements"); + int k = readVariable("common divider"); + int sum = 0; + int[] a = new int[n]; + for (int i = 0; i a[i][y - 1]) { + columnsToShow[i] = true; + } + } + for (int j = 0; j < y; j++) { + for (int i = 1; i < x; i += 2) { + if(columnsToShow[i]){ + System.out.print(a[i][j] + " "); + } + + } + System.out.println(); + } + } + + private static int[][] readArray(int x, int y) { + int[][] a = new int[x][y]; + for (int j = 0; j < y; j++) { + String row = readStringVariable(" row : " + j); + String[] elements = row.split(TEMPLATE); + if(elements.length< x){ + throw new RuntimeException("Incorrect length of row"); + } + int i=0; + for (String str:elements){ + a[i++][j] = Integer.parseInt(str); + } + } + return a; + } + + private static String readStringVariable(String variableName) { + System.out.println("Please input " + variableName); + Scanner scanner = new Scanner(System.in); + return scanner.nextLine(); + } + + public static int readVariable(String variableName) { + System.out.println("Please input " + variableName); + Scanner scanner = new Scanner(System.in); + return scanner.nextInt(); + } +} diff --git a/src/main/java/com/epam/intro/SubTask12.java b/src/main/java/com/epam/intro/SubTask12.java new file mode 100644 index 0000000..ebc7eb0 --- /dev/null +++ b/src/main/java/com/epam/intro/SubTask12.java @@ -0,0 +1,29 @@ +package com.epam.intro; + +import java.util.Scanner; + +public class SubTask12 { + public static void main(String[] args) { + int n = readVariable("count of columns and rows: "); + int[][] a = new int[n][n]; + for (int j = 0; j < n; j++) { + for (int i = 0; i < n; i++) { + a[i][j] = readVariable("a[" + i + "," + j + "]"); + } + } + for (int i = 0; i < n; i++) { + System.out.print(a[i][i] + " "); + } + for (int i = 0; i < n; i++) { + if (a[n-i-1][i]!=a[i][i]) + System.out.print(a[n - i-1][i] + " "); + } + } + + public static int readVariable(String variableName) { + System.out.println("Please input " + variableName); + Scanner scanner = new Scanner(System.in); + return scanner.nextInt(); + } + +} diff --git a/src/main/java/com/epam/intro/SubTask13.java b/src/main/java/com/epam/intro/SubTask13.java new file mode 100644 index 0000000..6e75e7e --- /dev/null +++ b/src/main/java/com/epam/intro/SubTask13.java @@ -0,0 +1,33 @@ +package com.epam.intro; + +import java.util.Scanner; + +public class SubTask13 { + public static void main(String[] args) { + int y = readVariable("count of rows: "); + int x = readVariable("count of columns: "); + int[][] a = new int[x][y]; + for (int j = 0; j < y; j++) { + for (int i = 0; i < x; i++) { + a[i][j] = readVariable("a[" + i + "," + j + "]"); + } + } + int k = readVariable("number of row: "); + int p = readVariable("number of column: "); + for (int i = 0; i < x; i++) { + System.out.print(a[i][k]); + } + System.out.println(); + System.out.println(); + for (int j = 0; j < y; j++) { + System.out.println(a[p][j]); + } + } + + + public static int readVariable(String variableName) { + System.out.println("Please input " + variableName); + Scanner scanner = new Scanner(System.in); + return scanner.nextInt(); + } +} diff --git a/src/main/java/com/epam/intro/SubTask14.java b/src/main/java/com/epam/intro/SubTask14.java new file mode 100644 index 0000000..88581e8 --- /dev/null +++ b/src/main/java/com/epam/intro/SubTask14.java @@ -0,0 +1,31 @@ +package com.epam.intro; + +import java.util.Scanner; + +public class SubTask14 { + public static void main(String[] args) { + int n = readVariable("count of columns and rows: "); + int[][] a = new int[n][n]; + for (int j = 0; j < n; j++) { + for (int i = 0; i < n; i++) { + if (j % 2 != 0) { + a[i][j] = n - i; + } else { + a[i][j] = i + 1; + } + System.out.print(a[i][j] + " "); + } + System.out.println(); + } + } + + public static int readVariable(String variableName) { + System.out.println("Please input " + variableName); + Scanner scanner = new Scanner(System.in); + int result = scanner.nextInt(); + if (result % 2 > 0) { + throw new RuntimeException("It must be even number"); + } + return result; + } +} \ No newline at end of file diff --git a/src/main/java/com/epam/intro/SubTask15.java b/src/main/java/com/epam/intro/SubTask15.java new file mode 100644 index 0000000..e2da5b5 --- /dev/null +++ b/src/main/java/com/epam/intro/SubTask15.java @@ -0,0 +1,32 @@ +package com.epam.intro; + +import java.util.Scanner; + +public class SubTask15 { + public static void main(String[] args) { + int n = readVariable("count of columns and rows: "); + int[][] a = new int[n][n]; + for (int i = 0; i < n; i++) { + for (int j = 0; j < n; j++) { + if (i+j>=n) { + a[i][j] = 0; + } else { + a[i][j] = i + 1; + } + System.out.print(a[i][j] + " "); + } + System.out.println(); + } + } + + public static int readVariable(String variableName) { + System.out.println("Please input " + variableName); + Scanner scanner = new Scanner(System.in); + int result = scanner.nextInt(); + if (result % 2 > 0) { + throw new RuntimeException("It must be even number"); + } + return result; + } + +} diff --git a/src/main/java/com/epam/intro/SubTask16.java b/src/main/java/com/epam/intro/SubTask16.java new file mode 100644 index 0000000..7b2f0be --- /dev/null +++ b/src/main/java/com/epam/intro/SubTask16.java @@ -0,0 +1,32 @@ +package com.epam.intro; + +import java.util.Scanner; + +public class SubTask16 { + public static void main(String[] args) { + int n = readVariable("count of columns and rows: "); + int[][] a = new int[n][n]; + for (int j = 0; j < n; j++) { + for (int i = 0; i < n; i++) { + if (((i + j > n - 1) && i > j) || (i + j < n - 1 && i < j)) { + a[i][j] = 0; + } else { + a[i][j] = 1; + } + System.out.print(a[i][j] + " "); + } + System.out.println(); + } + } + + public static int readVariable(String variableName) { + System.out.println("Please input " + variableName); + Scanner scanner = new Scanner(System.in); + int result = scanner.nextInt(); + if (result % 2 > 0) { + throw new RuntimeException("It must be even number"); + } + return result; + } + +} diff --git a/src/main/java/com/epam/intro/SubTask17.java b/src/main/java/com/epam/intro/SubTask17.java new file mode 100644 index 0000000..763c447 --- /dev/null +++ b/src/main/java/com/epam/intro/SubTask17.java @@ -0,0 +1,41 @@ +package com.epam.intro; + +import java.util.Scanner; + +import static java.lang.Math.pow; + +public class SubTask17 { + public static void main(String[] args) { + int n = readVariable("count of columns and rows: "); + int countPositive = 0; + double[][] a = new double[n][n]; + for (int j = 0; j < n; j++) { + for (int i = 0; i < n; i++) { + a[i][j] = Math.sin((pow(i, 2) - pow(j, 2)) / n); + System.out.print(a[i][j] + " "); + } + System.out.println(); + } + + for (int j = 0; j < n; j++) { + for (int i = 0; i < n; i++) { + if (a[i][j] > 0) { + countPositive = countPositive + 1; + } + } + + } + System.out.println("Count of positive elements: " + countPositive); + } + + + public static int readVariable(String variableName) { + System.out.println("Please input " + variableName); + Scanner scanner = new Scanner(System.in); + int result = scanner.nextInt(); + if (result % 2 > 0) { + throw new RuntimeException("It must be even number"); + } + return result; + } +} diff --git a/src/main/java/com/epam/intro/SubTask18.java b/src/main/java/com/epam/intro/SubTask18.java new file mode 100644 index 0000000..f187ea9 --- /dev/null +++ b/src/main/java/com/epam/intro/SubTask18.java @@ -0,0 +1,37 @@ +package com.epam.intro; + +import java.util.Scanner; + +public class SubTask18 { + public static void main(String[] args) { + int y = readVariable("count of rows: "); + int x = readVariable("count of columns: "); + int[][] a = new int[x][y]; + for (int j = 0; j < y; j++) { + for (int i = 0; i < x; i++) { + a[i][j] = readVariable("a[" + i + "," + j + "]"); + } + } + int k = readVariable("number of first column: "); + int p = readVariable("number of second column: "); + int tmp = 0; + for (int j = 0; j < y; j++) { + tmp = a[k][j]; + a[k][j] = a[p][j]; + a[p][j] = tmp; + } + for (int j = 0; j < y; j++) { + for (int i = 0; i < x; i ++) { + System.out.print(a[i][j] + " "); + } + System.out.println(); + } + } + + + public static int readVariable(String variableName) { + System.out.println("Please input " + variableName); + Scanner scanner = new Scanner(System.in); + return scanner.nextInt(); + } +} diff --git a/src/main/java/com/epam/intro/SubTask19.java b/src/main/java/com/epam/intro/SubTask19.java new file mode 100644 index 0000000..ddef1cd --- /dev/null +++ b/src/main/java/com/epam/intro/SubTask19.java @@ -0,0 +1,38 @@ +package com.epam.intro; + +import java.util.Scanner; + +public class SubTask19 { + public static void main(String[] args) { + int y = readVariable("count of rows: "); + int x = readVariable("count of columns: "); + int[][] a = new int[x][y]; + for (int j = 0; j < y; j++) { + for (int i = 0; i < x; i++) { + a[i][j] = readVariable("a[" + i + "," + j + "]"); + } + } + int[] sum = new int [x]; + for (int i = 0; i < x; i++) { + for (int j = 0; j < y; j++) { + sum[i] = sum[i] + a[i][j]; + } + } + int k = 1; + int max = sum[1]; + for (int i = 0; i < x; i++) { + if (sum[i] > max) { + max = sum[i]; + k = i; + } + } + System.out.print("Maximum sum is: " + k); + } + + + public static int readVariable(String variableName) { + System.out.println("Please input " + variableName); + Scanner scanner = new Scanner(System.in); + return scanner.nextInt(); + } +} diff --git a/src/main/java/com/epam/intro/SubTask2.java b/src/main/java/com/epam/intro/SubTask2.java new file mode 100644 index 0000000..1f0e650 --- /dev/null +++ b/src/main/java/com/epam/intro/SubTask2.java @@ -0,0 +1,37 @@ +package com.epam.intro; + +import java.util.Scanner; + +public class SubTask2 { + public static void main(String[] args) { + int n = readVariable("number of elements"); + double z = readVariable("number z"); + int count = 0; + double[] a = new double[n]; + for (int i = 0; i z) { + a[i] = z; + count++; + } + } + System.out.println("The result is: " + count); + + } + public static int readVariable(String variableName) { + System.out.println("Please input " + variableName); + Scanner scanner = new Scanner(System.in); + int result = scanner.nextInt(); + if (result <0 ){ + throw new RuntimeException("It must be more than 0"); + } + return result; + } + public static double readDoubleVariable(String variableName) { + System.out.println("Please input " + variableName); + Scanner scanner = new Scanner(System.in); + return scanner.nextDouble(); + } +} diff --git a/src/main/java/com/epam/intro/SubTask20.java b/src/main/java/com/epam/intro/SubTask20.java new file mode 100644 index 0000000..9fbdd5b --- /dev/null +++ b/src/main/java/com/epam/intro/SubTask20.java @@ -0,0 +1,25 @@ +package com.epam.intro; + +import java.util.Scanner; + +public class SubTask20 { + public static void main(String[] args) { + int n = readVariable("count of columns and rows: "); + int[][] a = new int[n][n]; + for (int j = 0; j < n; j++) { + for (int i = 0; i < n; i++) { + a[i][j] = readVariable("a[" + i + "," + j + "]"); + } + } + for (int i = 0; i < n; i++) { + if (a[i][i]>0) + System.out.print(a[i][i] + " "); + } + } + public static int readVariable(String variableName) { + System.out.println("Please input " + variableName); + Scanner scanner = new Scanner(System.in); + return scanner.nextInt(); + } + +} diff --git a/src/main/java/com/epam/intro/SubTask21.java b/src/main/java/com/epam/intro/SubTask21.java new file mode 100644 index 0000000..416433f --- /dev/null +++ b/src/main/java/com/epam/intro/SubTask21.java @@ -0,0 +1,41 @@ +package com.epam.intro; + +import java.util.Scanner; + +public class SubTask21 { + public static void main(String[] args) { + double[][] a = new double[10][20]; + int[][] b = new int[10][20]; + for (int j = 0; j < 20; j++) { + for (int i = 0; i < 10; i++) { + a[i][j] = Math.random() * 15; + } + } + + for (int j = 0; j < 20; j++) { + for (int i = 0; i < 10; i++) { + b[i][j] = (int) a[i][j]; + } + } + + for (int j = 0; j < 20; j++) { + for (int i = 0; i < 10; i++) { + System.out.print(b[i][j] + " "); + } + System.out.println(); + } + System.out.println(); + for (int j = 0; j < 20; j++) { + int count = 0; + for (int i = 0; i < 10; i++) { + if (b[i][j] == 5) { + count = count + 1; + } + } + if (count >= 3) { + System.out.print(j + " "); + } + } + } + +} diff --git a/src/main/java/com/epam/intro/SubTask22.java b/src/main/java/com/epam/intro/SubTask22.java new file mode 100644 index 0000000..9f72bf4 --- /dev/null +++ b/src/main/java/com/epam/intro/SubTask22.java @@ -0,0 +1,46 @@ +package com.epam.intro; + +import java.util.Scanner; + +public class SubTask22 { + public static void main(String[] args) { + int y = readVariable("count of rows: "); + int x = readVariable("count of columns: "); + int[][] a = new int[x][y]; + for (int j = 0; j < y; j++) { + for (int i = 0; i < x; i++) { + a[i][j] = readVariable("a[" + i + "," + j + "]"); + } + } + for (int j = 0; j < y; j++) { + int countOfReplacement = 0; + do { + countOfReplacement = 0; + for (int i = 0; i < x - 1; i++) { + if (a[i][j] > a[i + 1][j]) { + int tmp = a[i][j]; + a[i][j] = a[i + 1][j]; + a[i + 1][j] = tmp; + countOfReplacement++; + } + } + + } + while (countOfReplacement > 0); + } + for (int j = 0; j < y; j++) { + for (int i = 0; i < x; i++) { + System.out.print(a[i][j] + " "); + } + System.out.println(); + } + + } + + + public static int readVariable(String variableName) { + System.out.println("Please input " + variableName); + Scanner scanner = new Scanner(System.in); + return scanner.nextInt(); + } +} diff --git a/src/main/java/com/epam/intro/SubTask23.java b/src/main/java/com/epam/intro/SubTask23.java new file mode 100644 index 0000000..ac977a7 --- /dev/null +++ b/src/main/java/com/epam/intro/SubTask23.java @@ -0,0 +1,47 @@ +package com.epam.intro; + +import java.util.Scanner; + +public class SubTask23 { + public static void main(String[] args) { + int y = readVariable("count of rows: "); + int x = readVariable("count of columns: "); + int[][] a = new int[x][y]; + for (int j = 0; j < y; j++) { + for (int i = 0; i < x; i++) { + a[i][j] = readVariable("a[" + i + "," + j + "]"); + } + } + for (int j = 0; j < y; j++) { + int countOfReplacement = 0; + do { + countOfReplacement = 0; + for (int i = 0; i < x - 1; i++) { + if (a[i][j] < a[i + 1][j]) { + int tmp = a[i][j]; + a[i][j] = a[i + 1][j]; + a[i + 1][j] = tmp; + countOfReplacement++; + } + } + + } + while (countOfReplacement > 0); + } + for (int j = 0; j < y; j++) { + for (int i = 0; i < x; i++) { + System.out.print(a[i][j] + " "); + } + System.out.println(); + } + + } + + + public static int readVariable(String variableName) { + System.out.println("Please input " + variableName); + Scanner scanner = new Scanner(System.in); + return scanner.nextInt(); + } + +} diff --git a/src/main/java/com/epam/intro/SubTask24.java b/src/main/java/com/epam/intro/SubTask24.java new file mode 100644 index 0000000..38080e7 --- /dev/null +++ b/src/main/java/com/epam/intro/SubTask24.java @@ -0,0 +1,52 @@ +package com.epam.intro; + +import java.util.ArrayList; +import java.util.List; +import java.util.Random; +import java.util.Scanner; + +public class SubTask24 { + public static void main(String[] args) { + int y = readVariable("count of rows: "); + int x = readVariable("count of columns: "); + if (x < y) { + throw new RuntimeException("Number of rows must be more or equal than number of columns"); + } + int[][] a = new int[x][y]; + Random random = new Random(); + + + for (int i = 0; i < x; i++) { + List ids = new ArrayList<>(); + for (int j = 0; j < y; j++) { + ids.add((long) j); + } + for (int k = 0; k < y - i; k++) { + if (ids.size() > 0) { + int id = random.nextInt(ids.size()); + ids.remove(id); + } else { + break; + } + } + for (Long strNumber : ids) { + a[i][strNumber.intValue()] = 1; + } + } + + for (int j = 0; j < y; j++) { + for (int i = 0; i < x; i++) { + System.out.print(a[i][j] + " "); + } + System.out.println(); + } + + } + + + public static int readVariable(String variableName) { + System.out.println("Please input " + variableName); + Scanner scanner = new Scanner(System.in); + return scanner.nextInt(); + } +} diff --git a/src/main/java/com/epam/intro/SubTask25.java b/src/main/java/com/epam/intro/SubTask25.java new file mode 100644 index 0000000..70195d6 --- /dev/null +++ b/src/main/java/com/epam/intro/SubTask25.java @@ -0,0 +1,42 @@ +package com.epam.intro; + +import java.util.Scanner; + +public class SubTask25 { + public static void main(String[] args) { + int y = readVariable("count of rows: "); + int x = readVariable("count of columns: "); + int[][] a = new int[x][y]; + for (int j = 0; j < y; j++) { + for (int i = 0; i < x; i++) { + a[i][j] = readVariable("a[" + i + "," + j + "]"); + } + } + int max = a[1][1]; + for (int j = 0; j < y; j++) { + for (int i = 0; i < x; i++) { + if (a[i][j] > max) + max = a[i][j]; + } + } + for (int j = 0; j < y; j++) { + for (int i = 0; i < x; i++) { + if (a[i][j] % 2 != 0) + a[i][j] = max; + } + } + for (int j = 0; j < y; j++) { + for (int i = 0; i < x; i++) { + System.out.print(a[i][j] + " "); + } + System.out.println(); + } + } + + public static int readVariable(String variableName) { + System.out.println("Please input " + variableName); + Scanner scanner = new Scanner(System.in); + return scanner.nextInt(); + } + +} diff --git a/src/main/java/com/epam/intro/SubTask26.java b/src/main/java/com/epam/intro/SubTask26.java new file mode 100644 index 0000000..17f0993 --- /dev/null +++ b/src/main/java/com/epam/intro/SubTask26.java @@ -0,0 +1,151 @@ +package com.epam.intro; + +import java.util.*; +import java.util.concurrent.ConcurrentHashMap; +import java.util.stream.Collectors; +import java.util.stream.IntStream; +import java.util.stream.LongStream; +import java.util.stream.Stream; + +public class SubTask26 { + private static final Integer AMOUNT = 3; + private static final Map METRICS = new ConcurrentHashMap<>(); + private static final String NEXT_REPLACE_DETECT = "NEXT REPLACE DETECT"; + private static final String FILL_MATRIX = "FILL MATRIX"; + private static final String CHECK_MATRIX = "CHECK MATRIX"; + private static final String REPLACE = "REPLACE"; + private static final String TOTALLY = "TOTALLY"; + private static final String MAX_DETECTION = "MAX DETECTION"; + private static final String MIN_FROM_MAX = "MIN FROM MAX"; + private static final String MERGE = "MERGE"; + + public static void main(String[] args) { + List originalList = LongStream.range(1, (long) AMOUNT * AMOUNT + 1).boxed().collect(Collectors.toList()); + long[][] matrix = new long[AMOUNT][AMOUNT]; + METRICS.put(NEXT_REPLACE_DETECT, 0L); + METRICS.put(FILL_MATRIX, 0L); + METRICS.put(CHECK_MATRIX, 0L); + METRICS.put(REPLACE, 0L); + METRICS.put(MAX_DETECTION, 0L); + METRICS.put(MIN_FROM_MAX, 0L); + METRICS.put(MERGE, 0L); + fillMatrix(originalList, matrix); + long maxNumberOfIterations = LongStream.range(1, (long) AMOUNT * AMOUNT + 1).reduce(1, (x, y) -> x * y); + System.out.println("Totally " + maxNumberOfIterations); + System.out.println(); + printMatrix(matrix); + boolean detected = false; + long count = 1; + long startTime = System.currentTimeMillis(); + while (getNextReplacementIndex(originalList) >= 0 && !detected) { + originalList = replaceByPosition(originalList, getNextReplacementIndex(originalList)); + fillMatrix(originalList, matrix); + detected = checkMatrix(matrix); + count++; + if (System.currentTimeMillis() - startTime > 1000 * 60 * 2) { + break; + } + } + if (detected) { + System.out.println(); + printMatrix(matrix); + } + System.out.println("Count: " + count); + METRICS.put(TOTALLY, System.currentTimeMillis() - startTime); + METRICS.forEach((key, value) -> System.out.println(key + " : " + value)); + } + + private static void printMatrix(long[][] matrix) { + System.out.println(Arrays.stream(matrix) + .map(it -> Arrays.stream(it) + .boxed() + .map(it0 -> String.format("%02d ", it0)) + .collect(Collectors.joining(" "))).collect(Collectors.joining("\n"))); + System.out.println("-----------"); + } + + private static void fillMatrix(List originalList, long[][] matrix) { + long startTime = System.currentTimeMillis(); + for (int i = 0; i < AMOUNT; i++) { + for (int j = 0; j < AMOUNT; j++) { + matrix[i][j] = originalList.get(i * AMOUNT + j); + } + } + fillMetrics(startTime, FILL_MATRIX); + } + + private static void fillMetrics(long startTime, String metric) { + METRICS.put(metric, METRICS.get(metric) + System.currentTimeMillis() - startTime); + } + + private static boolean checkMatrix(long[][] matrix) { + long startTime = System.currentTimeMillis(); + long expected = AMOUNT * ((long) AMOUNT * AMOUNT + 1) / 2; + long sumColumn; + long sumRow; + boolean canBeCalculated = IntStream.range(0, AMOUNT).boxed().map(it -> matrix[it][it]).mapToLong(it -> it).sum() == expected; + if (canBeCalculated) { + canBeCalculated = IntStream.range(0, AMOUNT).boxed().map(it -> matrix[it][AMOUNT - it - 1]).mapToLong(it -> it).sum() == expected; + for (int i = 0; i < AMOUNT && canBeCalculated; i++) { + sumColumn = 0; + sumRow = 0; + for (int j = 0; j < AMOUNT; j++) { + sumColumn += matrix[i][j]; + sumRow += matrix[j][i]; + } + if (sumColumn != expected || sumRow != expected) { + canBeCalculated = false; + } + } + } + fillMetrics(startTime, FILL_MATRIX); + return canBeCalculated; + } + + private static int getNextReplacementIndex(List originalList) { + long startTime = System.currentTimeMillis(); + int result = -1; + for (int i = originalList.size() - 1; i > 0; i--) { + if (originalList.get(i) > originalList.get(i - 1)) { + result = i - 1; + break; + } + } + + fillMetrics(startTime, NEXT_REPLACE_DETECT); + return result; + } + + private static List replaceByPosition(List originalList, Integer position) { + long startTime = System.currentTimeMillis(); + + long min = Long.MAX_VALUE; + Long elementForCheck = originalList.get(position); + for (int i = position + 1; i < originalList.size(); i++) { + Long element = originalList.get(i); + if (min > element && element > elementForCheck) { + min = element; + } + } + + fillMetrics(startTime, MIN_FROM_MAX); + long startTimeMerge = System.currentTimeMillis(); + List result = new ArrayList<>(originalList.size()); + originalList.remove(min); + List subList = originalList.subList(position, originalList.size()).stream().sorted().collect(Collectors.toList()); + for (int i = 0; i < originalList.size(); i++) { + if (i < position) { + result.add(originalList.get(i)); + } else if (i == position) { + result.add(min); + } + } + result.addAll(subList); + + fillMetrics(startTimeMerge, MERGE); + fillMetrics(startTime, REPLACE); + + return result; + } + +} diff --git a/src/main/java/com/epam/intro/SubTask27.java b/src/main/java/com/epam/intro/SubTask27.java new file mode 100644 index 0000000..ee90269 --- /dev/null +++ b/src/main/java/com/epam/intro/SubTask27.java @@ -0,0 +1,39 @@ +package com.epam.intro; + +import java.util.Arrays; +import java.util.Scanner; + +public class SubTask27 { + public static void main(String[] args) { + int lengthFirstArray = readVariable("length of the first array: "); + int[] a = new int[lengthFirstArray]; + for (int i = 0; i < lengthFirstArray; i++) { + a[i] = readVariable("a[" + i + "]"); + + } + int lengthSecondArray = readVariable("length of the second array: "); + int[] b = new int[lengthSecondArray]; + for (int j = 0; j < lengthSecondArray; j++) { + b[j] = readVariable("b[" + j + "]"); + + } + int k = readVariable("k: "); + a = Arrays.copyOf(a, lengthFirstArray + lengthSecondArray); + for (int i = lengthFirstArray - 1; i > k; i--) { + a[a.length - lengthFirstArray + i] = a[i]; + } + for (int i = k + 1; i < k + 1 + lengthSecondArray; i++) { + a[i] = b[i - k - 1]; + } + for (int i = 0; i < a.length; i++) { + System.out.print(a[i] + " "); + } + } + + public static int readVariable(String variableName) { + System.out.println("Please input " + variableName); + Scanner scanner = new Scanner(System.in); + return scanner.nextInt(); + } + +} diff --git a/src/main/java/com/epam/intro/SubTask28.java b/src/main/java/com/epam/intro/SubTask28.java new file mode 100644 index 0000000..a5aaddf --- /dev/null +++ b/src/main/java/com/epam/intro/SubTask28.java @@ -0,0 +1,49 @@ +package com.epam.intro; + +import java.util.Arrays; +import java.util.Scanner; + +public class SubTask28 { + public static void main(String[] args) { + int lengthFirstArray = readVariable("length of the first array: "); + int[] a = new int[lengthFirstArray]; + for (int i = 0; i < lengthFirstArray; i++) { + a[i] = readVariable("a[" + i + "]"); + + } + int lengthSecondArray = readVariable("length of the second array: "); + int[] b = new int[lengthSecondArray]; + for (int j = 0; j < lengthSecondArray; j++) { + b[j] = readVariable("b[" + j + "]"); + + } + a = Arrays.copyOf(a, lengthFirstArray + lengthSecondArray); + for (int i = lengthFirstArray; i < a.length; i++) { + a[i] = b[i - lengthFirstArray]; + } + int countOfReplacement = 0; + do { + countOfReplacement = 0; + for (int i = 0; i < a.length-1; i++) { + if (a[i] > a[i + 1]) { + int tmp = a[i]; + a[i] = a[i + 1]; + a[i + 1] = tmp; + countOfReplacement++; + } + } + + } + while (countOfReplacement > 0); + for (int i = 0; i < a.length; i++) { + System.out.print(a[i] + " "); + } + } + + public static int readVariable(String variableName) { + System.out.println("Please input " + variableName); + Scanner scanner = new Scanner(System.in); + return scanner.nextInt(); + } + +} diff --git a/src/main/java/com/epam/intro/SubTask29.java b/src/main/java/com/epam/intro/SubTask29.java new file mode 100644 index 0000000..ef778f1 --- /dev/null +++ b/src/main/java/com/epam/intro/SubTask29.java @@ -0,0 +1,37 @@ +package com.epam.intro; + +import java.util.Scanner; + +public class SubTask29 { + public static void main(String[] args) { + int lengthArray = readVariable("length of the first array: "); + int[] a = new int[lengthArray]; + for (int i = 0; i < lengthArray; i++) { + a[i] = readVariable("a[" + i + "]"); + + } + for (int j = 0; j < lengthArray; j++) { + + int max = a[j]; + int position = j; + for (int i = j; i < lengthArray; i++) { + if (a[i] > max) { + max = a[i]; + position = i; + } + } + a[position] = a[j]; + a[j] = max; + } + for (int i = 0; i < a.length; i++) { + System.out.print(a[i] + " "); + } + + } + + public static int readVariable(String variableName) { + System.out.println("Please input " + variableName); + Scanner scanner = new Scanner(System.in); + return scanner.nextInt(); + } +} \ No newline at end of file diff --git a/src/main/java/com/epam/intro/SubTask3.java b/src/main/java/com/epam/intro/SubTask3.java new file mode 100644 index 0000000..458dd87 --- /dev/null +++ b/src/main/java/com/epam/intro/SubTask3.java @@ -0,0 +1,56 @@ +package com.epam.intro; + +import java.util.Scanner; + +public class SubTask3 { + static class Statistics { + int lessZero = 0; + int zero = 0; + int moreZero = 0; + + @Override + public String toString() { + return "Statistics{" + + "lessZero=" + lessZero + + ", zero=" + zero + + ", moreZero=" + moreZero + + '}'; + } + } + + public static void main(String[] args) { + int n = readVariable("number of elements"); + Statistics statistics = new Statistics(); + double[] a = new double[n]; + for (int i = 0; i < n; i++) { + a[i] = readDoubleVariable("a[" + i + "]"); + } + for (int i = 0; i < n; i++) { + if (a[i] > 0) { + statistics.moreZero++; + }else if (a[i]<0){ + statistics.lessZero++; + }else { + statistics.zero++; + } + } + System.out.println("The result is: " + statistics); + + } + + public static int readVariable(String variableName) { + System.out.println("Please input " + variableName); + Scanner scanner = new Scanner(System.in); + int result = scanner.nextInt(); + if (result < 0) { + throw new RuntimeException("It must be more than 0"); + } + return result; + } + + public static double readDoubleVariable(String variableName) { + System.out.println("Please input " + variableName); + Scanner scanner = new Scanner(System.in); + return scanner.nextDouble(); + } +} diff --git a/src/main/java/com/epam/intro/SubTask30.java b/src/main/java/com/epam/intro/SubTask30.java new file mode 100644 index 0000000..c096fcf --- /dev/null +++ b/src/main/java/com/epam/intro/SubTask30.java @@ -0,0 +1,39 @@ +package com.epam.intro; + +import java.util.Scanner; + +public class SubTask30 { + public static void main(String[] args) { + int lengthArray = readVariable("length of the first array: "); + int[] a = new int[lengthArray]; + for (int i = 0; i < lengthArray; i++) { + a[i] = readVariable("a[" + i + "]"); + + } + int countOfReplacement = 0; + do { + countOfReplacement = 0; + for (int i = 0; i < lengthArray-1; i++) { + if (a[i] > a[i + 1]) { + int tmp = a[i]; + a[i] = a[i + 1]; + a[i + 1] = tmp; + countOfReplacement++; + } + } + + } + while (countOfReplacement > 0); + + for (int i = 0; i < a.length; i++) { + System.out.print(a[i] + " "); + } + + } + + public static int readVariable(String variableName) { + System.out.println("Please input " + variableName); + Scanner scanner = new Scanner(System.in); + return scanner.nextInt(); + } +} \ No newline at end of file diff --git a/src/main/java/com/epam/intro/SubTask31.java b/src/main/java/com/epam/intro/SubTask31.java new file mode 100644 index 0000000..1bdf03a --- /dev/null +++ b/src/main/java/com/epam/intro/SubTask31.java @@ -0,0 +1,65 @@ +package com.epam.intro; + +import java.util.*; +import java.util.stream.Collectors; +import java.util.stream.IntStream; + +public class SubTask31 { + public static void main(String[] args) { + int lengthArray = readVariable("length of the first array: "); + int[] a = new int[lengthArray]; + for (int i = 0; i < lengthArray; i++) { + a[i] = readVariable("a[" + i + "]"); + + } + List result = new ArrayList<>(); + for (int i = 0; i < lengthArray; i++) { + boolean dectected = false; + int middle = result.size() / 2; + int position = middle; + int leftBound = 0; + int rightBound = result.size(); + while (!dectected) { + if (rightBound - leftBound == 0) { + position = leftBound; + dectected = true; + } else if (rightBound - leftBound == 1) { + if (a[i] > result.get(middle)) { + position = rightBound; + dectected = true; + } else { + position = leftBound; + dectected = true; + } + } else { + int left = result.get(middle - 1); + int right = result.get(middle); + if (a[i] < left) { + rightBound = middle; + middle = leftBound + (rightBound - leftBound) / 2; + } else if (a[i] == left || a[i] <= right) { + position = middle; + dectected = true; + } else { + leftBound = middle; + middle = leftBound + (rightBound - leftBound) / 2; + } + + } + } + result.add(position, a[i]); + } + for (int j : a) { + System.out.print(j + " "); + } + System.out.println(); + System.out.println(result.stream().map(String::valueOf).collect(Collectors.joining(" "))); + + } + + public static int readVariable(String variableName) { + System.out.println("Please input " + variableName); + Scanner scanner = new Scanner(System.in); + return scanner.nextInt(); + } +} diff --git a/src/main/java/com/epam/intro/SubTask32.java b/src/main/java/com/epam/intro/SubTask32.java new file mode 100644 index 0000000..6830384 --- /dev/null +++ b/src/main/java/com/epam/intro/SubTask32.java @@ -0,0 +1,49 @@ +package com.epam.intro; + +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; +import java.util.Scanner; +import java.util.stream.Collectors; + +public class SubTask32 { + public static void main(String[] args) { + int lengthArray = readVariable("length of the first array: "); + int[] a = new int[lengthArray]; + for (int i = 0; i < lengthArray; i++) { + a[i] = readVariable("a[" + i + "]"); + + } + boolean detected = false; + int position = 0; + printArray(a); + while (!detected){ + position = Math.max(position, 0); + if(position == lengthArray-1){ + detected = true; + } else { + if(a[position]<=a[position+1]){ + position++; + }else { + int tmp = a[position]; + a[position] = a[position+1]; + a[position+1] =tmp; + position--; + } + } + } + + printArray(a); + } + + private static void printArray(int[] a){ + System.out.println(Arrays.stream(a).boxed().map(it -> Integer.toString(it)).collect(Collectors.joining(" "))); + System.out.println("---------------------"); + } + + public static int readVariable(String variableName) { + System.out.println("Please input " + variableName); + Scanner scanner = new Scanner(System.in); + return scanner.nextInt(); + } +} diff --git a/src/main/java/com/epam/intro/SubTask33.java b/src/main/java/com/epam/intro/SubTask33.java new file mode 100644 index 0000000..63f0b7d --- /dev/null +++ b/src/main/java/com/epam/intro/SubTask33.java @@ -0,0 +1,176 @@ +package com.epam.intro; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Scanner; +import java.util.*; + +public class SubTask33 { + static class Duplicate { + Integer value; + Integer beginPosition; + Integer endPosition; + Integer valueBefore; + Integer valueAfter; + Boolean isOk; + + public Duplicate(Integer value, Integer beginPosition, Integer endPosition, Integer valueBefore, Integer valueAfter) { + this.value = value; + this.beginPosition = beginPosition; + this.endPosition = endPosition; + this.valueBefore = valueBefore; + this.valueAfter = valueAfter; + isOk = false; + } + + public String toString() { + return value + " [" + beginPosition + "-" + endPosition + "] " + ">" + valueBefore + " - " + valueAfter + "<"; + + } + + } + + public static void main(String[] args) { +// int n = readVariable("Length of the first array: "); +// int[] a = new int[n]; +// for (int i = 0; i < n; i++) { +// a[i] = readVariable("a[" + i + "]"); +// } +// +// int m = readVariable("Length of the second array: "); +// int[] b = new int[m]; +// for (int i = 0; i < m; i++) { +// b[i] = readVariable("a[" + i + "]"); +// } + int[] a = new int[]{0, 1, 5, 15, 15, 15, 25}; + int[] b = new int[]{3, 4, 4, 8, 10, 11, 11, 17, 28}; + List reducedB = new ArrayList<>(); + int previousValue = b[0]; + reducedB.add(previousValue); + for (int i = 1; i < b.length; i++) { + if (b[i] != previousValue) { + reducedB.add(b[i]); + previousValue = b[i]; + } + } + + + previousValue = a[0]; + + Map duplicates = new HashMap<>(); + for (int i = 1; i < a.length; i++) { + if (a[i] == previousValue) { + duplicates.putIfAbsent(a[i], new Duplicate(a[i], i - 1, i, i - 2 < 0 ? 0 : a[i - 2], i + 1 == a.length ? a[i] + 1 : a[i + 1])); + duplicates.get(a[i]).endPosition = i; + duplicates.get(a[i]).valueAfter = i + 1 == a.length ? a[i] + 1 : a[i + 1]; + } else { + previousValue = a[i]; + } + } + + + boolean statusFailed = false; + boolean allIsOk = false; + while (!statusFailed && !allIsOk) { + Map recalculatedDuplicates = new HashMap<>(); + + int countOfRecalculation = 0; + do { + countOfRecalculation = 0; + Duplicate previousDuplicate = duplicates.values().iterator().next(); + boolean added = false; + for (Map.Entry entry : duplicates.entrySet()) { + if (entry.getValue().equals(previousDuplicate)) { + + } else if ((entry.getValue().beginPosition <= previousDuplicate.endPosition && entry.getValue().beginPosition >= previousDuplicate.beginPosition) + || (entry.getValue().endPosition <= previousDuplicate.endPosition && entry.getValue().endPosition >= previousDuplicate.beginPosition)) { + Duplicate duplicate = new Duplicate(previousDuplicate.value, previousDuplicate.beginPosition, entry.getValue().beginPosition, previousDuplicate.valueBefore, entry.getValue().valueAfter); + recalculatedDuplicates.put(duplicate.value, duplicate); + previousDuplicate = duplicate; + countOfRecalculation++; + added = true; + } else { + recalculatedDuplicates.put(previousDuplicate.value, previousDuplicate); + added = true; + } + if (!added) { + recalculatedDuplicates.put(previousDuplicate.value, previousDuplicate); + } + } + duplicates = recalculatedDuplicates; + recalculatedDuplicates = new HashMap<>(); + } while (countOfRecalculation > 0); + statusFailed = false; + for (Map.Entry entry : duplicates.entrySet()) { + if (!statusFailed) { + while (!entry.getValue().isOk && !statusFailed) { + int sum = 1; + for (int i = 0; i < reducedB.size(); i++) { + + if (entry.getValue().valueBefore < reducedB.get(i) && entry.getValue().valueAfter > reducedB.get(i)) { + sum++; + } + } + if (sum >= entry.getValue().endPosition - entry.getValue().beginPosition + 1) { + entry.getValue().isOk = true; + } else { + if (entry.getValue().endPosition + 1 == a.length && entry.getValue().beginPosition - 1 < 0) { + statusFailed = true; + break; + } else { + entry.getValue().beginPosition = entry.getValue().beginPosition - 1 < 0 ? 0 : entry.getValue().beginPosition - 1; + entry.getValue().endPosition = entry.getValue().endPosition + 1 == a.length ? entry.getValue().endPosition : entry.getValue().endPosition + 1; + entry.getValue().valueBefore = entry.getValue().beginPosition > 0 ? a[entry.getValue().beginPosition - 1] : 0; + entry.getValue().valueAfter = entry.getValue().endPosition + 1 == a.length ? a[a.length - 1] + 1 : a[entry.getValue().endPosition + 1]; + } + } + } + } else { + break; + } + } + allIsOk = true; + for (Map.Entry entry : duplicates.entrySet()) { + if (!entry.getValue().isOk) { + allIsOk = false; + break; + } + } + } + + + for ( + int i = 0; + i < a.length; i++) { + System.out.print(a[i] + " "); + } + System.out.println(); + for ( + int i = 0; + i < b.length; i++) { + System.out.print(b[i] + " "); + } + System.out.println(); + for ( + int i = 0; i < reducedB.size(); i++) { + System.out.print(reducedB.get(i) + " "); + } + + System.out.println(); + + for ( + Map.Entry entries : duplicates.entrySet()) { + System.out.println(entries.getValue() + " "); + + } + + } + + + public static int readVariable(String variableName) { + System.out.println("Please input " + variableName); + Scanner scanner = new Scanner(System.in); + return scanner.nextInt(); + } +} diff --git a/src/main/java/com/epam/intro/SubTask34.java b/src/main/java/com/epam/intro/SubTask34.java new file mode 100644 index 0000000..e1b68bb --- /dev/null +++ b/src/main/java/com/epam/intro/SubTask34.java @@ -0,0 +1,51 @@ +package com.epam.intro; + +import java.util.ArrayList; +import java.util.Comparator; +import java.util.List; +import java.util.Scanner; + +public class SubTask34 { + static class CustomNumber { + long numerator; + long denominator; + Long realNumerator; + + public CustomNumber(long numerator, long denominator) { + this.numerator = numerator; + this.denominator = denominator; + } + } + + public static void main(String[] args) { + long n = readVariable("n"); + List customNumberList = new ArrayList<>(); + for (int i = 0; i < n; i++) { + long numerator = readVariable("numerator"); + long denominator = readVariable("denominator"); + customNumberList.add(new CustomNumber(numerator, denominator)); + } + long denominatorMax = 1; + for (int i = 0; i < n; i++) { + denominatorMax = denominatorMax * customNumberList.get(i).denominator; + } + for (int i = 0; i < n; i++) { + customNumberList.get(i).realNumerator = customNumberList.get(i).numerator * + (denominatorMax / customNumberList.get(i).denominator); + } + List toSort = new ArrayList<>(customNumberList); + toSort.sort((Comparator.comparing(o -> o.realNumerator))); + for (CustomNumber it : toSort) { + System.out.print(it.numerator + "/" + it.denominator + " "); + } + + + } + + public static int readVariable(String variableName) { + System.out.println("Please input " + variableName); + Scanner scanner = new Scanner(System.in); + return scanner.nextInt(); + } + +} diff --git a/src/main/java/com/epam/intro/SubTask35.java b/src/main/java/com/epam/intro/SubTask35.java new file mode 100644 index 0000000..ad57fda --- /dev/null +++ b/src/main/java/com/epam/intro/SubTask35.java @@ -0,0 +1,36 @@ +package com.epam.intro; + +import java.util.Scanner; + +public class SubTask35 { + public static void main(String[] args) { + + int a = readVariable("First number: "); + int b = readVariable("Second number: "); + int greatestCommonDivisor = getGreatestCommonDivisor(a, b); + int leastCommonMultiple = getLeastCommonMultiple(a, b, greatestCommonDivisor); + System.out.println("Greatest Common Divisor: " + greatestCommonDivisor); + System.out.println("Least Common Multiple: " + leastCommonMultiple); + + } + + private static int getLeastCommonMultiple(int a, int b, int greatestCommonDivisor) { + return a * b / greatestCommonDivisor; + } + + private static int getGreatestCommonDivisor(int a, int b) { + int greatestCommonDivisor = 1; + for (int i = 2; i <= (a > b ? b : a); i++) { + if (a % i == 0 && b % i == 0) { + greatestCommonDivisor = i; + } + } + return greatestCommonDivisor; + } + + public static int readVariable(String variableName) { + System.out.println("Please input " + variableName); + Scanner scanner = new Scanner(System.in); + return scanner.nextInt(); + } +} diff --git a/src/main/java/com/epam/intro/SubTask36.java b/src/main/java/com/epam/intro/SubTask36.java new file mode 100644 index 0000000..7b3a20a --- /dev/null +++ b/src/main/java/com/epam/intro/SubTask36.java @@ -0,0 +1,49 @@ +package com.epam.intro; + +import java.util.Scanner; + +public class SubTask36 { + public static void main(String[] args) { + int[] a = new int[4]; + for (int i = 0; i < 4; i++) { + a[i] = readVariable("Number " + i + ":"); + } + int greatestCommonDivisor = getGreatestCommonDivisor(a); + System.out.println("Greatest Common Divisor: " + greatestCommonDivisor); + + } + + private static int getGreatestCommonDivisor(int[] a) { + int greatestCommonDivisor = 1; + for (int i = 2; i <= getMax(a); i++) { + if (isDivisor(a, i)) { + greatestCommonDivisor = i; + } + } + return greatestCommonDivisor; + } + + private static boolean isDivisor(int[] a, int i) { + boolean isDivisor = true; + for (int j = 0; j < 4 && isDivisor; j++) { + isDivisor = a[j] % i == 0; + } + return isDivisor; + } + + private static int getMax(int[] a) { + int max = a[0]; + for (int i = 0; i < 4; i++) { + if (a[i] > max) { + max = a[i]; + } + } + return max; + } + + public static int readVariable(String variableName) { + System.out.println("Please input " + variableName); + Scanner scanner = new Scanner(System.in); + return scanner.nextInt(); + } +} diff --git a/src/main/java/com/epam/intro/SubTask37.java b/src/main/java/com/epam/intro/SubTask37.java new file mode 100644 index 0000000..9c9e002 --- /dev/null +++ b/src/main/java/com/epam/intro/SubTask37.java @@ -0,0 +1,26 @@ +package com.epam.intro; + +import java.util.Scanner; + +public class SubTask37 { + public static void main(String[] args) { + double a = readVariable("Side: "); + double triangleSquare = getTriangleSquare(a); + double hexagonSquare = getHexagonSquare(triangleSquare); + System.out.println(hexagonSquare); + } + + private static double getHexagonSquare(double triangleSquare) { + return 3 * triangleSquare; + } + + private static double getTriangleSquare(double a) { + return a * a *Math.sqrt(3)/2; + } + + public static double readVariable(String variableName) { + System.out.println("Please input " + variableName); + Scanner scanner = new Scanner(System.in); + return scanner.nextDouble(); + } +} diff --git a/src/main/java/com/epam/intro/SubTask38.java b/src/main/java/com/epam/intro/SubTask38.java new file mode 100644 index 0000000..215d87f --- /dev/null +++ b/src/main/java/com/epam/intro/SubTask38.java @@ -0,0 +1,48 @@ +package com.epam.intro; + +import java.util.Scanner; + +public class SubTask38 { + static class Point { + double x; + double y; + } + + public static void main(String[] args) { + int countOfElements = readVariable("Count of points: "); + Point[] points = new Point[countOfElements]; + for (int i = 0; i < countOfElements; i++) { + points[i] = new Point(); + points[i].x = readDoubleVariable("x: "); + points[i].y = readDoubleVariable("y: "); + } + double maxDistance = 0.0; + for (int i = 0; i < points.length - 1; i++) { + Point checkPoint = points[i]; + for (int j = i + 1; j < points.length; j++) { + maxDistance = Math.max(maxDistance, getDistance(checkPoint, points[j])); + } + } + System.out.println("Max distance: " + maxDistance); + } + + private static double getDistance(Point checkPoint, Point currentPoint) { + return Math.sqrt(sqr(checkPoint.x - currentPoint.x) + sqr(checkPoint.y - currentPoint.y)); + } + + private static double sqr(Double delta) { + return Math.pow(delta, 2); + } + + public static int readVariable(String variableName) { + System.out.println("Please input " + variableName); + Scanner scanner = new Scanner(System.in); + return scanner.nextInt(); + } + + public static double readDoubleVariable(String variableName) { + System.out.println("Please input " + variableName); + Scanner scanner = new Scanner(System.in); + return scanner.nextDouble(); + } +} diff --git a/src/main/java/com/epam/intro/SubTask39.java b/src/main/java/com/epam/intro/SubTask39.java new file mode 100644 index 0000000..834c419 --- /dev/null +++ b/src/main/java/com/epam/intro/SubTask39.java @@ -0,0 +1,32 @@ +package com.epam.intro; + +import java.util.Scanner; + +public class SubTask39 { + public static void main(String[] args) { + int lengthArray = readVariable("length of the array: "); + int[] a = new int[lengthArray]; + for (int i = 0; i < lengthArray; i++) { + a[i] = readVariable("a[" + i + "]"); + + } + int max1 = a[0]; + int max2 = Integer.MIN_VALUE; + for (int i = 0; i < lengthArray; i++) { + if (a[i] > max1) { + max2 = max1; + max1 = a[i]; + }else if (a[i] > max2 && a[i]!=max1) { + max2 = a[i]; + } + } + System.out.println("Maximum 2: " + max2); + + } + + public static int readVariable(String variableName) { + System.out.println("Please input " + variableName); + Scanner scanner = new Scanner(System.in); + return scanner.nextInt(); + } +} diff --git a/src/main/java/com/epam/intro/SubTask4.java b/src/main/java/com/epam/intro/SubTask4.java new file mode 100644 index 0000000..6b1abec --- /dev/null +++ b/src/main/java/com/epam/intro/SubTask4.java @@ -0,0 +1,77 @@ +package com.epam.intro; + +import java.util.Scanner; + +public class SubTask4 { + static class Limit { + int position = 0; + double value = 0; + + public Limit(int position, double value) { + this.position = position; + this.value = value; + } + + @Override + public String toString() { + return "Limit{" + + "position=" + position + + ", value=" + value + + '}'; + } + } + static class Limits { + Limit min; + Limit max; + + public Limits(Limit min, Limit max) { + this.min = min; + this.max = max; + } + + @Override + public String toString() { + return "Limits{" + + "min=" + min + + ", max=" + max + + '}'; + } + } + + public static void main(String[] args) { + int n = readVariable("number of elements"); + double[] a = new double[n]; + for (int i = 0; i < n; i++) { + a[i] = readDoubleVariable("a[" + i + "]"); + } + Limits limits = new Limits(new Limit(0, a[0]), new Limit(0, a[0])); + for (int i = 0; i < n; i++) { + if (a[i] > limits.max.value) { + limits.max.value = a[i]; + limits.max.position = i; + } + if (a[i] max) { + max = a[i]; + } + } + return max; + } + + public static int readVariable(String variableName) { + System.out.println("Please input " + variableName); + Scanner scanner = new Scanner(System.in); + return scanner.nextInt(); + } +} diff --git a/src/main/java/com/epam/intro/SubTask41.java b/src/main/java/com/epam/intro/SubTask41.java new file mode 100644 index 0000000..f2424d1 --- /dev/null +++ b/src/main/java/com/epam/intro/SubTask41.java @@ -0,0 +1,23 @@ +package com.epam.intro; + +public class SubTask41 { + public static void main(String[] args) { + System.out.println("Sum of factorials: " + sumOfFactorials()); + } + + public static long factorial(Long number) { + Long result = 1l; + for (int i = 1; i <= number; i++) { + result = result * i; + } + return result; + } + + public static long sumOfFactorials() { + Long sum = 0l; + for (int i = 1; i <= 9; i = i + 2) { + sum = sum + factorial((long) i); + } + return sum; + } +} diff --git a/src/main/java/com/epam/intro/SubTask42.java b/src/main/java/com/epam/intro/SubTask42.java new file mode 100644 index 0000000..8953afe --- /dev/null +++ b/src/main/java/com/epam/intro/SubTask42.java @@ -0,0 +1,29 @@ +package com.epam.intro; + +import java.util.Scanner; + +public class SubTask42 { + public static void main(String[] args) { + int lengthOfArray = readVariable("Length of array: "); + int k = readVariable("Left bound: "); + int m = readVariable("Right bound: "); + if (m + 2 >= lengthOfArray) { + throw new RuntimeException("Wrong right bound"); + } + int[] a = new int[lengthOfArray]; + for (int i = 0; i < lengthOfArray; i++) { + a[i] = readVariable("a" + "[" + i + "]"); + } + for (int i = k; i <= m; i++) { + calculate(a,i); + } + } + public static void calculate (int[] a, int position) { + System.out.println(a[position] + a[position+1] + a[position+2]); + } + public static int readVariable(String variableName) { + System.out.println("Please input " + variableName); + Scanner scanner = new Scanner(System.in); + return scanner.nextInt(); + } +} diff --git a/src/main/java/com/epam/intro/SubTask43.java b/src/main/java/com/epam/intro/SubTask43.java new file mode 100644 index 0000000..ef12649 --- /dev/null +++ b/src/main/java/com/epam/intro/SubTask43.java @@ -0,0 +1,36 @@ +package com.epam.intro; + +import java.util.Scanner; + +public class SubTask43 { + public static void main(String[] args) { + double x = readVariable("x: "); + double y = readVariable("y: "); + double z = readVariable("z: "); + double t = readVariable("t: "); + double hypotenuse = Math.sqrt(x * x + y * y); + double squareOfFirstPart = x*y/2; + double squareOfSecondPart = getSquareOfSecondPart(z,t,hypotenuse); + if (Double.isNaN(squareOfSecondPart)) { + throw new RuntimeException("Lengths of sides are incorrect"); + } + System.out.println("Square could be: " + (squareOfFirstPart - squareOfSecondPart > 0 + ? (squareOfFirstPart + squareOfSecondPart) + " or " + (squareOfFirstPart - squareOfSecondPart) + : squareOfFirstPart + squareOfSecondPart)); + } + + private static double getSquareOfSecondPart(double a, double b, double c) { + double semiPerimeter = getSemiPerimeter(a,b,c); + return Math.sqrt(semiPerimeter * (semiPerimeter - a) * (semiPerimeter - b) * (semiPerimeter - c)); + } + + private static double getSemiPerimeter(double a, double b, double c) { + return (a + b + c)/2; + } + + public static double readVariable(String variableName) { + System.out.println("Please input " + variableName); + Scanner scanner = new Scanner(System.in); + return scanner.nextDouble(); + } +} diff --git a/src/main/java/com/epam/intro/SubTask44.java b/src/main/java/com/epam/intro/SubTask44.java new file mode 100644 index 0000000..d2456b9 --- /dev/null +++ b/src/main/java/com/epam/intro/SubTask44.java @@ -0,0 +1,26 @@ +package com.epam.intro; + +import java.util.Scanner; + +public class SubTask44 { + public static void main(String[] args) { + int n = readVariable("Number: "); + String string = Integer.toString(n); + int [] a = new int[string.length()]; + calculateArray(string, a); + } + + private static void calculateArray(String string, int[] a) { + for (int i = 0; i < string.length(); i++) { + a[i] = Integer.parseInt(string.substring(i,i+1)); + System.out.print(a[i] + " "); + } + } + + public static int readVariable(String variableName) { + System.out.println("Please input " + variableName); + Scanner scanner = new Scanner(System.in); + return scanner.nextInt(); + } +} + diff --git a/src/main/java/com/epam/intro/SubTask45.java b/src/main/java/com/epam/intro/SubTask45.java new file mode 100644 index 0000000..799d8f0 --- /dev/null +++ b/src/main/java/com/epam/intro/SubTask45.java @@ -0,0 +1,31 @@ +package com.epam.intro; + +import java.util.Scanner; + +public class SubTask45 { + public static void main(String[] args) { + int a = readVariable("Number: "); + int b = readVariable("Number: "); + String aString = Integer.toString(a); + String bString = Integer.toString(b); + calculateLength(a, b, aString, bString); + } + + private static void calculateLength(int a, int b, String aString, String bString) { + if (aString.length() > bString.length()) { + System.out.println("There are more digits in number " + a); + } + if (aString.length() == bString.length()) { + System.out.println("There are equal count of digits in two numbers"); + } + if (aString.length() < bString.length()) { + System.out.println("There are more digits in number " + b); + } + } + + public static int readVariable(String variableName) { + System.out.println("Please input " + variableName); + Scanner scanner = new Scanner(System.in); + return scanner.nextInt(); + } +} diff --git a/src/main/java/com/epam/intro/SubTask46.java b/src/main/java/com/epam/intro/SubTask46.java new file mode 100644 index 0000000..699ad03 --- /dev/null +++ b/src/main/java/com/epam/intro/SubTask46.java @@ -0,0 +1,47 @@ +package com.epam.intro; + +import java.util.ArrayList; +import java.util.List; +import java.util.Scanner; + +public class SubTask46 { + public static void main(String[] args) { + int k = readVariable("Number: "); + int n = readVariable("Number: "); + List list = new ArrayList(); + for (int i = 0; i < n; i++) { + int sum = getSumOfNumbers(i); + if (sum == k) { + list.add(i); + } + } + for (int i = 0; i < list.size(); i++) { + System.out.print(list.get(i) + " "); + } + + } + + private static int getSumOfNumbers(int i) { + String iString = Integer.toString(i); + int[] a = getIntegerAsArray(iString); + int sum = 0; + for ( int j = 0; j < iString.length(); j++) { + sum = sum + a[j]; + } + return sum; + } + + private static int[] getIntegerAsArray(String iString) { + int[] a = new int[iString.length()]; + for (int j = 0; j < iString.length(); j++) { + a[j] = Integer.parseInt(iString.substring(j, j+1)); + } + return a; + } + + public static int readVariable(String variableName) { + System.out.println("Please input " + variableName); + Scanner scanner = new Scanner(System.in); + return scanner.nextInt(); + } +} diff --git a/src/main/java/com/epam/intro/SubTask47.java b/src/main/java/com/epam/intro/SubTask47.java new file mode 100644 index 0000000..ec7964e --- /dev/null +++ b/src/main/java/com/epam/intro/SubTask47.java @@ -0,0 +1,31 @@ +package com.epam.intro; + +import java.util.Scanner; + +public class SubTask47 { + public static void main(String[] args) { + int n = readVariable("Number: "); + for (int i = n; i < 2*n; i++) { + if (isSimple(i) && isSimple(i+2)) { + System.out.println(i + " " + (i+2)); + } + } + } + + private static boolean isSimple(int i) { + boolean result = true; + for (int j = 2; j < i; j++) { + if (i%j == 0) { + result = false; + break; + } + } + return result; + } + + public static int readVariable(String variableName) { + System.out.println("Please input " + variableName); + Scanner scanner = new Scanner(System.in); + return scanner.nextInt(); + } +} diff --git a/src/main/java/com/epam/intro/SubTask48.java b/src/main/java/com/epam/intro/SubTask48.java new file mode 100644 index 0000000..c6e00c9 --- /dev/null +++ b/src/main/java/com/epam/intro/SubTask48.java @@ -0,0 +1,38 @@ +package com.epam.intro; + +import java.util.Scanner; + +public class SubTask48 { + public static void main(String[] args) { + int k = readVariable("Number: "); + for (int i = 1; i < k; i++) { + if (i == getArmstrongNumbers(i)) { + System.out.println(i); + } + } + } + + private static int getArmstrongNumbers(int i) { + String iString = Integer.toString(i); + int[] a = getIntegerAsArray(iString); + int sum = 0; + for (int j = 0; j < iString.length(); j++) { + sum = sum + (int) Math.pow(a[j],iString.length()); + } + return sum; + } + + private static int[] getIntegerAsArray(String iString) { + int[] a = new int[iString.length()]; + for (int j = 0; j < iString.length(); j++) { + a[j] = Integer.parseInt(iString.substring(j, j + 1)); + } + return a; + } + + public static int readVariable(String variableName) { + System.out.println("Please input " + variableName); + Scanner scanner = new Scanner(System.in); + return scanner.nextInt(); + } +} diff --git a/src/main/java/com/epam/intro/SubTask49.java b/src/main/java/com/epam/intro/SubTask49.java new file mode 100644 index 0000000..3b2ad57 --- /dev/null +++ b/src/main/java/com/epam/intro/SubTask49.java @@ -0,0 +1,50 @@ +package com.epam.intro; + +import java.util.Arrays; +import java.util.Scanner; + +public class SubTask49 { + public static void main(String[] args) { + int n = readVariable("Number: ") - 1; + int firstNumber = generateFirstNumber(n); + int lastNumber = generateFirstNumber(n+1); + for (int i = firstNumber; i < lastNumber; i++) { + String iString = String.valueOf(i); + int[] iArray = getIntegerAsArray(iString); + iArray = sort(iArray); + int result = arrayToInt(iArray); + if (result == i) { + System.out.println(result); + } + } + } + + private static int generateFirstNumber(int numberOfDigits) { + return Integer.parseInt(String.format("1%0" + numberOfDigits + "d", 0)); + } + private static int arrayToInt(int[] a) { + String result = ""; + for (int i = 0; i < a.length; i++) { + result = result + a[i]; + } + return Integer.parseInt(result); + } + private static int[] sort(int[] a) { + return Arrays.stream(a).distinct().sorted().toArray(); + } + + private static int[] getIntegerAsArray(String iString) { + int[] a = new int[iString.length()]; + for (int j = 0; j < iString.length(); j++) { + a[j] = Integer.parseInt(iString.substring(j, j + 1)); + } + return a; + } + + + public static int readVariable(String variableName) { + System.out.println("Please input " + variableName); + Scanner scanner = new Scanner(System.in); + return scanner.nextInt(); + } +} diff --git a/src/main/java/com/epam/intro/SubTask5.java b/src/main/java/com/epam/intro/SubTask5.java new file mode 100644 index 0000000..f9fc584 --- /dev/null +++ b/src/main/java/com/epam/intro/SubTask5.java @@ -0,0 +1,25 @@ +package com.epam.intro; + +import java.util.Scanner; + +public class SubTask5 { + public static void main(String[] args) { + int n = readVariable("number of elements"); + int[] a = new int[n]; + for (int i = 0; i < n; i++) { + a[i] = readVariable("a[" + i + "]"); + } + for (int i = 0; i < n; i++) { + if (a[i] > i) { + System.out.print(a[i] + " "); + } + } + + } + + public static int readVariable(String variableName) { + System.out.println("Please input " + variableName); + Scanner scanner = new Scanner(System.in); + return scanner.nextInt(); + } +} diff --git a/src/main/java/com/epam/intro/SubTask50.java b/src/main/java/com/epam/intro/SubTask50.java new file mode 100644 index 0000000..31bc64e --- /dev/null +++ b/src/main/java/com/epam/intro/SubTask50.java @@ -0,0 +1,49 @@ +package com.epam.intro; + +import java.util.Arrays; +import java.util.Scanner; + +public class SubTask50 { + public static void main(String[] args) { + int n = readVariable("Number: ") - 1; + int firstNumber = generateFirstNumber(n); + int lastNumber = generateFirstNumber(n + 1); + int sum = 0; + for (int i = firstNumber; i < lastNumber; i++) { + sum = isDoesNumberHoldsEvenDigits(i) ? sum : (sum + i); + } + System.out.println(sum); + long numberOfEven = getNumberOfEven(sum); + System.out.println(numberOfEven); + } + + private static long getNumberOfEven(int sum) { + String sumString = String.valueOf(sum); + return Arrays.stream(getIntegerAsArray(sumString)).filter(it -> it % 2 == 0).count(); + } + + private static boolean isDoesNumberHoldsEvenDigits(int i) { + String iString = String.valueOf(i); + int[] iArray = getIntegerAsArray(iString); + return Arrays.stream(iArray).boxed().anyMatch(it -> it % 2 == 0); + } + + private static int generateFirstNumber(int numberOfDigits) { + return Integer.parseInt(String.format("1%0" + numberOfDigits + "d", 0)); + } + + private static int[] getIntegerAsArray(String iString) { + int[] a = new int[iString.length()]; + for (int j = 0; j < iString.length(); j++) { + a[j] = Integer.parseInt(iString.substring(j, j + 1)); + } + return a; + } + + + public static int readVariable(String variableName) { + System.out.println("Please input " + variableName); + Scanner scanner = new Scanner(System.in); + return scanner.nextInt(); + } +} diff --git a/src/main/java/com/epam/intro/SubTask51.java b/src/main/java/com/epam/intro/SubTask51.java new file mode 100644 index 0000000..2443137 --- /dev/null +++ b/src/main/java/com/epam/intro/SubTask51.java @@ -0,0 +1,42 @@ +package com.epam.intro; + +import java.util.Arrays; +import java.util.Scanner; + +public class SubTask51 { + public static void main(String[] args) { + int n = readVariable("Number: "); + int count = 0; + while (n != 0) { + count++; + n = recalculate(n); + } + System.out.println(count); + + } + + private static int recalculate(int n) { + String nString = String.valueOf(n); + int[] nArray = getIntegerAsArray(nString); + int result = n; + for (int i = 0; i < nArray.length; i++) { + result -= nArray[i]; + } + return result; + } + + private static int[] getIntegerAsArray(String iString) { + int[] a = new int[iString.length()]; + for (int j = 0; j < iString.length(); j++) { + a[j] = Integer.parseInt(iString.substring(j, j + 1)); + } + return a; + } + + + public static int readVariable(String variableName) { + System.out.println("Please input " + variableName); + Scanner scanner = new Scanner(System.in); + return scanner.nextInt(); + } +} diff --git a/src/main/java/com/epam/intro/SubTask6.java b/src/main/java/com/epam/intro/SubTask6.java new file mode 100644 index 0000000..31fce72 --- /dev/null +++ b/src/main/java/com/epam/intro/SubTask6.java @@ -0,0 +1,42 @@ +package com.epam.intro; + +import java.util.Scanner; + +public class SubTask6 { + public static void main(String[] args) { + int n = readVariable("number of elements"); + double sum = 0; + double[] a = new double[n]; + for (int i = 0; i < n; i++) { + a[i] = readDoubleVariable("a[" + i + "]"); + } + for (int i = 2; i < n; i++) { + boolean isSimple = true; + for (int j = 2; j < i; j++) { + if (i % j != 0) { + isSimple = false; + break; + } + } + sum = sum + a[i]; + } + System.out.println("The result is: " + sum); + + } + + public static int readVariable(String variableName) { + System.out.println("Please input " + variableName); + Scanner scanner = new Scanner(System.in); + int result = scanner.nextInt(); + if (result < 0) { + throw new RuntimeException("It must be more than 0"); + } + return result; + } + + public static double readDoubleVariable(String variableName) { + System.out.println("Please input " + variableName); + Scanner scanner = new Scanner(System.in); + return scanner.nextDouble(); + } +} diff --git a/src/main/java/com/epam/intro/SubTask7.java b/src/main/java/com/epam/intro/SubTask7.java new file mode 100644 index 0000000..1ead0dd --- /dev/null +++ b/src/main/java/com/epam/intro/SubTask7.java @@ -0,0 +1,38 @@ +package com.epam.intro; + +import java.util.Scanner; + +public class SubTask7 { + public static void main(String[] args) { + int n = readVariable("number of elements"); + double[] a = new double[2 * n]; + for (int i = 0; i < 2 * n; i++) { + a[i] = readDoubleVariable("a[" + i + "]"); + } + double max = a[0] + a[2 * n - 1]; + for (int i = 0; i < n; i++) { + double sum = a[i] + a[2 * n - i - 1]; + if (sum > max) { + max = sum; + } + } + System.out.println("The result is: " + max); + + } + + public static int readVariable(String variableName) { + System.out.println("Please input " + variableName); + Scanner scanner = new Scanner(System.in); + int result = scanner.nextInt(); + if (result < 0) { + throw new RuntimeException("It must be more than 0"); + } + return result; + } + + public static double readDoubleVariable(String variableName) { + System.out.println("Please input " + variableName); + Scanner scanner = new Scanner(System.in); + return scanner.nextDouble(); + } +} diff --git a/src/main/java/com/epam/intro/SubTask8.java b/src/main/java/com/epam/intro/SubTask8.java new file mode 100644 index 0000000..5583b99 --- /dev/null +++ b/src/main/java/com/epam/intro/SubTask8.java @@ -0,0 +1,27 @@ +package com.epam.intro; + +import java.util.Arrays; +import java.util.Scanner; +import java.util.stream.Collectors; + +public class SubTask8 { + public static void main(String[] args) { + int n = readVariable("number of elements"); + int[] a = new int[n]; + for (int i = 0; iit>min).boxed().map(it->it+" ").forEach(System.out::print); + + } + public static int readVariable(String variableName) { + System.out.println("Please input " + variableName); + Scanner scanner = new Scanner(System.in); + int result = scanner.nextInt(); + if (result <0 ){ + throw new RuntimeException("It must be more than 0"); + } + return result; + } +} diff --git a/src/main/java/com/epam/intro/SubTask9.java b/src/main/java/com/epam/intro/SubTask9.java new file mode 100644 index 0000000..788bd95 --- /dev/null +++ b/src/main/java/com/epam/intro/SubTask9.java @@ -0,0 +1,57 @@ +package com.epam.intro; + +import java.util.*; + +public class SubTask9 { + static class MinFromMostPopulars { + int count = 0; + int value; + + public MinFromMostPopulars(int count, int value) { + this.count = count; + this.value = value; + } + + @Override + public String toString() { + return "MinFromMostPopulars{" + + "count=" + count + + ", value=" + value + + '}'; + } + } + public static void main(String[] args) { + int n = readVariable("number of elements"); + int[] a = new int[n]; + for (int i = 0; i < n; i++) { + a[i] = readVariable("a[" + i + "]"); + } + Map counterMap = new HashMap<>(); + for (int i = 0; i < n; i++) { + counterMap.putIfAbsent(a[i], 0); + int count = counterMap.get(a[i]); + counterMap.put(a[i], count + 1); + } + Map.Entry firstElement = counterMap.entrySet().iterator().next(); + MinFromMostPopulars minFromMostPopulars = new MinFromMostPopulars(firstElement.getValue(), firstElement.getKey()); + for (Map.Entry entry: counterMap.entrySet() ){ + if (entry.getValue() > minFromMostPopulars.count) { + minFromMostPopulars.count = entry.getValue(); + minFromMostPopulars.value = (entry.getKey()); + }else if (entry.getValue() == minFromMostPopulars.count){ + if (entry.getKey()