From da307b0563ab9aa464f9c54cdf1de941a1a31af9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=9D=D0=B0=D1=83=D0=BC=D0=BE=D0=B2=D0=B0=20=D0=9D=D0=B0?= =?UTF-8?q?=D1=82=D0=B0=D0=BB=D1=8C=D1=8F?= Date: Fri, 13 Dec 2024 21:41:40 +0300 Subject: [PATCH] =?UTF-8?q?=D0=9B=D0=B0=D0=B1=D0=BE=D1=80=D0=B0=D1=82?= =?UTF-8?q?=D0=BE=D1=80=D0=BD=D1=8B=D0=B5=2021-32?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../practice/s23k0755/{task1 => }/First.java | 4 +- .../s23k0755/{task1 => }/Magazine.java | 4 +- .../s23k0755/{task1 => }/Printable.java | 2 +- .../s23k0755/{task1 => }/TestMagazine.java | 2 +- .../s23k0755/{task1 => }/Exception.java | 2 +- .../s23k0755/{task1 => }/Exception1.java | 2 +- students/23K0755/23K0755-p21/pom.xml | 13 ++ .../practice/s23k0755/task1/Converter.java | 23 ++++ .../practice/s23k0755/task2/GenericArray.java | 53 ++++++++ students/23K0755/23K0755-p22/pom.xml | 13 ++ .../practice/s23k0755/RpnCalculator.java | 46 +++++++ .../ru/mirea/practice/s23k0755/Stack.java | 66 +++++++++ .../java/ru/mirea/practice/s23k0755/Test.java | 18 +++ students/23K0755/23K0755-p23/pom.xml | 13 ++ .../practice/s23k0755/task1/ArrayQueue.java | 55 ++++++++ .../s23k0755/task1/ArrayQueueADt.java | 55 ++++++++ .../s23k0755/task1/ArrayQueueModule.java | 57 ++++++++ .../mirea/practice/s23k0755/task1/Test.java | 27 ++++ students/23K0755/23K0755-p24/pom.xml | 13 ++ .../s23k0755/task1/AbstractChairFactory.java | 9 ++ .../mirea/practice/s23k0755/task1/Chair.java | 5 + .../practice/s23k0755/task1/ChairFactory.java | 33 +++++ .../mirea/practice/s23k0755/task1/Client.java | 17 +++ .../s23k0755/task1/FunctinalChair.java | 8 ++ .../practice/s23k0755/task1/MagicChair.java | 8 ++ .../mirea/practice/s23k0755/task1/Main.java | 29 ++++ .../s23k0755/task1/VictorianChair.java | 13 ++ students/23K0755/23K0755-p25/pom.xml | 13 ++ .../practice/s23k0755/DateValidator.java | 22 +++ .../mirea/practice/s23k0755/EmailChecker.java | 29 ++++ .../practice/s23k0755/PriceExtractor.java | 17 +++ students/23K0755/23K0755-p26/pom.xml | 13 ++ .../practice/s23k0755/task1/Iterator.java | 28 ++++ .../mirea/practice/s23k0755/task1/Test.java | 19 +++ students/23K0755/23K0755-p27/pom.xml | 13 ++ .../practice/s23k0755/task1/HashTab.java | 65 +++++++++ .../mirea/practice/s23k0755/task1/Test.java | 33 +++++ students/23K0755/23K0755-p28/pom.xml | 13 ++ .../ru/mirea/practice/s23k0755/task1/pom.xml | 45 +++++++ .../s23k0755/task1/task1/HashInTree.java | 17 +++ .../practice/s23k0755/task1/task2/Test.java | 14 ++ .../practice/s23k0755/task1/task2/Tree.java | 51 +++++++ students/23K0755/23K0755-p29/pom.xml | 13 ++ .../s23k0755/task1/23K0155-p29/pom.xml | 13 ++ ...0\320\264\320\260\320\275\320\270\320\265" | 9 ++ .../practice/s23k0755/task1/NeptuneRoads.java | 41 ++++++ .../ru/mirea/practice/s23k0755/task1/pom.xml | 45 +++++++ students/23K0755/23K0755-p30/pom.xml | 13 ++ .../practice/s23k0755/task1/BinaryTree.java | 111 ++++++++++++++++ .../mirea/practice/s23k0755/task1/Main.java | 53 ++++++++ .../mirea/practice/s23k0755/task1/Node.java | 13 ++ .../ru/mirea/practice/s23k0755/task1/pom.xml | 45 +++++++ students/23K0755/23K0755-p31/pom.xml | 13 ++ .../mirea/practice/s23k0755/task1/Node.java | 11 ++ .../s23k0755/task1/ProcessorTree.java | 125 ++++++++++++++++++ .../s23k0755/task1/ProcessorTreeApp.java | 68 ++++++++++ .../ru/mirea/practice/s23k0755/task1/pom.xml | 45 +++++++ students/23K0755/23K0755-p32/pom.xml | 13 ++ .../task1/JohnsonTrotterPermutations.java | 61 +++++++++ .../mirea/practice/s23k0755/task1/Main.java | 7 + .../ru/mirea/practice/s23k0755/task1/pom.xml | 45 +++++++ students/23K0755/pom.xml | 14 +- 62 files changed, 1731 insertions(+), 9 deletions(-) rename students/23K0755/23K0755-p03/src/main/java/ru/mirea/practice/s23k0755/{task1 => }/First.java (98%) rename students/23K0755/23K0755-p07/src/main/java/ru/mirea/practice/s23k0755/{task1 => }/Magazine.java (91%) rename students/23K0755/23K0755-p07/src/main/java/ru/mirea/practice/s23k0755/{task1 => }/Printable.java (53%) rename students/23K0755/23K0755-p07/src/main/java/ru/mirea/practice/s23k0755/{task1 => }/TestMagazine.java (85%) rename students/23K0755/23K0755-p18/src/main/java/ru/mirea/practice/s23k0755/{task1 => }/Exception.java (94%) rename students/23K0755/23K0755-p18/src/main/java/ru/mirea/practice/s23k0755/{task1 => }/Exception1.java (95%) create mode 100644 students/23K0755/23K0755-p21/pom.xml create mode 100644 students/23K0755/23K0755-p21/src/main/java/ru/mirea/practice/s23k0755/task1/Converter.java create mode 100644 students/23K0755/23K0755-p21/src/main/java/ru/mirea/practice/s23k0755/task2/GenericArray.java create mode 100644 students/23K0755/23K0755-p22/pom.xml create mode 100644 students/23K0755/23K0755-p22/src/main/java/ru/mirea/practice/s23k0755/RpnCalculator.java create mode 100644 students/23K0755/23K0755-p22/src/main/java/ru/mirea/practice/s23k0755/Stack.java create mode 100644 students/23K0755/23K0755-p22/src/main/java/ru/mirea/practice/s23k0755/Test.java create mode 100644 students/23K0755/23K0755-p23/pom.xml create mode 100644 students/23K0755/23K0755-p23/src/main/java/ru/mirea/practice/s23k0755/task1/ArrayQueue.java create mode 100644 students/23K0755/23K0755-p23/src/main/java/ru/mirea/practice/s23k0755/task1/ArrayQueueADt.java create mode 100644 students/23K0755/23K0755-p23/src/main/java/ru/mirea/practice/s23k0755/task1/ArrayQueueModule.java create mode 100644 students/23K0755/23K0755-p23/src/main/java/ru/mirea/practice/s23k0755/task1/Test.java create mode 100644 students/23K0755/23K0755-p24/pom.xml create mode 100644 students/23K0755/23K0755-p24/src/main/java/ru/mirea/practice/s23k0755/task1/AbstractChairFactory.java create mode 100644 students/23K0755/23K0755-p24/src/main/java/ru/mirea/practice/s23k0755/task1/Chair.java create mode 100644 students/23K0755/23K0755-p24/src/main/java/ru/mirea/practice/s23k0755/task1/ChairFactory.java create mode 100644 students/23K0755/23K0755-p24/src/main/java/ru/mirea/practice/s23k0755/task1/Client.java create mode 100644 students/23K0755/23K0755-p24/src/main/java/ru/mirea/practice/s23k0755/task1/FunctinalChair.java create mode 100644 students/23K0755/23K0755-p24/src/main/java/ru/mirea/practice/s23k0755/task1/MagicChair.java create mode 100644 students/23K0755/23K0755-p24/src/main/java/ru/mirea/practice/s23k0755/task1/Main.java create mode 100644 students/23K0755/23K0755-p24/src/main/java/ru/mirea/practice/s23k0755/task1/VictorianChair.java create mode 100644 students/23K0755/23K0755-p25/pom.xml create mode 100644 students/23K0755/23K0755-p25/src/main/java/ru/mirea/practice/s23k0755/DateValidator.java create mode 100644 students/23K0755/23K0755-p25/src/main/java/ru/mirea/practice/s23k0755/EmailChecker.java create mode 100644 students/23K0755/23K0755-p25/src/main/java/ru/mirea/practice/s23k0755/PriceExtractor.java create mode 100644 students/23K0755/23K0755-p26/pom.xml create mode 100644 students/23K0755/23K0755-p26/src/main/java/ru/mirea/practice/s23k0755/task1/Iterator.java create mode 100644 students/23K0755/23K0755-p26/src/main/java/ru/mirea/practice/s23k0755/task1/Test.java create mode 100644 students/23K0755/23K0755-p27/pom.xml create mode 100644 students/23K0755/23K0755-p27/src/main/java/ru/mirea/practice/s23k0755/task1/HashTab.java create mode 100644 students/23K0755/23K0755-p27/src/main/java/ru/mirea/practice/s23k0755/task1/Test.java create mode 100644 students/23K0755/23K0755-p28/pom.xml create mode 100644 students/23K0755/23K0755-p28/src/main/java/ru/mirea/practice/s23k0755/task1/pom.xml create mode 100644 students/23K0755/23K0755-p28/src/main/java/ru/mirea/practice/s23k0755/task1/task1/HashInTree.java create mode 100644 students/23K0755/23K0755-p28/src/main/java/ru/mirea/practice/s23k0755/task1/task2/Test.java create mode 100644 students/23K0755/23K0755-p28/src/main/java/ru/mirea/practice/s23k0755/task1/task2/Tree.java create mode 100644 students/23K0755/23K0755-p29/pom.xml create mode 100644 students/23K0755/23K0755-p29/src/main/java/ru/mirea/practice/s23k0755/task1/23K0155-p29/pom.xml create mode 100644 "students/23K0755/23K0755-p29/src/main/java/ru/mirea/practice/s23k0755/task1/23K0155-p29/src/main/java/ru/mirea/practice/s23k0155/\320\227\320\260\320\264\320\260\320\275\320\270\320\265" create mode 100644 students/23K0755/23K0755-p29/src/main/java/ru/mirea/practice/s23k0755/task1/NeptuneRoads.java create mode 100644 students/23K0755/23K0755-p29/src/main/java/ru/mirea/practice/s23k0755/task1/pom.xml create mode 100644 students/23K0755/23K0755-p30/pom.xml create mode 100644 students/23K0755/23K0755-p30/src/main/java/ru/mirea/practice/s23k0755/task1/BinaryTree.java create mode 100644 students/23K0755/23K0755-p30/src/main/java/ru/mirea/practice/s23k0755/task1/Main.java create mode 100644 students/23K0755/23K0755-p30/src/main/java/ru/mirea/practice/s23k0755/task1/Node.java create mode 100644 students/23K0755/23K0755-p30/src/main/java/ru/mirea/practice/s23k0755/task1/pom.xml create mode 100644 students/23K0755/23K0755-p31/pom.xml create mode 100644 students/23K0755/23K0755-p31/src/main/java/ru/mirea/practice/s23k0755/task1/Node.java create mode 100644 students/23K0755/23K0755-p31/src/main/java/ru/mirea/practice/s23k0755/task1/ProcessorTree.java create mode 100644 students/23K0755/23K0755-p31/src/main/java/ru/mirea/practice/s23k0755/task1/ProcessorTreeApp.java create mode 100644 students/23K0755/23K0755-p31/src/main/java/ru/mirea/practice/s23k0755/task1/pom.xml create mode 100644 students/23K0755/23K0755-p32/pom.xml create mode 100644 students/23K0755/23K0755-p32/src/main/java/ru/mirea/practice/s23k0755/task1/JohnsonTrotterPermutations.java create mode 100644 students/23K0755/23K0755-p32/src/main/java/ru/mirea/practice/s23k0755/task1/Main.java create mode 100644 students/23K0755/23K0755-p32/src/main/java/ru/mirea/practice/s23k0755/task1/pom.xml diff --git a/students/23K0755/23K0755-p03/src/main/java/ru/mirea/practice/s23k0755/task1/First.java b/students/23K0755/23K0755-p03/src/main/java/ru/mirea/practice/s23k0755/First.java similarity index 98% rename from students/23K0755/23K0755-p03/src/main/java/ru/mirea/practice/s23k0755/task1/First.java rename to students/23K0755/23K0755-p03/src/main/java/ru/mirea/practice/s23k0755/First.java index 6b15bf16a..9363c5fb6 100644 --- a/students/23K0755/23K0755-p03/src/main/java/ru/mirea/practice/s23k0755/task1/First.java +++ b/students/23K0755/23K0755-p03/src/main/java/ru/mirea/practice/s23k0755/First.java @@ -1,4 +1,4 @@ -package ru.mirea.practice.s23k0755.task1; +package ru.mirea.practice.s23k0755; import java.util.Arrays; import java.util.Random; @@ -49,4 +49,4 @@ public static void main(String[] args) { throw new RuntimeException(e); } } -} \ No newline at end of file +} diff --git a/students/23K0755/23K0755-p07/src/main/java/ru/mirea/practice/s23k0755/task1/Magazine.java b/students/23K0755/23K0755-p07/src/main/java/ru/mirea/practice/s23k0755/Magazine.java similarity index 91% rename from students/23K0755/23K0755-p07/src/main/java/ru/mirea/practice/s23k0755/task1/Magazine.java rename to students/23K0755/23K0755-p07/src/main/java/ru/mirea/practice/s23k0755/Magazine.java index 2e73f5e05..041e7c0bd 100644 --- a/students/23K0755/23K0755-p07/src/main/java/ru/mirea/practice/s23k0755/task1/Magazine.java +++ b/students/23K0755/23K0755-p07/src/main/java/ru/mirea/practice/s23k0755/Magazine.java @@ -1,4 +1,4 @@ -package ru.mirea.practice.s23k0755.task1; +package ru.mirea.practice.s23k0755; class Magazine implements Printable { private String title; @@ -18,4 +18,4 @@ public static void printMagazines(Printable[] printables) { } } } -} \ No newline at end of file +} diff --git a/students/23K0755/23K0755-p07/src/main/java/ru/mirea/practice/s23k0755/task1/Printable.java b/students/23K0755/23K0755-p07/src/main/java/ru/mirea/practice/s23k0755/Printable.java similarity index 53% rename from students/23K0755/23K0755-p07/src/main/java/ru/mirea/practice/s23k0755/task1/Printable.java rename to students/23K0755/23K0755-p07/src/main/java/ru/mirea/practice/s23k0755/Printable.java index 3d76a58f6..dab5a492a 100644 --- a/students/23K0755/23K0755-p07/src/main/java/ru/mirea/practice/s23k0755/task1/Printable.java +++ b/students/23K0755/23K0755-p07/src/main/java/ru/mirea/practice/s23k0755/Printable.java @@ -1,4 +1,4 @@ -package ru.mirea.practice.s23k0755.task1; +package ru.mirea.practice.s23k0755; interface Printable { String getTitle(); diff --git a/students/23K0755/23K0755-p07/src/main/java/ru/mirea/practice/s23k0755/task1/TestMagazine.java b/students/23K0755/23K0755-p07/src/main/java/ru/mirea/practice/s23k0755/TestMagazine.java similarity index 85% rename from students/23K0755/23K0755-p07/src/main/java/ru/mirea/practice/s23k0755/task1/TestMagazine.java rename to students/23K0755/23K0755-p07/src/main/java/ru/mirea/practice/s23k0755/TestMagazine.java index 32f6c6d2c..b361397b7 100644 --- a/students/23K0755/23K0755-p07/src/main/java/ru/mirea/practice/s23k0755/task1/TestMagazine.java +++ b/students/23K0755/23K0755-p07/src/main/java/ru/mirea/practice/s23k0755/TestMagazine.java @@ -1,4 +1,4 @@ -package ru.mirea.practice.s23k0755.task1; +package ru.mirea.practice.s23k0755; public abstract class TestMagazine { public static void main(String[] args) { diff --git a/students/23K0755/23K0755-p18/src/main/java/ru/mirea/practice/s23k0755/task1/Exception.java b/students/23K0755/23K0755-p18/src/main/java/ru/mirea/practice/s23k0755/Exception.java similarity index 94% rename from students/23K0755/23K0755-p18/src/main/java/ru/mirea/practice/s23k0755/task1/Exception.java rename to students/23K0755/23K0755-p18/src/main/java/ru/mirea/practice/s23k0755/Exception.java index a16c84c1f..0b0b5fa8e 100644 --- a/students/23K0755/23K0755-p18/src/main/java/ru/mirea/practice/s23k0755/task1/Exception.java +++ b/students/23K0755/23K0755-p18/src/main/java/ru/mirea/practice/s23k0755/Exception.java @@ -1,4 +1,4 @@ -package ru.mirea.practice.s23k0755.task1; +package ru.mirea.practice.s23k0755; public class Exception { public void exceptionDemo() { diff --git a/students/23K0755/23K0755-p18/src/main/java/ru/mirea/practice/s23k0755/task1/Exception1.java b/students/23K0755/23K0755-p18/src/main/java/ru/mirea/practice/s23k0755/Exception1.java similarity index 95% rename from students/23K0755/23K0755-p18/src/main/java/ru/mirea/practice/s23k0755/task1/Exception1.java rename to students/23K0755/23K0755-p18/src/main/java/ru/mirea/practice/s23k0755/Exception1.java index 383e6cc85..71afee7cf 100644 --- a/students/23K0755/23K0755-p18/src/main/java/ru/mirea/practice/s23k0755/task1/Exception1.java +++ b/students/23K0755/23K0755-p18/src/main/java/ru/mirea/practice/s23k0755/Exception1.java @@ -1,4 +1,4 @@ -package ru.mirea.practice.s23k0755.task1; +package ru.mirea.practice.s23k0755; public class Exception1 { public void exceptionDemo() { diff --git a/students/23K0755/23K0755-p21/pom.xml b/students/23K0755/23K0755-p21/pom.xml new file mode 100644 index 000000000..411082cb2 --- /dev/null +++ b/students/23K0755/23K0755-p21/pom.xml @@ -0,0 +1,13 @@ + + + 4.0.0 + + 23K0755 + ru.mirea.practice + 2024.1 + ../pom.xml + + 23K0755-p21 + Массивы + diff --git a/students/23K0755/23K0755-p21/src/main/java/ru/mirea/practice/s23k0755/task1/Converter.java b/students/23K0755/23K0755-p21/src/main/java/ru/mirea/practice/s23k0755/task1/Converter.java new file mode 100644 index 000000000..61aa336a2 --- /dev/null +++ b/students/23K0755/23K0755-p21/src/main/java/ru/mirea/practice/s23k0755/task1/Converter.java @@ -0,0 +1,23 @@ +package ru.mirea.practice.s23k0755.task1; + +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; + +public abstract class Converter { + + public static List arrayToList(T[] array) { + return new ArrayList<>(Arrays.asList(array)); + } + + public static void main(String[] args) { + String[] stringArray = {"Петя", "Вася", "Федя"}; + List stringList = arrayToList(stringArray); + System.out.println("String list: " + stringList); + + Integer[] intArray = {1, 2, 3, 4, 5}; + List intList = arrayToList(intArray); + System.out.println("Integer list: " + intList); + } +} + diff --git a/students/23K0755/23K0755-p21/src/main/java/ru/mirea/practice/s23k0755/task2/GenericArray.java b/students/23K0755/23K0755-p21/src/main/java/ru/mirea/practice/s23k0755/task2/GenericArray.java new file mode 100644 index 000000000..8cf1fe87e --- /dev/null +++ b/students/23K0755/23K0755-p21/src/main/java/ru/mirea/practice/s23k0755/task2/GenericArray.java @@ -0,0 +1,53 @@ +package ru.mirea.practice.s23k0755.task2; + +public class GenericArray { + private T[] elements; + + public GenericArray(T[] elements) { + this.elements = elements; + } + + public T get(int index) { + if (index >= 0 && index < elements.length) { + return elements[index]; + } else { + throw new IndexOutOfBoundsException("Index: " + index + ", Size: " + elements.length); + } + } + + public void set(int index, T element) { + if (index >= 0 && index < elements.length) { + elements[index] = element; + } else { + throw new IndexOutOfBoundsException("Index: " + index + ", Size: " + elements.length); + } + } + + public int size() { + return elements.length; + } + + @Override + public String toString() { + StringBuilder sb = new StringBuilder("["); + for (int i = 0; i < elements.length; i++) { + sb.append(elements[i]); + if (i < elements.length - 1) { + sb.append(", "); + } + } + sb.append("]"); + return sb.toString(); + } + + public static void main(String[] args) { + Integer[] intArray = {1, 2, 3, 4, 5}; + GenericArray intStorage = new GenericArray<>(intArray); + System.out.println("Integer array: " + intStorage); + + String[] stringArray = {"Петя", "Вася", "Федя"}; + GenericArray stringStorage = new GenericArray<>(stringArray); + System.out.println("String array: " + stringStorage); + } +} + diff --git a/students/23K0755/23K0755-p22/pom.xml b/students/23K0755/23K0755-p22/pom.xml new file mode 100644 index 000000000..28aaba9e0 --- /dev/null +++ b/students/23K0755/23K0755-p22/pom.xml @@ -0,0 +1,13 @@ + + + 4.0.0 + + 23K0755 + ru.mirea.practice + 2024.1 + ../pom.xml + + 23K0755-p22 + Массивы + diff --git a/students/23K0755/23K0755-p22/src/main/java/ru/mirea/practice/s23k0755/RpnCalculator.java b/students/23K0755/23K0755-p22/src/main/java/ru/mirea/practice/s23k0755/RpnCalculator.java new file mode 100644 index 000000000..81c9d798b --- /dev/null +++ b/students/23K0755/23K0755-p22/src/main/java/ru/mirea/practice/s23k0755/RpnCalculator.java @@ -0,0 +1,46 @@ +package ru.mirea.practice.s23k0755; + +public class RpnCalculator { + private Stack stack; + + public RpnCalculator(int size) { + stack = new Stack(size); + } + + public double evaluate(String expression) { + String[] strings = expression.split(" "); + for (String element : strings) { + try { + float f = Float.parseFloat(element); + stack.push(f); + } catch (NumberFormatException e) { + performOperation(element); + } + } + return stack.pop(); + } + + private void performOperation(String operator) { + float secondOperand = stack.pop(); + float firstOperand = stack.pop(); + switch (operator) { + case "+": + stack.push(firstOperand + secondOperand); + break; + case "-": + stack.push(firstOperand - secondOperand); + break; + case "*": + stack.push(firstOperand * secondOperand); + break; + case "/": + if (secondOperand == 0) { + throw new ArithmeticException("Ошибка: Деление на ноль"); + } + stack.push(firstOperand / secondOperand); + break; + default: + throw new IllegalArgumentException("Недопустимый оператор: " + operator); + } + } +} diff --git a/students/23K0755/23K0755-p22/src/main/java/ru/mirea/practice/s23k0755/Stack.java b/students/23K0755/23K0755-p22/src/main/java/ru/mirea/practice/s23k0755/Stack.java new file mode 100644 index 000000000..7af75671c --- /dev/null +++ b/students/23K0755/23K0755-p22/src/main/java/ru/mirea/practice/s23k0755/Stack.java @@ -0,0 +1,66 @@ +package ru.mirea.practice.s23k0755; + +class Stack { + // store elements of stack + private float[] arr; + // represent top of stack + private int top; + // total capacity of the stack + private int capacity; + + // Creating a stack + Stack(int size) { + // initialize the array + // initialize the stack variables + arr = new float[size]; + capacity = size; + top = -1; + } + + // push elements to the top of stack + public void push(float x) { + if (isFull()) { + System.out.println("Stack OverFlow"); + // terminates the program + System.exit(1); + } + // insert element on top of stack + System.out.println("Inserting " + x); + arr[++top] = x; + } + + // pop elements from top of stack + public float pop() { + // if stack is empty + // no element to pop + if (isEmpty()) { + System.out.println("STACK EMPTY"); + // terminates the program + System.exit(1); + } + // pop element from top of stack + return arr[top--]; + } + + // return size of the stack + public int getSize() { + return top + 1; + } + + // check if the stack is empty + public Boolean isEmpty() { + return top == -1; + } + + // check if the stack is full + public Boolean isFull() { + return top == capacity - 1; + } + + // display elements of stack + public void printStack() { + for (int i = 0; i <= top; i++) { + System.out.print(arr[i] + ", "); + } + } +} diff --git a/students/23K0755/23K0755-p22/src/main/java/ru/mirea/practice/s23k0755/Test.java b/students/23K0755/23K0755-p22/src/main/java/ru/mirea/practice/s23k0755/Test.java new file mode 100644 index 000000000..f47b49474 --- /dev/null +++ b/students/23K0755/23K0755-p22/src/main/java/ru/mirea/practice/s23k0755/Test.java @@ -0,0 +1,18 @@ +package ru.mirea.practice.s23k0755; + +public abstract class Test { + public static void main(String[] args) { + RpnCalculator calculator = new RpnCalculator(10); + System.out.println("16.1 3.9 + = " + calculator.evaluate("16.1 3.9 +")); + System.out.println("8 4 - = " + calculator.evaluate("8 4 -")); + System.out.println("28 0.5 * = " + calculator.evaluate("28 0.5 *")); + System.out.println("7 2 / = " + calculator.evaluate("7 2 /")); + System.out.println("3 4 + 2 * = " + calculator.evaluate("3 4 + 2 *")); + + try { + System.out.println("38 0 / = " + calculator.evaluate("38 0 /")); + } catch (ArithmeticException e) { + System.out.println(e.getMessage()); + } + } +} diff --git a/students/23K0755/23K0755-p23/pom.xml b/students/23K0755/23K0755-p23/pom.xml new file mode 100644 index 000000000..0b6027367 --- /dev/null +++ b/students/23K0755/23K0755-p23/pom.xml @@ -0,0 +1,13 @@ + + + 4.0.0 + + 23K0755 + ru.mirea.practice + 2024.1 + ../pom.xml + + 23K0755-p23 + Массивы + diff --git a/students/23K0755/23K0755-p23/src/main/java/ru/mirea/practice/s23k0755/task1/ArrayQueue.java b/students/23K0755/23K0755-p23/src/main/java/ru/mirea/practice/s23k0755/task1/ArrayQueue.java new file mode 100644 index 000000000..cf4271fb4 --- /dev/null +++ b/students/23K0755/23K0755-p23/src/main/java/ru/mirea/practice/s23k0755/task1/ArrayQueue.java @@ -0,0 +1,55 @@ +package ru.mirea.practice.s23k0755.task1; + +public class ArrayQueue { + private double[] elements; + private int head; + private int tail; + private int size; + + public ArrayQueue(int capacity) { + this.elements = new double[capacity]; + this.head = 0; + this.tail = 0; + this.size = 0; + } + + public void enqueue(double value) { + if (size == elements.length) { + throw new IllegalStateException("Очередь переполнена"); + } + elements[tail] = value; + tail = (tail + 1) % elements.length; + size++; + } + + public double dequeue() { + if (isEmpty()) { + throw new IllegalStateException("Очередь пуста"); + } + double value = elements[head]; + head = (head + 1) % elements.length; + size--; + return value; + } + + public double element() { + if (isEmpty()) { + throw new IllegalStateException("Очередь пуста"); + } + return elements[head]; + } + + public int size() { + return size; + } + + public boolean isEmpty() { + return size == 0; + } + + public void clear() { + head = 0; + tail = 0; + size = 0; + } +} diff --git a/students/23K0755/23K0755-p23/src/main/java/ru/mirea/practice/s23k0755/task1/ArrayQueueADt.java b/students/23K0755/23K0755-p23/src/main/java/ru/mirea/practice/s23k0755/task1/ArrayQueueADt.java new file mode 100644 index 000000000..35b530c89 --- /dev/null +++ b/students/23K0755/23K0755-p23/src/main/java/ru/mirea/practice/s23k0755/task1/ArrayQueueADt.java @@ -0,0 +1,55 @@ +package ru.mirea.practice.s23k0755.task1; + +public class ArrayQueueADt { + private double[] elements; + private int head; + private int tail; + private int size; + + public ArrayQueueADt(int capacity) { + elements = new double[capacity]; + head = 0; + tail = 0; + size = 0; + } + + public void enqueue(double value) { + if (size == elements.length) { + throw new IllegalStateException("Очередь переполнена"); + } + elements[tail] = value; + tail = (tail + 1) % elements.length; + size++; + } + + public double dequeue() { + if (isEmpty()) { + throw new IllegalStateException("Очередь пуста"); + } + double value = elements[head]; + head = (head + 1) % elements.length; + size--; + return value; + } + + public double element() { + if (isEmpty()) { + throw new IllegalStateException("Очередь пуста"); + } + return elements[head]; + } + + public int size() { + return size; + } + + public boolean isEmpty() { + return size == 0; + } + + public void clear() { + head = 0; + tail = 0; + size = 0; + } +} diff --git a/students/23K0755/23K0755-p23/src/main/java/ru/mirea/practice/s23k0755/task1/ArrayQueueModule.java b/students/23K0755/23K0755-p23/src/main/java/ru/mirea/practice/s23k0755/task1/ArrayQueueModule.java new file mode 100644 index 000000000..07190a590 --- /dev/null +++ b/students/23K0755/23K0755-p23/src/main/java/ru/mirea/practice/s23k0755/task1/ArrayQueueModule.java @@ -0,0 +1,57 @@ +package ru.mirea.practice.s23k0755.task1; + + +public abstract class ArrayQueueModule { + private static final int DEFAULT_CAPACITY = 10; + private static double[] elements; + private static int head; + private static int tail; + private static int size; + + static { + elements = new double[DEFAULT_CAPACITY]; + head = 0; + tail = 0; + size = 0; + } + + public static void enqueue(double value) { + if (size == elements.length) { + throw new IllegalStateException("Очередь переполнена"); + } + elements[tail] = value; + tail = (tail + 1) % elements.length; + size++; + } + + public static double dequeue() { + if (isEmpty()) { + throw new IllegalStateException("Очередь пуста"); + } + double value = elements[head]; + head = (head + 1) % elements.length; + size--; + return value; + } + + public static double element() { + if (isEmpty()) { + throw new IllegalStateException("Очередь пуста"); + } + return elements[head]; + } + + public static int size() { + return size; + } + + public static boolean isEmpty() { + return size == 0; + } + + public static void clear() { + head = 0; + tail = 0; + size = 0; + } +} diff --git a/students/23K0755/23K0755-p23/src/main/java/ru/mirea/practice/s23k0755/task1/Test.java b/students/23K0755/23K0755-p23/src/main/java/ru/mirea/practice/s23k0755/task1/Test.java new file mode 100644 index 000000000..7b596dc7b --- /dev/null +++ b/students/23K0755/23K0755-p23/src/main/java/ru/mirea/practice/s23k0755/task1/Test.java @@ -0,0 +1,27 @@ +package ru.mirea.practice.s23k0755.task1; + +public abstract class Test { + public static void main(String[] args) { + ArrayQueue queue = new ArrayQueue(5); + + System.out.println("Очередь пустая: " + queue.isEmpty()); + + queue.enqueue(1); + queue.enqueue(2); + queue.enqueue(3); + System.out.println("Первый элемент: " + queue.element()); + System.out.println("Размер очереди: " + queue.size()); + + System.out.println("Удален элемент: " + queue.dequeue()); + System.out.println("Пользователь после удаления: " + queue.element()); + + queue.clear(); + System.out.println("Очередь пустая после очистки: " + queue.isEmpty()); + + try { + queue.dequeue(); + } catch (IllegalStateException e) { + System.out.println(e.getMessage()); + } + } +} diff --git a/students/23K0755/23K0755-p24/pom.xml b/students/23K0755/23K0755-p24/pom.xml new file mode 100644 index 000000000..9ae58c623 --- /dev/null +++ b/students/23K0755/23K0755-p24/pom.xml @@ -0,0 +1,13 @@ + + + 4.0.0 + + 23K0755 + ru.mirea.practice + 2024.1 + ../pom.xml + + 23K0755-p24 + Массивы + diff --git a/students/23K0755/23K0755-p24/src/main/java/ru/mirea/practice/s23k0755/task1/AbstractChairFactory.java b/students/23K0755/23K0755-p24/src/main/java/ru/mirea/practice/s23k0755/task1/AbstractChairFactory.java new file mode 100644 index 000000000..2542fc51d --- /dev/null +++ b/students/23K0755/23K0755-p24/src/main/java/ru/mirea/practice/s23k0755/task1/AbstractChairFactory.java @@ -0,0 +1,9 @@ +package ru.mirea.practice.s23k0755.task1; + +public interface AbstractChairFactory { + VictorianChair createVictorianChair(); + + MagicChair createMagicChair(); + + FunctinalChair createFunctinalChair(); +} diff --git a/students/23K0755/23K0755-p24/src/main/java/ru/mirea/practice/s23k0755/task1/Chair.java b/students/23K0755/23K0755-p24/src/main/java/ru/mirea/practice/s23k0755/task1/Chair.java new file mode 100644 index 000000000..4f26f1f16 --- /dev/null +++ b/students/23K0755/23K0755-p24/src/main/java/ru/mirea/practice/s23k0755/task1/Chair.java @@ -0,0 +1,5 @@ +package ru.mirea.practice.s23k0755.task1; + +public interface Chair { + void sit(); +} diff --git a/students/23K0755/23K0755-p24/src/main/java/ru/mirea/practice/s23k0755/task1/ChairFactory.java b/students/23K0755/23K0755-p24/src/main/java/ru/mirea/practice/s23k0755/task1/ChairFactory.java new file mode 100644 index 000000000..cb8b24697 --- /dev/null +++ b/students/23K0755/23K0755-p24/src/main/java/ru/mirea/practice/s23k0755/task1/ChairFactory.java @@ -0,0 +1,33 @@ +package ru.mirea.practice.s23k0755.task1; + +public class ChairFactory implements AbstractChairFactory { + + @Override + public FunctinalChair createFunctinalChair() { + System.out.println("Create FunctinalChair."); + return new FunctinalChair() { + @Override + public void sit() { //nothing to clean up + } + }; + } + + public MagicChair createMagicChair() { + System.out.println("Create MagicChair."); + return new MagicChair() { + @Override + public void sit() { //nothing to clean up + } + }; + } + + public VictorianChair createVictorianChair() { + System.out.println("Create VictorianChair."); + return new VictorianChair() { + @Override + public void sit() { //nothing to clean up + } + }; + } + +} diff --git a/students/23K0755/23K0755-p24/src/main/java/ru/mirea/practice/s23k0755/task1/Client.java b/students/23K0755/23K0755-p24/src/main/java/ru/mirea/practice/s23k0755/task1/Client.java new file mode 100644 index 000000000..36ae5d53f --- /dev/null +++ b/students/23K0755/23K0755-p24/src/main/java/ru/mirea/practice/s23k0755/task1/Client.java @@ -0,0 +1,17 @@ +package ru.mirea.practice.s23k0755.task1; + +public class Client { + private Chair chair; + + public void sit() { + System.out.println("Вы сидите на стуле"); + } + + public void setChair(Chair chair) { + this.chair = chair; + } + + public Chair getChair() { + return chair; + } +} diff --git a/students/23K0755/23K0755-p24/src/main/java/ru/mirea/practice/s23k0755/task1/FunctinalChair.java b/students/23K0755/23K0755-p24/src/main/java/ru/mirea/practice/s23k0755/task1/FunctinalChair.java new file mode 100644 index 000000000..979c2c417 --- /dev/null +++ b/students/23K0755/23K0755-p24/src/main/java/ru/mirea/practice/s23k0755/task1/FunctinalChair.java @@ -0,0 +1,8 @@ +package ru.mirea.practice.s23k0755.task1; + +abstract class FunctinalChair implements Chair { + + public int sum(int a, int b) { + return a + b; + } +} diff --git a/students/23K0755/23K0755-p24/src/main/java/ru/mirea/practice/s23k0755/task1/MagicChair.java b/students/23K0755/23K0755-p24/src/main/java/ru/mirea/practice/s23k0755/task1/MagicChair.java new file mode 100644 index 000000000..bed267c2d --- /dev/null +++ b/students/23K0755/23K0755-p24/src/main/java/ru/mirea/practice/s23k0755/task1/MagicChair.java @@ -0,0 +1,8 @@ +package ru.mirea.practice.s23k0755.task1; + +abstract class MagicChair implements Chair { + + public void doMagic() { + System.out.println("Doing magic"); + } +} diff --git a/students/23K0755/23K0755-p24/src/main/java/ru/mirea/practice/s23k0755/task1/Main.java b/students/23K0755/23K0755-p24/src/main/java/ru/mirea/practice/s23k0755/task1/Main.java new file mode 100644 index 000000000..f2a7b4f93 --- /dev/null +++ b/students/23K0755/23K0755-p24/src/main/java/ru/mirea/practice/s23k0755/task1/Main.java @@ -0,0 +1,29 @@ +package ru.mirea.practice.s23k0755.task1; + +import java.util.Scanner; + +abstract class Main { + public static void main(String[] args) { + ChairFactory testFactory = new ChairFactory(); + MagicChair firstChair = testFactory.createMagicChair(); + firstChair.doMagic(); + Client tester = new Client(); + + tester.setChair(firstChair); + tester.sit(); + + FunctinalChair secondChair = testFactory.createFunctinalChair(); + try (Scanner scanner = new Scanner(System.in)) { + System.out.println("Введите 2 числа"); + String[] string = scanner.nextLine().split(" "); + int a = Integer.parseInt(string[0]); + int b = Integer.parseInt(string[1]); + System.out.println("Сумма " + a + " и " + b + " равна " + secondChair.sum(a, b)); + } catch (Exception e) { + throw new RuntimeException(e); + } + VictorianChair thirdChair = testFactory.createVictorianChair(); + thirdChair.victorianChair(123); + System.out.println("Возраст стула:" + thirdChair.getAge()); + } +} diff --git a/students/23K0755/23K0755-p24/src/main/java/ru/mirea/practice/s23k0755/task1/VictorianChair.java b/students/23K0755/23K0755-p24/src/main/java/ru/mirea/practice/s23k0755/task1/VictorianChair.java new file mode 100644 index 000000000..fcc1d0e2f --- /dev/null +++ b/students/23K0755/23K0755-p24/src/main/java/ru/mirea/practice/s23k0755/task1/VictorianChair.java @@ -0,0 +1,13 @@ +package ru.mirea.practice.s23k0755.task1; + +abstract class VictorianChair implements Chair { + private int age; + + public void victorianChair(int age) { + this.age = age; + } + + public int getAge() { + return age; + } +} diff --git a/students/23K0755/23K0755-p25/pom.xml b/students/23K0755/23K0755-p25/pom.xml new file mode 100644 index 000000000..91f873c29 --- /dev/null +++ b/students/23K0755/23K0755-p25/pom.xml @@ -0,0 +1,13 @@ + + + 4.0.0 + + 23K0755 + ru.mirea.practice + 2024.1 + ../pom.xml + + 23K0755-p25 + Массивы + diff --git a/students/23K0755/23K0755-p25/src/main/java/ru/mirea/practice/s23k0755/DateValidator.java b/students/23K0755/23K0755-p25/src/main/java/ru/mirea/practice/s23k0755/DateValidator.java new file mode 100644 index 000000000..1f68a26fe --- /dev/null +++ b/students/23K0755/23K0755-p25/src/main/java/ru/mirea/practice/s23k0755/DateValidator.java @@ -0,0 +1,22 @@ +package ru.mirea.practice.s23k0755; + +import java.util.regex.Matcher; +import java.util.regex.Pattern; + +public abstract class DateValidator { + public static void main(String[] args) { + String[] dates = { + "29/02/2000", "30/04/2003", "01/01/2003", + "29/02/2001", "30-04-2003", "1/1/1899" + }; + + String dateRegex = "^(0[1-9]|[12][0-9]|3[01])/(0[1-9]|1[0-2])/(19|20)\\d{2}$"; + Pattern pattern = Pattern.compile(dateRegex); + + System.out.println("Проверка дат в формате dd/mm/yyyy:"); + for (String date : dates) { + Matcher matcher = pattern.matcher(date); + System.out.println(date + ": " + matcher.matches()); + } + } +} diff --git a/students/23K0755/23K0755-p25/src/main/java/ru/mirea/practice/s23k0755/EmailChecker.java b/students/23K0755/23K0755-p25/src/main/java/ru/mirea/practice/s23k0755/EmailChecker.java new file mode 100644 index 000000000..9e2a53ab7 --- /dev/null +++ b/students/23K0755/23K0755-p25/src/main/java/ru/mirea/practice/s23k0755/EmailChecker.java @@ -0,0 +1,29 @@ +package ru.mirea.practice.s23k0755; + +import java.util.regex.Pattern; + +public abstract class EmailChecker { + private static final String EMAIL_REGEX = + "^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\\.[a-zA-Z]{2,}$"; + + private static final Pattern EMAIL_PATTERN = Pattern.compile(EMAIL_REGEX); + + public static boolean isValidEmail(String email) { + if (email == null) { + return false; + } + return EMAIL_PATTERN.matcher(email).matches(); + } + + public static void main(String[] args) { + String[] testEmails = { + "test@mail.ru", + "name.test@gmail.com", + "invalid-email@" + }; + + for (String email : testEmails) { + System.out.printf("Email: %s подходит ли: %b%n", email, isValidEmail(email)); + } + } +} diff --git a/students/23K0755/23K0755-p25/src/main/java/ru/mirea/practice/s23k0755/PriceExtractor.java b/students/23K0755/23K0755-p25/src/main/java/ru/mirea/practice/s23k0755/PriceExtractor.java new file mode 100644 index 000000000..8f05b9bf3 --- /dev/null +++ b/students/23K0755/23K0755-p25/src/main/java/ru/mirea/practice/s23k0755/PriceExtractor.java @@ -0,0 +1,17 @@ +package ru.mirea.practice.s23k0755; + +import java.util.regex.Matcher; +import java.util.regex.Pattern; + +public abstract class PriceExtractor { + public static void main(String[] args) { + String text = "Цены: 25.98 USD, 44 ERR, 0.004 EU, 10.00 RUB, 99.95 EUR"; + Pattern pattern = Pattern.compile("\\b\\d{1,3}(\\.\\d{1,2})? (USD|RUB|EUR)\\b"); + Matcher matcher = pattern.matcher(text); + + System.out.println("Цены в USD, RUB, EUR:"); + while (matcher.find()) { + System.out.println(matcher.group()); + } + } +} diff --git a/students/23K0755/23K0755-p26/pom.xml b/students/23K0755/23K0755-p26/pom.xml new file mode 100644 index 000000000..cad874631 --- /dev/null +++ b/students/23K0755/23K0755-p26/pom.xml @@ -0,0 +1,13 @@ + + + 4.0.0 + + 23K0755 + ru.mirea.practice + 2024.1 + ../pom.xml + + 23K0755-p26 + Массивы + diff --git a/students/23K0755/23K0755-p26/src/main/java/ru/mirea/practice/s23k0755/task1/Iterator.java b/students/23K0755/23K0755-p26/src/main/java/ru/mirea/practice/s23k0755/task1/Iterator.java new file mode 100644 index 000000000..c5b878354 --- /dev/null +++ b/students/23K0755/23K0755-p26/src/main/java/ru/mirea/practice/s23k0755/task1/Iterator.java @@ -0,0 +1,28 @@ +package ru.mirea.practice.s23k0755.task1; + +import java.util.List; + +public class Iterator { + + private int curentInd; + + public Iterator() { + this.curentInd = 0; + } + + public int getCurentInd() { + return curentInd; + } + + public void next(List list) { + if (curentInd + 1 < list.size()) { + System.out.println(list.get(curentInd)); + } else { + System.out.println("Ошибка: выход за пределы списка"); + } + } + + public boolean hasNext(List list) { + return curentInd + 1 < list.size(); + } +} diff --git a/students/23K0755/23K0755-p26/src/main/java/ru/mirea/practice/s23k0755/task1/Test.java b/students/23K0755/23K0755-p26/src/main/java/ru/mirea/practice/s23k0755/task1/Test.java new file mode 100644 index 000000000..73c48a8bd --- /dev/null +++ b/students/23K0755/23K0755-p26/src/main/java/ru/mirea/practice/s23k0755/task1/Test.java @@ -0,0 +1,19 @@ +package ru.mirea.practice.s23k0755.task1; + +import java.util.ArrayList; + +abstract class Test { + public static void main(String[] args) { + ArrayList al = new ArrayList(); + + for (int i = 0; i < 10; i++) { + al.add(i); + } + Iterator iterator = new Iterator(); + iterator.next(al); + iterator.next(al); + iterator.next(al); + System.out.println(iterator.hasNext(al)); + + } +} diff --git a/students/23K0755/23K0755-p27/pom.xml b/students/23K0755/23K0755-p27/pom.xml new file mode 100644 index 000000000..139bce2a8 --- /dev/null +++ b/students/23K0755/23K0755-p27/pom.xml @@ -0,0 +1,13 @@ + + + 4.0.0 + + 23K0755 + ru.mirea.practice + 2024.1 + ../pom.xml + + 23K0755-p27 + Массивы + diff --git a/students/23K0755/23K0755-p27/src/main/java/ru/mirea/practice/s23k0755/task1/HashTab.java b/students/23K0755/23K0755-p27/src/main/java/ru/mirea/practice/s23k0755/task1/HashTab.java new file mode 100644 index 000000000..6722b6044 --- /dev/null +++ b/students/23K0755/23K0755-p27/src/main/java/ru/mirea/practice/s23k0755/task1/HashTab.java @@ -0,0 +1,65 @@ +package ru.mirea.practice.s23k0755.task1; + +import java.util.LinkedList; + +public class HashTab { + private static class KeyValue { + private String key; + private String value; + + KeyValue(String key, String value) { + this.key = key; + this.value = value; + } + } + + private LinkedList[] linkedLists; + private int size; + + public HashTab(int size) { + this.size = size; + linkedLists = new LinkedList[size]; + for (int i = 0; i < size; i++) { + linkedLists[i] = new LinkedList<>(); + } + } + + public int hash(String key) { + return key.hashCode() % size; + } + + public void add(String key, String value) { + int ind = hash(key); + for (KeyValue keyValue : linkedLists[ind]) { + if (keyValue.key.equals(key)) { + keyValue.value = value; + } + } + linkedLists[ind].add(new KeyValue(key, value)); + } + + public String lookUp(String key) { + int ind = hash(key); + for (KeyValue keyValue : linkedLists[ind]) { + if (keyValue.key.equals(key)) { + return keyValue.value; + } + } + return null; + } + + public void delete(String key) { + int ind = hash(key); + linkedLists[ind].removeIf(keyValue -> keyValue.key.equals(key)); + } + + public void getInfHashTab() { + for (int ind = 0; ind < size; ind++) { + if (!linkedLists[ind].isEmpty()) { + for (KeyValue keyValue : linkedLists[ind]) { + System.out.println("Key: " + keyValue.key + " Value: " + keyValue.value); + } + } + } + } +} diff --git a/students/23K0755/23K0755-p27/src/main/java/ru/mirea/practice/s23k0755/task1/Test.java b/students/23K0755/23K0755-p27/src/main/java/ru/mirea/practice/s23k0755/task1/Test.java new file mode 100644 index 000000000..3e8070ea1 --- /dev/null +++ b/students/23K0755/23K0755-p27/src/main/java/ru/mirea/practice/s23k0755/task1/Test.java @@ -0,0 +1,33 @@ +package ru.mirea.practice.s23k0755.task1; + +abstract class Test { + public static void main(String[] args) { + HashTab hashTab = new HashTab(10); + + hashTab.add("A", "65"); + hashTab.add("B", "66"); + hashTab.add("C", "67"); + hashTab.add("D", "68"); + hashTab.add("E", "69"); + hashTab.add("F", "70"); + hashTab.add("G", "71"); + hashTab.add("H", "72"); + hashTab.add("I", "73"); + hashTab.add("J", "74"); + + + hashTab.getInfHashTab(); + + System.out.println("\nУдалим С\n"); + hashTab.delete("C"); + hashTab.getInfHashTab(); + + System.out.println("\nДобавим T\n"); + hashTab.add("T", "NewElement"); + hashTab.getInfHashTab(); + + System.out.println("Поиск по T\n"); + System.out.println(hashTab.lookUp("T")); + } + +} diff --git a/students/23K0755/23K0755-p28/pom.xml b/students/23K0755/23K0755-p28/pom.xml new file mode 100644 index 000000000..264c5a9bf --- /dev/null +++ b/students/23K0755/23K0755-p28/pom.xml @@ -0,0 +1,13 @@ + + + 4.0.0 + + 23K0755 + ru.mirea.practice + 2024.1 + ../pom.xml + + 23K0755-p28 + Массивы + diff --git a/students/23K0755/23K0755-p28/src/main/java/ru/mirea/practice/s23k0755/task1/pom.xml b/students/23K0755/23K0755-p28/src/main/java/ru/mirea/practice/s23k0755/task1/pom.xml new file mode 100644 index 000000000..3646723f1 --- /dev/null +++ b/students/23K0755/23K0755-p28/src/main/java/ru/mirea/practice/s23k0755/task1/pom.xml @@ -0,0 +1,45 @@ + + + 4.0.0 + + algorithms-and-data-structures + ru.mirea.practice + 2024.1 + ../../pom.xml + + 23K0755 + pom + Практическая работа Наумовой Натальи + + + 23K0755-p01 + 23K0755-p02 + 23K0755-p03 + 23K0755-p04 + 23K0755-p05 + 23K0755-p06 + 23K0755-p07 + 23K0755-p08 + 23K0755-p09 + 23K0755-p10 + 23K0755-p11 + 23K0755-p12 + 23K0755-p13 + 23K0755-p14 + 23K0755-p15 + 23K0755-p16 + 23K0755-p17 + 23K0755-p18 + 23K0755-p19 + 23K0755-p20 + 23K0755-p21 + 23K0755-p22 + 23K0755-p23 + 23K0755-p24 + 23K0755-p25 + 23K0755-p26 + 23K0755-p27 + 23K0755-p28 + + diff --git a/students/23K0755/23K0755-p28/src/main/java/ru/mirea/practice/s23k0755/task1/task1/HashInTree.java b/students/23K0755/23K0755-p28/src/main/java/ru/mirea/practice/s23k0755/task1/task1/HashInTree.java new file mode 100644 index 000000000..354200815 --- /dev/null +++ b/students/23K0755/23K0755-p28/src/main/java/ru/mirea/practice/s23k0755/task1/task1/HashInTree.java @@ -0,0 +1,17 @@ +package ru.mirea.practice.s23k0755.task1.task1; + +import java.util.HashSet; +import java.util.TreeSet; + +abstract class HashInTree { + public static void main(String[] args) { + HashSet hashSet = new HashSet<>(); + hashSet.add("Иванов Иван"); + hashSet.add("Михайлов Михаил"); + hashSet.add("Третий человек"); + hashSet.add("Смирнов Андрей"); + hashSet.add("Последний человек"); + TreeSet treeSet = new TreeSet<>(hashSet); + System.out.println(treeSet); + } +} diff --git a/students/23K0755/23K0755-p28/src/main/java/ru/mirea/practice/s23k0755/task1/task2/Test.java b/students/23K0755/23K0755-p28/src/main/java/ru/mirea/practice/s23k0755/task1/task2/Test.java new file mode 100644 index 000000000..4f3811114 --- /dev/null +++ b/students/23K0755/23K0755-p28/src/main/java/ru/mirea/practice/s23k0755/task1/task2/Test.java @@ -0,0 +1,14 @@ +package ru.mirea.practice.s23k0755.task1.task2; + +import java.util.Map; + +abstract class Test { + public static void main(String[] args) { + Map map = Tree.createMap(); + int repeatsFirstName = Tree.counterFirtsName(map); + int repeatsLastName = Tree.counterLastName(map); + + System.out.println("Same first name count: " + repeatsFirstName); + System.out.println("Same last name count: " + repeatsLastName); + } +} diff --git a/students/23K0755/23K0755-p28/src/main/java/ru/mirea/practice/s23k0755/task1/task2/Tree.java b/students/23K0755/23K0755-p28/src/main/java/ru/mirea/practice/s23k0755/task1/task2/Tree.java new file mode 100644 index 000000000..b7cbafcef --- /dev/null +++ b/students/23K0755/23K0755-p28/src/main/java/ru/mirea/practice/s23k0755/task1/task2/Tree.java @@ -0,0 +1,51 @@ +package ru.mirea.practice.s23k0755.task1.task2; + +import java.util.HashMap; +import java.util.Map; + + +abstract class Tree { + public static Map createMap() { + Map map = new HashMap<>(); + map.put("Иванов", "Иван"); + map.put("Лесков", "Вадим"); + map.put("Пушкин", "Александр"); + map.put("Михайлов", "Сергей"); + map.put("Сергеев", "Миихаиил"); + map.put("Мирозов", "Дмитрий"); + map.put("Чехов", "Антон"); + map.put("Тергенев", "Иван"); + map.put("Толстой", "Лев"); + map.put("Толстой", "Алексей"); + return map; + } + + public static int counterFirtsName(Map map) { + Map nameCounter = new HashMap<>(); + for (String name : map.values()) { + nameCounter.put(name, nameCounter.getOrDefault(name, 0) + 1); + } + int counter = 0; + for (int value : nameCounter.values()) { + if (value > 1) { + counter += value; + } + } + return counter; + } + + public static int counterLastName(Map map) { + Map lastNameCount = new HashMap<>(); + for (String lastName : map.keySet()) { + lastNameCount.put(lastName, lastNameCount.getOrDefault(lastName, 0) + 1); + } + int counter = 0; + for (int value : lastNameCount.values()) { + if (value > 1) { + counter += value; + } + } + return counter; + } + +} diff --git a/students/23K0755/23K0755-p29/pom.xml b/students/23K0755/23K0755-p29/pom.xml new file mode 100644 index 000000000..9d9618e25 --- /dev/null +++ b/students/23K0755/23K0755-p29/pom.xml @@ -0,0 +1,13 @@ + + + 4.0.0 + + 23K0755 + ru.mirea.practice + 2024.1 + ../pom.xml + + 23K0755-p29 + Массивы + diff --git a/students/23K0755/23K0755-p29/src/main/java/ru/mirea/practice/s23k0755/task1/23K0155-p29/pom.xml b/students/23K0755/23K0755-p29/src/main/java/ru/mirea/practice/s23k0755/task1/23K0155-p29/pom.xml new file mode 100644 index 000000000..5d7d1fa5f --- /dev/null +++ b/students/23K0755/23K0755-p29/src/main/java/ru/mirea/practice/s23k0755/task1/23K0155-p29/pom.xml @@ -0,0 +1,13 @@ + + + 4.0.0 + + 23K0155 + ru.mirea.practice + 2024.1 + ../pom.xml + + 23K0155-p29 + Двацать девятое задание + diff --git "a/students/23K0755/23K0755-p29/src/main/java/ru/mirea/practice/s23k0755/task1/23K0155-p29/src/main/java/ru/mirea/practice/s23k0155/\320\227\320\260\320\264\320\260\320\275\320\270\320\265" "b/students/23K0755/23K0755-p29/src/main/java/ru/mirea/practice/s23k0755/task1/23K0155-p29/src/main/java/ru/mirea/practice/s23k0155/\320\227\320\260\320\264\320\260\320\275\320\270\320\265" new file mode 100644 index 000000000..be00b2d4a --- /dev/null +++ "b/students/23K0755/23K0755-p29/src/main/java/ru/mirea/practice/s23k0755/task1/23K0155-p29/src/main/java/ru/mirea/practice/s23k0155/\320\227\320\260\320\264\320\260\320\275\320\270\320\265" @@ -0,0 +1,9 @@ +В галактике "Milky Way" на планете "Neptune" есть N городов, некоторые из которых соединены дорогами. Император +"Maximus" галактики "Milky Way" решил провести инвентаризацию дорог на планете "Neptune". +Но, как оказалось, он не силен в математике, поэтому он просит вас сосчитать количество дорог. +Входные данные +В первой строке задается число N (0 ≤ N ≤ 100). В следующих N строках содержится по N чисел, +каждое из которых является единичкой или ноликом. Причем, если в позиции (i,j) квадратной матрицы стоит единичка, +то i-ый и j-ый города соединены дорогами, а если нолик, то не соединены. +Выходные данные +Выведите одно число – количество дорог на планете "Neptune". diff --git a/students/23K0755/23K0755-p29/src/main/java/ru/mirea/practice/s23k0755/task1/NeptuneRoads.java b/students/23K0755/23K0755-p29/src/main/java/ru/mirea/practice/s23k0755/task1/NeptuneRoads.java new file mode 100644 index 000000000..ccc9c7c92 --- /dev/null +++ b/students/23K0755/23K0755-p29/src/main/java/ru/mirea/practice/s23k0755/task1/NeptuneRoads.java @@ -0,0 +1,41 @@ +package ru.mirea.practice.s23k0755.task1; + +import java.util.Scanner; + +abstract class NeptuneRoads { + public static void main(String[] args) { + + // Считывание данных + try (Scanner scanner = new Scanner(System.in)) { + System.out.print("Введите число N: "); + int n = scanner.nextInt(); + int[][] mas = new int[n][n]; + for (int i = 0; i < n; i++) { + for (int j = 0; j < n; j++) { + mas[i][j] = scanner.nextInt(); + } + } + System.out.println("Схема города:"); + for (int i = 0; i < n; i++) { + for (int j = 0; j < n; j++) { + System.out.print(mas[i][j] + " "); + } + System.out.println(); + } + + // Решение задачи + int counterOfRoads = 0; + for (int i = 0; i < n; i++) { + for (int j = 0; j < n; j++) { + if (mas[i][j] == mas[j][i] && mas[i][j] == 1) { + counterOfRoads++; + } + } + } + + System.out.println("Количество дорог: " + counterOfRoads / 2); + } catch (Exception e) { + throw new RuntimeException(e); + } + } +} diff --git a/students/23K0755/23K0755-p29/src/main/java/ru/mirea/practice/s23k0755/task1/pom.xml b/students/23K0755/23K0755-p29/src/main/java/ru/mirea/practice/s23k0755/task1/pom.xml new file mode 100644 index 000000000..3646723f1 --- /dev/null +++ b/students/23K0755/23K0755-p29/src/main/java/ru/mirea/practice/s23k0755/task1/pom.xml @@ -0,0 +1,45 @@ + + + 4.0.0 + + algorithms-and-data-structures + ru.mirea.practice + 2024.1 + ../../pom.xml + + 23K0755 + pom + Практическая работа Наумовой Натальи + + + 23K0755-p01 + 23K0755-p02 + 23K0755-p03 + 23K0755-p04 + 23K0755-p05 + 23K0755-p06 + 23K0755-p07 + 23K0755-p08 + 23K0755-p09 + 23K0755-p10 + 23K0755-p11 + 23K0755-p12 + 23K0755-p13 + 23K0755-p14 + 23K0755-p15 + 23K0755-p16 + 23K0755-p17 + 23K0755-p18 + 23K0755-p19 + 23K0755-p20 + 23K0755-p21 + 23K0755-p22 + 23K0755-p23 + 23K0755-p24 + 23K0755-p25 + 23K0755-p26 + 23K0755-p27 + 23K0755-p28 + + diff --git a/students/23K0755/23K0755-p30/pom.xml b/students/23K0755/23K0755-p30/pom.xml new file mode 100644 index 000000000..54b979f11 --- /dev/null +++ b/students/23K0755/23K0755-p30/pom.xml @@ -0,0 +1,13 @@ + + + 4.0.0 + + 23K0755 + ru.mirea.practice + 2024.1 + ../pom.xml + + 23K0755-p30 + Массивы + diff --git a/students/23K0755/23K0755-p30/src/main/java/ru/mirea/practice/s23k0755/task1/BinaryTree.java b/students/23K0755/23K0755-p30/src/main/java/ru/mirea/practice/s23k0755/task1/BinaryTree.java new file mode 100644 index 000000000..b7de3b445 --- /dev/null +++ b/students/23K0755/23K0755-p30/src/main/java/ru/mirea/practice/s23k0755/task1/BinaryTree.java @@ -0,0 +1,111 @@ +package ru.mirea.practice.s23k0755.task1; + +public class BinaryTree { + Node root; + + public void insert(int value) { + root = insertRec(root, value); + } + + private Node insertRec(Node root, int value) { + if (root == null) { + root = new Node(value); + return root; + } + if (value < root.data) { + root.left = insertRec(root.left, value); + } else if (value > root.data) { + root.right = insertRec(root.right, value); + } + return root; + } + + public boolean lookup(int target) { + return lookupRec(root, target); + } + + private boolean lookupRec(Node node, int target) { + if (node == null) { + return false; + } + if (target == node.data) { + return true; + } else if (target < node.data) { + return lookupRec(node.left, target); + } else { + return lookupRec(node.right, target); + } + } + + public int height() { + return heightRec(root); + } + + private int heightRec(Node node) { + if (node == null) { + return 0; + } + int leftHeight = heightRec(node.left); + int rightHeight = heightRec(node.right); + return Math.max(leftHeight, rightHeight) + 1; + } + + public int getMaxWidth() { + int maxWidth = 0; + int height = height(); + for (int i = 1; i <= height; i++) { + int width = getWidth(root, i); + maxWidth = Math.max(maxWidth, width); + } + return maxWidth; + } + + private int getWidth(Node node, int level) { + if (node == null) { + return 0; + } + if (level == 1) { + return 1; + } else { + return getWidth(node.left, level - 1) + getWidth(node.right, level - 1); + } + } + + public boolean sameTree(Node a, Node b) { + if (a == null && b == null) { + return true; + } + if (a != null && b != null) { + return a.data == b.data && sameTree(a.left, b.left) && sameTree(a.right, b.right); + } + return false; + } + + public void reverse() { + root = reverseRec(root); + } + + private Node reverseRec(Node node) { + if (node != null) { + Node temp = node.left; + node.left = node.right; + node.right = temp; + reverseRec(node.left); + reverseRec(node.right); + } + return node; + } + + public void printInOrder() { + printInOrderRec(root); + System.out.println(); + } + + private void printInOrderRec(Node node) { + if (node != null) { + printInOrderRec(node.left); + System.out.print(node.data + " "); + printInOrderRec(node.right); + } + } +} diff --git a/students/23K0755/23K0755-p30/src/main/java/ru/mirea/practice/s23k0755/task1/Main.java b/students/23K0755/23K0755-p30/src/main/java/ru/mirea/practice/s23k0755/task1/Main.java new file mode 100644 index 000000000..5c393c898 --- /dev/null +++ b/students/23K0755/23K0755-p30/src/main/java/ru/mirea/practice/s23k0755/task1/Main.java @@ -0,0 +1,53 @@ +package ru.mirea.practice.s23k0755.task1; + +public final class Main { + private Main() { + + } + + public static void main(String[] args) { + BinaryTree tree = new BinaryTree(); + + tree.insert(10); + tree.insert(5); + tree.insert(15); + tree.insert(3); + tree.insert(7); + tree.insert(12); + tree.insert(18); + + System.out.print("In-Order Traversal: "); + tree.printInOrder(); + + int height = tree.height(); + System.out.println("Height of the tree: " + height); + + int maxWidth = tree.getMaxWidth(); + System.out.println("Maximum width of the tree: " + maxWidth); + + int searchValue1 = 7; + int searchValue2 = 20; + System.out.println("Lookup " + searchValue1 + ": " + tree.lookup(searchValue1)); + System.out.println("Lookup " + searchValue2 + ": " + tree.lookup(searchValue2)); + + tree.reverse(); + System.out.print("In-Order Traversal after reversing: "); + tree.printInOrder(); + + BinaryTree tree2 = new BinaryTree(); + tree2.insert(10); + tree2.insert(5); + tree2.insert(15); + tree2.insert(3); + tree2.insert(7); + tree2.insert(12); + tree2.insert(18); + + boolean areSame = tree.sameTree(tree.root, tree2.root); + System.out.println("Are the two trees the same? " + areSame); + + tree2.insert(20); + areSame = tree.sameTree(tree.root, tree2.root); + System.out.println("Are the two trees the same after modification? " + areSame); + } +} diff --git a/students/23K0755/23K0755-p30/src/main/java/ru/mirea/practice/s23k0755/task1/Node.java b/students/23K0755/23K0755-p30/src/main/java/ru/mirea/practice/s23k0755/task1/Node.java new file mode 100644 index 000000000..b3c590ce3 --- /dev/null +++ b/students/23K0755/23K0755-p30/src/main/java/ru/mirea/practice/s23k0755/task1/Node.java @@ -0,0 +1,13 @@ +package ru.mirea.practice.s23k0755.task1; + +public class Node { + int data; + Node left; + Node right; + + Node(int value) { + this.data = value; + this.left = null; + this.right = null; + } +} diff --git a/students/23K0755/23K0755-p30/src/main/java/ru/mirea/practice/s23k0755/task1/pom.xml b/students/23K0755/23K0755-p30/src/main/java/ru/mirea/practice/s23k0755/task1/pom.xml new file mode 100644 index 000000000..3646723f1 --- /dev/null +++ b/students/23K0755/23K0755-p30/src/main/java/ru/mirea/practice/s23k0755/task1/pom.xml @@ -0,0 +1,45 @@ + + + 4.0.0 + + algorithms-and-data-structures + ru.mirea.practice + 2024.1 + ../../pom.xml + + 23K0755 + pom + Практическая работа Наумовой Натальи + + + 23K0755-p01 + 23K0755-p02 + 23K0755-p03 + 23K0755-p04 + 23K0755-p05 + 23K0755-p06 + 23K0755-p07 + 23K0755-p08 + 23K0755-p09 + 23K0755-p10 + 23K0755-p11 + 23K0755-p12 + 23K0755-p13 + 23K0755-p14 + 23K0755-p15 + 23K0755-p16 + 23K0755-p17 + 23K0755-p18 + 23K0755-p19 + 23K0755-p20 + 23K0755-p21 + 23K0755-p22 + 23K0755-p23 + 23K0755-p24 + 23K0755-p25 + 23K0755-p26 + 23K0755-p27 + 23K0755-p28 + + diff --git a/students/23K0755/23K0755-p31/pom.xml b/students/23K0755/23K0755-p31/pom.xml new file mode 100644 index 000000000..8da547885 --- /dev/null +++ b/students/23K0755/23K0755-p31/pom.xml @@ -0,0 +1,13 @@ + + + 4.0.0 + + 23K0755 + ru.mirea.practice + 2024.1 + ../pom.xml + + 23K0755-p31 + Массивы + diff --git a/students/23K0755/23K0755-p31/src/main/java/ru/mirea/practice/s23k0755/task1/Node.java b/students/23K0755/23K0755-p31/src/main/java/ru/mirea/practice/s23k0755/task1/Node.java new file mode 100644 index 000000000..2cf5d5629 --- /dev/null +++ b/students/23K0755/23K0755-p31/src/main/java/ru/mirea/practice/s23k0755/task1/Node.java @@ -0,0 +1,11 @@ +package ru.mirea.practice.s23k0755.task1; + +class Node { + int key; + Node left; + Node right; + + public Node(int key) { + this.key = key; + } +} diff --git a/students/23K0755/23K0755-p31/src/main/java/ru/mirea/practice/s23k0755/task1/ProcessorTree.java b/students/23K0755/23K0755-p31/src/main/java/ru/mirea/practice/s23k0755/task1/ProcessorTree.java new file mode 100644 index 000000000..85840ebe4 --- /dev/null +++ b/students/23K0755/23K0755-p31/src/main/java/ru/mirea/practice/s23k0755/task1/ProcessorTree.java @@ -0,0 +1,125 @@ +package ru.mirea.practice.s23k0755.task1; + +public class ProcessorTree { + private Node root; + + public void add(int key) { + root = addRecursive(root, key); + } + + private Node addRecursive(Node node, int key) { + if (node == null) { + return new Node(key); + } + if (key < node.key) { + node.left = addRecursive(node.left, key); + } else if (key > node.key) { + node.right = addRecursive(node.right, key); + } else { + System.out.println("Key " + key + " already exists."); + } + return node; + } + + public void delete(int key) { + root = deleteRecursive(root, key); + } + + private Node deleteRecursive(Node node, int key) { + if (node == null) { + System.out.println("Key " + key + " not found."); + return null; + } + if (key < node.key) { + node.left = deleteRecursive(node.left, key); + } else if (key > node.key) { + node.right = deleteRecursive(node.right, key); + } else { + if (node.left == null && node.right == null) { + return null; + } else if (node.left == null) { + return node.right; + } else if (node.right == null) { + return node.left; + } else { + Node smallestValue = findSmallestValue(node.right); + node.key = smallestValue.key; + node.right = deleteRecursive(node.right, smallestValue.key); + } + } + return node; + } + + private Node findSmallestValue(Node node) { + return node.left == null ? node : findSmallestValue(node.left); + } + + public void printVariant1() { + if (root == null) { + System.out.println("Tree is empty."); + return; + } + int height = getHeight(root); + for (int level = height; level >= 1; level--) { + printLevel(root, level); + } + System.out.println(); + } + + public void printVariant2() { + if (root == null) { + System.out.println("Tree is empty."); + return; + } + int height = getHeight(root); + for (int level = 1; level <= height; level++) { + printLevel(root, level); + } + System.out.println(); + } + + public void printVariant3() { + printVariant3Recursive(root); + System.out.println(); + } + + private void printVariant3Recursive(Node node) { + if (node != null) { + printVariant3Recursive(node.left); + System.out.print(node.key + " "); + printVariant3Recursive(node.right); + } + } + + public void printVariant6() { + if (root == null) { + System.out.println("Tree is empty."); + return; + } + int height = getHeight(root); + for (int level = 1; level <= height; level++) { + System.out.print("Level " + level + ": "); + printLevel(root, level); + System.out.println(); + } + } + + private int getHeight(Node node) { + if (node == null) { + return 0; + } + return Math.max(getHeight(node.left), getHeight(node.right)) + 1; + } + + private void printLevel(Node node, int level) { + if (node == null) { + return; + } + if (level == 1) { + System.out.print(node.key + " "); + } else if (level > 1) { + printLevel(node.left, level - 1); + printLevel(node.right, level - 1); + } + } +} diff --git a/students/23K0755/23K0755-p31/src/main/java/ru/mirea/practice/s23k0755/task1/ProcessorTreeApp.java b/students/23K0755/23K0755-p31/src/main/java/ru/mirea/practice/s23k0755/task1/ProcessorTreeApp.java new file mode 100644 index 000000000..fd17cee52 --- /dev/null +++ b/students/23K0755/23K0755-p31/src/main/java/ru/mirea/practice/s23k0755/task1/ProcessorTreeApp.java @@ -0,0 +1,68 @@ +package ru.mirea.practice.s23k0755.task1; + +import java.util.Scanner; + +public final class ProcessorTreeApp { + private ProcessorTreeApp() { + throw new UnsupportedOperationException("Utility class"); + } + + public static void main(String[] args) { + ProcessorTree tree = new ProcessorTree(); + + try (Scanner scanner = new Scanner(System.in)) { + while (true) { + System.out.println("Menu:"); + System.out.println("1 - Add node"); + System.out.println("2 - Delete node"); + System.out.println("3 - Print variant 1 (bottom to top, left to right)"); + System.out.println("4 - Print variant 2 (top to bottom, left to right)"); + System.out.println("5 - Print variant 3 (left, root, right)"); + System.out.println("6 - Print variant 6 (levels with level numbers)"); + System.out.println("7 - Exit"); + System.out.print("Enter command: "); + int command = scanner.nextInt(); + + switch (command) { + case 1: + System.out.print("Enter key to add: "); + int keyToAdd = scanner.nextInt(); + tree.add(keyToAdd); + break; + + case 2: + System.out.print("Enter key to delete: "); + int keyToDelete = scanner.nextInt(); + tree.delete(keyToDelete); + break; + + case 3: + tree.printVariant1(); + break; + + case 4: + tree.printVariant2(); + break; + + case 5: + tree.printVariant3(); + break; + + case 6: + tree.printVariant6(); + break; + + case 7: + System.out.println("Exiting program."); + return; + + default: + System.out.println("Invalid command."); + break; + } + } + } catch (Exception e) { + System.out.println("An error occurred: " + e.getMessage()); + } + } +} diff --git a/students/23K0755/23K0755-p31/src/main/java/ru/mirea/practice/s23k0755/task1/pom.xml b/students/23K0755/23K0755-p31/src/main/java/ru/mirea/practice/s23k0755/task1/pom.xml new file mode 100644 index 000000000..3646723f1 --- /dev/null +++ b/students/23K0755/23K0755-p31/src/main/java/ru/mirea/practice/s23k0755/task1/pom.xml @@ -0,0 +1,45 @@ + + + 4.0.0 + + algorithms-and-data-structures + ru.mirea.practice + 2024.1 + ../../pom.xml + + 23K0755 + pom + Практическая работа Наумовой Натальи + + + 23K0755-p01 + 23K0755-p02 + 23K0755-p03 + 23K0755-p04 + 23K0755-p05 + 23K0755-p06 + 23K0755-p07 + 23K0755-p08 + 23K0755-p09 + 23K0755-p10 + 23K0755-p11 + 23K0755-p12 + 23K0755-p13 + 23K0755-p14 + 23K0755-p15 + 23K0755-p16 + 23K0755-p17 + 23K0755-p18 + 23K0755-p19 + 23K0755-p20 + 23K0755-p21 + 23K0755-p22 + 23K0755-p23 + 23K0755-p24 + 23K0755-p25 + 23K0755-p26 + 23K0755-p27 + 23K0755-p28 + + diff --git a/students/23K0755/23K0755-p32/pom.xml b/students/23K0755/23K0755-p32/pom.xml new file mode 100644 index 000000000..8796e9910 --- /dev/null +++ b/students/23K0755/23K0755-p32/pom.xml @@ -0,0 +1,13 @@ + + + 4.0.0 + + 23K0755 + ru.mirea.practice + 2024.1 + ../pom.xml + + 23K0755-p32 + Массивы + diff --git a/students/23K0755/23K0755-p32/src/main/java/ru/mirea/practice/s23k0755/task1/JohnsonTrotterPermutations.java b/students/23K0755/23K0755-p32/src/main/java/ru/mirea/practice/s23k0755/task1/JohnsonTrotterPermutations.java new file mode 100644 index 000000000..c11d66e8b --- /dev/null +++ b/students/23K0755/23K0755-p32/src/main/java/ru/mirea/practice/s23k0755/task1/JohnsonTrotterPermutations.java @@ -0,0 +1,61 @@ +package ru.mirea.practice.s23k0755.task1; + +import java.util.Arrays; + +public abstract class JohnsonTrotterPermutations { + + public static int findMaxMobileElement(int[] permutation, int[] direction) { + int index = -1; + for (int i = 0; i < permutation.length; i++) { + int nextIndex = i + direction[i]; + if (nextIndex >= 0 && nextIndex < permutation.length) { + if (permutation[i] > permutation[nextIndex]) { + if (index == -1) { + index = i; + } else if (permutation[i] > permutation[index]) { + index = i; + } + } + } + } + return index; + } + + public static void changeDirection(int[] permutation, int[] direction, int mobileElement) { + for (int i = 0; i < permutation.length; i++) { + if (permutation[i] > mobileElement) { + direction[i] = direction[i] * (-1); + } + } + } + + public static void swap(int[] permutation, int[] direction, int i, int j) { + int tempElement = permutation[i]; + permutation[i] = permutation[j]; + permutation[j] = tempElement; + + int tempDirection = direction[i]; + direction[i] = direction[j]; + direction[j] = tempDirection; + } + + public static void permutationGenerator(int n) { + int[] permutation = new int[n]; + int[] direction = new int[n]; + for (int i = 0; i < n; i++) { + permutation[i] = i + 1; + direction[i] = -1; + } + + System.out.println(Arrays.toString(permutation)); + int mobileElementIndex = findMaxMobileElement(permutation, direction); + while (mobileElementIndex != -1) { + int mobileElement = permutation[mobileElementIndex]; + int nextIndex = mobileElementIndex + direction[mobileElementIndex]; + swap(permutation, direction, mobileElementIndex, nextIndex); + changeDirection(permutation, direction, mobileElement); + System.out.println(Arrays.toString(permutation)); + mobileElementIndex = findMaxMobileElement(permutation, direction); + } + } +} diff --git a/students/23K0755/23K0755-p32/src/main/java/ru/mirea/practice/s23k0755/task1/Main.java b/students/23K0755/23K0755-p32/src/main/java/ru/mirea/practice/s23k0755/task1/Main.java new file mode 100644 index 000000000..c982e87aa --- /dev/null +++ b/students/23K0755/23K0755-p32/src/main/java/ru/mirea/practice/s23k0755/task1/Main.java @@ -0,0 +1,7 @@ +package ru.mirea.practice.s23k0755.task1; + +public abstract class Main { + public static void main(String[] args) { + JohnsonTrotterPermutations.permutationGenerator(3); + } +} diff --git a/students/23K0755/23K0755-p32/src/main/java/ru/mirea/practice/s23k0755/task1/pom.xml b/students/23K0755/23K0755-p32/src/main/java/ru/mirea/practice/s23k0755/task1/pom.xml new file mode 100644 index 000000000..3646723f1 --- /dev/null +++ b/students/23K0755/23K0755-p32/src/main/java/ru/mirea/practice/s23k0755/task1/pom.xml @@ -0,0 +1,45 @@ + + + 4.0.0 + + algorithms-and-data-structures + ru.mirea.practice + 2024.1 + ../../pom.xml + + 23K0755 + pom + Практическая работа Наумовой Натальи + + + 23K0755-p01 + 23K0755-p02 + 23K0755-p03 + 23K0755-p04 + 23K0755-p05 + 23K0755-p06 + 23K0755-p07 + 23K0755-p08 + 23K0755-p09 + 23K0755-p10 + 23K0755-p11 + 23K0755-p12 + 23K0755-p13 + 23K0755-p14 + 23K0755-p15 + 23K0755-p16 + 23K0755-p17 + 23K0755-p18 + 23K0755-p19 + 23K0755-p20 + 23K0755-p21 + 23K0755-p22 + 23K0755-p23 + 23K0755-p24 + 23K0755-p25 + 23K0755-p26 + 23K0755-p27 + 23K0755-p28 + + diff --git a/students/23K0755/pom.xml b/students/23K0755/pom.xml index 65009aa50..d9803e187 100644 --- a/students/23K0755/pom.xml +++ b/students/23K0755/pom.xml @@ -10,7 +10,7 @@ 23K0755 pom - Практическая работа Наумовой Натальи + Практическая работа Егора 23K0755-p01 @@ -33,5 +33,17 @@ 23K0755-p18 23K0755-p19 23K0755-p20 + 23K0755-p21 + 23K0755-p22 + 23K0755-p23 + 23K0755-p24 + 23K0755-p25 + 23K0755-p26 + 23K0755-p27 + 23K0755-p28 + 23K0755-p29 + 23K0755-p30 + 23K0755-p31 + 23K0755-p32