From 11a40f249bf1cd6c6c90c3d568d58d861fd4fe99 Mon Sep 17 00:00:00 2001 From: sunlight28 Date: Fri, 13 Dec 2024 22:24:59 +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-30=20+=2032?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- students/23K0087/23K0087-p21/pom.xml | 13 ++ .../practice/s23k0087/task1/ArrayToList.java | 21 ++ .../s23k0087/tasks2and3/GenericArr.java | 50 +++++ .../practice/s23k0087/tasks2and3/Tester.java | 17 ++ students/23K0087/23K0087-p22/pom.xml | 13 ++ .../practice/s23k0087/task1/Calculator.java | 42 ++++ .../mirea/practice/s23k0087/task1/Tester.java | 10 + students/23K0087/23K0087-p23/pom.xml | 13 ++ .../practice/s23k0087/task1/ArrayQueue.java | 58 +++++ .../s23k0087/task1/ArrayQueueAdt.java | 54 +++++ .../s23k0087/task1/ArrayQueueModule.java | 58 +++++ .../mirea/practice/s23k0087/task1/Tester.java | 39 ++++ .../s23k0087/task2/AbstractQueue.java | 29 +++ .../practice/s23k0087/task2/LinkedQueue.java | 49 +++++ .../mirea/practice/s23k0087/task2/Queue.java | 13 ++ students/23K0087/23K0087-p24/pom.xml | 13 ++ .../practice/s23k0087/task1/Complex.java | 44 ++++ .../task1/ComplexAbstractFactory.java | 7 + .../s23k0087/task1/ComplexFactory.java | 13 ++ .../s23k0087/task2/AbstractChairFactory.java | 9 + .../mirea/practice/s23k0087/task2/Chair.java | 5 + .../practice/s23k0087/task2/ChairFactory.java | 18 ++ .../mirea/practice/s23k0087/task2/Client.java | 17 ++ .../s23k0087/task2/FunctionalChair.java | 8 + .../practice/s23k0087/task2/MagicChair.java | 8 + .../mirea/practice/s23k0087/task2/Tester.java | 34 +++ .../s23k0087/task2/VictorianChair.java | 8 + students/23K0087/23K0087-p25/pom.xml | 13 ++ .../ru/mirea/practice/s23k0087/Task1.java | 19 ++ .../ru/mirea/practice/s23k0087/Task4.java | 19 ++ .../ru/mirea/practice/s23k0087/Task5.java | 33 +++ students/23K0087/23K0087-p26/pom.xml | 13 ++ .../ru/mirea/practice/s23k0087/Task1.java | 27 +++ .../s23k0087/tasks2and3/CustomIterator.java | 20 ++ .../s23k0087/tasks2and3/CustomList.java | 39 ++++ .../practice/s23k0087/tasks2and3/Node.java | 32 +++ students/23K0087/23K0087-p27/pom.xml | 13 ++ .../s23k0087/tasksfrom1to3/Hashtab.java | 68 ++++++ .../s23k0087/tasksfrom1to3/Tester.java | 25 +++ students/23K0087/23K0087-p28/pom.xml | 13 ++ .../ru/mirea/practice/s23k0087/Task1.java | 19 ++ .../ru/mirea/practice/s23k0087/Task2.java | 44 ++++ students/23K0087/23K0087-p29/pom.xml | 13 ++ .../ru/mirea/practice/s23k0087/Task1.java | 21 ++ students/23K0087/23K0087-p30/pom.xml | 13 ++ .../practice/s23k0087/task1/BinaryTree.java | 69 ++++++ .../mirea/practice/s23k0087/task1/Node.java | 13 ++ .../mirea/practice/s23k0087/task1/Tester.java | 24 +++ students/23K0087/23K0087-p30_2/pom.xml | 13 ++ .../s23k0087/task1/BinarySearchTree.java | 199 ++++++++++++++++++ .../task1/IntegerBinarySearchTree.java | 23 ++ .../mirea/practice/s23k0087/task1/Main.java | 15 ++ students/23K0087/23K0087-p32/pom.xml | 13 ++ .../ru/mirea/practice/s23k0087/Task1.java | 42 ++++ students/23K0087/pom.xml | 12 ++ 55 files changed, 1530 insertions(+) create mode 100644 students/23K0087/23K0087-p21/pom.xml create mode 100644 students/23K0087/23K0087-p21/src/main/java/ru/mirea/practice/s23k0087/task1/ArrayToList.java create mode 100644 students/23K0087/23K0087-p21/src/main/java/ru/mirea/practice/s23k0087/tasks2and3/GenericArr.java create mode 100644 students/23K0087/23K0087-p21/src/main/java/ru/mirea/practice/s23k0087/tasks2and3/Tester.java create mode 100644 students/23K0087/23K0087-p22/pom.xml create mode 100644 students/23K0087/23K0087-p22/src/main/java/ru/mirea/practice/s23k0087/task1/Calculator.java create mode 100644 students/23K0087/23K0087-p22/src/main/java/ru/mirea/practice/s23k0087/task1/Tester.java create mode 100644 students/23K0087/23K0087-p23/pom.xml create mode 100644 students/23K0087/23K0087-p23/src/main/java/ru/mirea/practice/s23k0087/task1/ArrayQueue.java create mode 100644 students/23K0087/23K0087-p23/src/main/java/ru/mirea/practice/s23k0087/task1/ArrayQueueAdt.java create mode 100644 students/23K0087/23K0087-p23/src/main/java/ru/mirea/practice/s23k0087/task1/ArrayQueueModule.java create mode 100644 students/23K0087/23K0087-p23/src/main/java/ru/mirea/practice/s23k0087/task1/Tester.java create mode 100644 students/23K0087/23K0087-p23/src/main/java/ru/mirea/practice/s23k0087/task2/AbstractQueue.java create mode 100644 students/23K0087/23K0087-p23/src/main/java/ru/mirea/practice/s23k0087/task2/LinkedQueue.java create mode 100644 students/23K0087/23K0087-p23/src/main/java/ru/mirea/practice/s23k0087/task2/Queue.java create mode 100644 students/23K0087/23K0087-p24/pom.xml create mode 100644 students/23K0087/23K0087-p24/src/main/java/ru/mirea/practice/s23k0087/task1/Complex.java create mode 100644 students/23K0087/23K0087-p24/src/main/java/ru/mirea/practice/s23k0087/task1/ComplexAbstractFactory.java create mode 100644 students/23K0087/23K0087-p24/src/main/java/ru/mirea/practice/s23k0087/task1/ComplexFactory.java create mode 100644 students/23K0087/23K0087-p24/src/main/java/ru/mirea/practice/s23k0087/task2/AbstractChairFactory.java create mode 100644 students/23K0087/23K0087-p24/src/main/java/ru/mirea/practice/s23k0087/task2/Chair.java create mode 100644 students/23K0087/23K0087-p24/src/main/java/ru/mirea/practice/s23k0087/task2/ChairFactory.java create mode 100644 students/23K0087/23K0087-p24/src/main/java/ru/mirea/practice/s23k0087/task2/Client.java create mode 100644 students/23K0087/23K0087-p24/src/main/java/ru/mirea/practice/s23k0087/task2/FunctionalChair.java create mode 100644 students/23K0087/23K0087-p24/src/main/java/ru/mirea/practice/s23k0087/task2/MagicChair.java create mode 100644 students/23K0087/23K0087-p24/src/main/java/ru/mirea/practice/s23k0087/task2/Tester.java create mode 100644 students/23K0087/23K0087-p24/src/main/java/ru/mirea/practice/s23k0087/task2/VictorianChair.java create mode 100644 students/23K0087/23K0087-p25/pom.xml create mode 100644 students/23K0087/23K0087-p25/src/main/java/ru/mirea/practice/s23k0087/Task1.java create mode 100644 students/23K0087/23K0087-p25/src/main/java/ru/mirea/practice/s23k0087/Task4.java create mode 100644 students/23K0087/23K0087-p25/src/main/java/ru/mirea/practice/s23k0087/Task5.java create mode 100644 students/23K0087/23K0087-p26/pom.xml create mode 100644 students/23K0087/23K0087-p26/src/main/java/ru/mirea/practice/s23k0087/Task1.java create mode 100644 students/23K0087/23K0087-p26/src/main/java/ru/mirea/practice/s23k0087/tasks2and3/CustomIterator.java create mode 100644 students/23K0087/23K0087-p26/src/main/java/ru/mirea/practice/s23k0087/tasks2and3/CustomList.java create mode 100644 students/23K0087/23K0087-p26/src/main/java/ru/mirea/practice/s23k0087/tasks2and3/Node.java create mode 100644 students/23K0087/23K0087-p27/pom.xml create mode 100644 students/23K0087/23K0087-p27/src/main/java/ru/mirea/practice/s23k0087/tasksfrom1to3/Hashtab.java create mode 100644 students/23K0087/23K0087-p27/src/main/java/ru/mirea/practice/s23k0087/tasksfrom1to3/Tester.java create mode 100644 students/23K0087/23K0087-p28/pom.xml create mode 100644 students/23K0087/23K0087-p28/src/main/java/ru/mirea/practice/s23k0087/Task1.java create mode 100644 students/23K0087/23K0087-p28/src/main/java/ru/mirea/practice/s23k0087/Task2.java create mode 100644 students/23K0087/23K0087-p29/pom.xml create mode 100644 students/23K0087/23K0087-p29/src/main/java/ru/mirea/practice/s23k0087/Task1.java create mode 100644 students/23K0087/23K0087-p30/pom.xml create mode 100644 students/23K0087/23K0087-p30/src/main/java/ru/mirea/practice/s23k0087/task1/BinaryTree.java create mode 100644 students/23K0087/23K0087-p30/src/main/java/ru/mirea/practice/s23k0087/task1/Node.java create mode 100644 students/23K0087/23K0087-p30/src/main/java/ru/mirea/practice/s23k0087/task1/Tester.java create mode 100644 students/23K0087/23K0087-p30_2/pom.xml create mode 100644 students/23K0087/23K0087-p30_2/src/main/java/ru/mirea/practice/s23k0087/task1/BinarySearchTree.java create mode 100644 students/23K0087/23K0087-p30_2/src/main/java/ru/mirea/practice/s23k0087/task1/IntegerBinarySearchTree.java create mode 100644 students/23K0087/23K0087-p30_2/src/main/java/ru/mirea/practice/s23k0087/task1/Main.java create mode 100644 students/23K0087/23K0087-p32/pom.xml create mode 100644 students/23K0087/23K0087-p32/src/main/java/ru/mirea/practice/s23k0087/Task1.java diff --git a/students/23K0087/23K0087-p21/pom.xml b/students/23K0087/23K0087-p21/pom.xml new file mode 100644 index 000000000..c76e45590 --- /dev/null +++ b/students/23K0087/23K0087-p21/pom.xml @@ -0,0 +1,13 @@ + + + 4.0.0 + + 23K0087 + ru.mirea.practice + 2024.1 + ../pom.xml + + 23K0087-p21 + Двадцать первое задание + diff --git a/students/23K0087/23K0087-p21/src/main/java/ru/mirea/practice/s23k0087/task1/ArrayToList.java b/students/23K0087/23K0087-p21/src/main/java/ru/mirea/practice/s23k0087/task1/ArrayToList.java new file mode 100644 index 000000000..ae9552aef --- /dev/null +++ b/students/23K0087/23K0087-p21/src/main/java/ru/mirea/practice/s23k0087/task1/ArrayToList.java @@ -0,0 +1,21 @@ +package ru.mirea.practice.s23k0087.task1; + +import java.util.Arrays; +import java.util.List; + +public abstract class ArrayToList { + + public static List convertArrayToList(E[] array) { + return Arrays.asList(array); + } + + public static void main(String[] args) { + String[] arrayStr = {"Прибыл", "Сатору", "Годжо"}; + List listStr = convertArrayToList(arrayStr); + System.out.println("List String: " + listStr); + + Integer[] arrayInt = {2, 0, 3, 1}; + List listInt = convertArrayToList(arrayInt); + System.out.println("List Integer: " + listInt); + } +} diff --git a/students/23K0087/23K0087-p21/src/main/java/ru/mirea/practice/s23k0087/tasks2and3/GenericArr.java b/students/23K0087/23K0087-p21/src/main/java/ru/mirea/practice/s23k0087/tasks2and3/GenericArr.java new file mode 100644 index 000000000..9880ac82c --- /dev/null +++ b/students/23K0087/23K0087-p21/src/main/java/ru/mirea/practice/s23k0087/tasks2and3/GenericArr.java @@ -0,0 +1,50 @@ +package ru.mirea.practice.s23k0087.tasks2and3; + +public class GenericArr { + private final E[] array; + + public GenericArr(E[] elements) { + this.array = elements; + } + + public E get(int index) { + + if (index >= 0 && index < array.length) { + return array[index]; + } else { + throw new IndexOutOfBoundsException("Index: " + index + ", Size: " + array.length); + } + } + + public void set(int index, E element) { + if (index >= 0 && index < array.length) { + array[index] = element; + } else { + throw new IndexOutOfBoundsException("Index: " + index + ", Size: " + array.length); + } + } + + public E getElementByIndex(int index) { + if (index < 0 || index >= array.length) { + throw new IndexOutOfBoundsException("Index: " + index + ", Size: " + array.length); + } + return array[index]; + } + + @Override + public String toString() { + StringBuilder sb = new StringBuilder("["); + for (int i = 0; i < array.length; i++) { + sb.append(array[i]); + if (i < array.length - 1) { + sb.append(", "); + } + } + sb.append("]"); + return sb.toString(); + } + + public int size() { + return array.length; + } +} diff --git a/students/23K0087/23K0087-p21/src/main/java/ru/mirea/practice/s23k0087/tasks2and3/Tester.java b/students/23K0087/23K0087-p21/src/main/java/ru/mirea/practice/s23k0087/tasks2and3/Tester.java new file mode 100644 index 000000000..0d41b0294 --- /dev/null +++ b/students/23K0087/23K0087-p21/src/main/java/ru/mirea/practice/s23k0087/tasks2and3/Tester.java @@ -0,0 +1,17 @@ +package ru.mirea.practice.s23k0087.tasks2and3; + +public abstract class Tester { + public static void main(String[] args) { + String[] arrayStr = {"Volkswagen", "Das", "Auto"}; + GenericArr stringGenericArr = new GenericArr<>(arrayStr); + System.out.println(stringGenericArr); + + Long[] arrayLong = {2031L, 911922L, 1234567890L}; + GenericArr longGenericArr = new GenericArr<>(arrayLong); + System.out.println(longGenericArr); + + Double[] arrayDouble = {20.31, 0.19293912, 0.41413, 0.221}; + GenericArr doubleGenericArr = new GenericArr<>(arrayDouble); + System.out.println(doubleGenericArr); + } +} diff --git a/students/23K0087/23K0087-p22/pom.xml b/students/23K0087/23K0087-p22/pom.xml new file mode 100644 index 000000000..ed56747c0 --- /dev/null +++ b/students/23K0087/23K0087-p22/pom.xml @@ -0,0 +1,13 @@ + + + 4.0.0 + + 23K0087 + ru.mirea.practice + 2024.1 + ../pom.xml + + 23K0087-p22 + Двадцать второе задание + diff --git a/students/23K0087/23K0087-p22/src/main/java/ru/mirea/practice/s23k0087/task1/Calculator.java b/students/23K0087/23K0087-p22/src/main/java/ru/mirea/practice/s23k0087/task1/Calculator.java new file mode 100644 index 000000000..470ddc264 --- /dev/null +++ b/students/23K0087/23K0087-p22/src/main/java/ru/mirea/practice/s23k0087/task1/Calculator.java @@ -0,0 +1,42 @@ +package ru.mirea.practice.s23k0087.task1; + +import java.util.Stack; + +public abstract class Calculator { + private static double applyOperation(double a, double b, String operator) { + switch (operator) { + case "+": + return a + b; + case "-": + return a - b; + case "*": + return a * b; + case "/": + if (b == 0) { + throw new ArithmeticException("Деление на ноль"); + } + return a / b; + default: + throw new IllegalArgumentException("Недопустимый оператор: " + operator); + } + } + + private static boolean isOperator(String token) { + return "+".equals(token) || "-".equals(token) || "*".equals(token) || "/".equals(token); + } + + public static double calculate(String expression) { + Stack stack = new Stack<>(); + String[] tokens = expression.split("\\s+"); + for (String token : tokens) { + if (isOperator(token)) { + double b = stack.pop(); + double a = stack.pop(); + stack.push(applyOperation(a, b, token)); + } else { + stack.push(Double.parseDouble(token)); + } + } + return stack.pop(); + } +} diff --git a/students/23K0087/23K0087-p22/src/main/java/ru/mirea/practice/s23k0087/task1/Tester.java b/students/23K0087/23K0087-p22/src/main/java/ru/mirea/practice/s23k0087/task1/Tester.java new file mode 100644 index 000000000..ce3732e90 --- /dev/null +++ b/students/23K0087/23K0087-p22/src/main/java/ru/mirea/practice/s23k0087/task1/Tester.java @@ -0,0 +1,10 @@ +package ru.mirea.practice.s23k0087.task1; + +public abstract class Tester { + public static void main(String[] args) { + String expression = "4 8 - 2 / 7 *"; + System.out.println("Calculating ((4 - 8) / 2) * 7"); + double result = Calculator.calculate(expression); + System.out.println("Result: " + result); + } +} diff --git a/students/23K0087/23K0087-p23/pom.xml b/students/23K0087/23K0087-p23/pom.xml new file mode 100644 index 000000000..b6b4fe266 --- /dev/null +++ b/students/23K0087/23K0087-p23/pom.xml @@ -0,0 +1,13 @@ + + + 4.0.0 + + 23K0087 + ru.mirea.practice + 2024.1 + ../pom.xml + + 23K0087-p23 + Двадцать третье задание + diff --git a/students/23K0087/23K0087-p23/src/main/java/ru/mirea/practice/s23k0087/task1/ArrayQueue.java b/students/23K0087/23K0087-p23/src/main/java/ru/mirea/practice/s23k0087/task1/ArrayQueue.java new file mode 100644 index 000000000..d94832132 --- /dev/null +++ b/students/23K0087/23K0087-p23/src/main/java/ru/mirea/practice/s23k0087/task1/ArrayQueue.java @@ -0,0 +1,58 @@ +package ru.mirea.practice.s23k0087.task1; + +public final class ArrayQueue { + + private Object[] queue = new Object[16]; + private int head = 0; + private int tail = 0; + private int size = 0; + + public static ArrayQueue createQueue() { + return new ArrayQueue(); + } + + public void enqueue(Object element) { + ensureCapacity(size + 1); + queue[tail] = element; + tail = (tail + 1) % queue.length; + size++; + } + + public Object getFirstElement() { + return queue[head]; + } + + public Object dequeue() { + Object result; + result = queue[head]; + queue[head] = null; + head = (head + 1) % queue.length; + size--; + return result; + } + + public int size() { + return size; + } + + public boolean isEmpty() { + return size == 0; + } + + public void clear() { + queue = new Object[16]; + head = tail = size = 0; + } + + private void ensureCapacity(int capacity) { + if (capacity > queue.length) { + Object[] newQueue = new Object[queue.length * 2]; + for (int i = 0; i < size; i++) { + newQueue[i] = queue[(head + i) % queue.length]; + } + queue = newQueue; + head = 0; + tail = size; + } + } +} diff --git a/students/23K0087/23K0087-p23/src/main/java/ru/mirea/practice/s23k0087/task1/ArrayQueueAdt.java b/students/23K0087/23K0087-p23/src/main/java/ru/mirea/practice/s23k0087/task1/ArrayQueueAdt.java new file mode 100644 index 000000000..ddfbe089e --- /dev/null +++ b/students/23K0087/23K0087-p23/src/main/java/ru/mirea/practice/s23k0087/task1/ArrayQueueAdt.java @@ -0,0 +1,54 @@ +package ru.mirea.practice.s23k0087.task1; + +public final class ArrayQueueAdt { + + private Object[] queue = new Object[16]; + private int head = 0; + private int tail = 0; + private int size = 0; + + public static void enqueue(ArrayQueueAdt queueAdt, Object element) { + ensureCapacity(queueAdt, queueAdt.size + 1); + queueAdt.queue[queueAdt.tail] = element; + queueAdt.tail = (queueAdt.tail + 1) % queueAdt.queue.length; + queueAdt.size++; + } + + public static Object getFirstElement(ArrayQueueAdt queueAdt) { + return queueAdt.queue[queueAdt.head]; + } + + public static Object dequeue(ArrayQueueAdt queueAdt) { + Object result; + result = queueAdt.queue[queueAdt.head]; + queueAdt.queue[queueAdt.head] = null; + queueAdt.head = (queueAdt.head + 1) % queueAdt.queue.length; + queueAdt.size--; + return result; + } + + public static int size(ArrayQueueAdt queueAdt) { + return queueAdt.size; + } + + public static boolean isEmpty(ArrayQueueAdt queueAdt) { + return queueAdt.size == 0; + } + + public static void clear(ArrayQueueAdt queueAdt) { + queueAdt.queue = new Object[16]; + queueAdt.head = queueAdt.tail = queueAdt.size = 0; + } + + private static void ensureCapacity(ArrayQueueAdt queueAdt, int capacity) { + if (capacity > queueAdt.queue.length) { + Object[] newQueue = new Object[queueAdt.queue.length * 2]; + for (int i = 0; i < queueAdt.size; i++) { + newQueue[i] = queueAdt.queue[(queueAdt.head + i) % queueAdt.queue.length]; + } + queueAdt.queue = newQueue; + queueAdt.head = 0; + queueAdt.tail = queueAdt.size; + } + } +} diff --git a/students/23K0087/23K0087-p23/src/main/java/ru/mirea/practice/s23k0087/task1/ArrayQueueModule.java b/students/23K0087/23K0087-p23/src/main/java/ru/mirea/practice/s23k0087/task1/ArrayQueueModule.java new file mode 100644 index 000000000..01f52f97f --- /dev/null +++ b/students/23K0087/23K0087-p23/src/main/java/ru/mirea/practice/s23k0087/task1/ArrayQueueModule.java @@ -0,0 +1,58 @@ +package ru.mirea.practice.s23k0087.task1; + +public final class ArrayQueueModule { + + private ArrayQueueModule() { + } + + private static final int INITIAL_CAPACITY = 16; + private static Object[] queue = new Object[INITIAL_CAPACITY]; + private static int head = 0; + private static int tail = 0; + private static int size = 0; + + public static void enqueue(Object element) { + ensureCapacity(size + 1); + queue[tail] = element; + tail = (tail + 1) % queue.length; + size++; + } + + public static Object getFirstElement() { + return queue[head]; + } + + public static Object dequeue() { + Object result; + result = queue[head]; + queue[head] = null; + head = (head + 1) % queue.length; + size--; + return result; + } + + public static int size() { + return size; + } + + public static boolean isEmpty() { + return size == 0; + } + + public static void clear() { + queue = new Object[INITIAL_CAPACITY]; + head = tail = size = 0; + } + + private static void ensureCapacity(int capacity) { + if (capacity > queue.length) { + Object[] newQueue = new Object[queue.length * 2]; + for (int i = 0; i < size; i++) { + newQueue[i] = queue[(head + i) % queue.length]; + } + queue = newQueue; + head = 0; + tail = size; + } + } +} diff --git a/students/23K0087/23K0087-p23/src/main/java/ru/mirea/practice/s23k0087/task1/Tester.java b/students/23K0087/23K0087-p23/src/main/java/ru/mirea/practice/s23k0087/task1/Tester.java new file mode 100644 index 000000000..d9ce138ae --- /dev/null +++ b/students/23K0087/23K0087-p23/src/main/java/ru/mirea/practice/s23k0087/task1/Tester.java @@ -0,0 +1,39 @@ +package ru.mirea.practice.s23k0087.task1; + +public abstract class Tester { + public static void main(String[] args) { + ArrayQueueModule.enqueue(0); + ArrayQueueModule.enqueue(1); + ArrayQueueModule.enqueue(2); + ArrayQueueModule.enqueue(3); + System.out.println("The first element: " + ArrayQueueModule.getFirstElement()); + ArrayQueueModule.dequeue(); + System.out.println("Current size: " + ArrayQueueModule.size()); + System.out.println("Queue is empty = " + ArrayQueueModule.isEmpty()); + ArrayQueueModule.clear(); + System.out.println("Queue is empty = " + ArrayQueueModule.isEmpty()); + System.out.println(); + + ArrayQueueAdt queueAdt = new ArrayQueueAdt(); + ArrayQueueAdt.enqueue(queueAdt, 10); + ArrayQueueAdt.enqueue(queueAdt, 13); + ArrayQueueAdt.enqueue(queueAdt, 23); + System.out.println("The first element: " + ArrayQueueAdt.getFirstElement(queueAdt)); + ArrayQueueAdt.dequeue(queueAdt); + System.out.println("Current size: " + ArrayQueueAdt.size(queueAdt)); + System.out.println("Queue is empty = " + ArrayQueueAdt.isEmpty(queueAdt)); + ArrayQueueAdt.clear(queueAdt); + System.out.println("Queue is empty = " + ArrayQueueAdt.isEmpty(queueAdt)); + System.out.println(); + + ArrayQueue queue = new ArrayQueue(); + queue.enqueue(301); + queue.enqueue(632); + System.out.println("The first element: " + queue.getFirstElement()); + queue.dequeue(); + System.out.println("Current size: " + queue.size()); + System.out.println("Queue is empty = " + queue.isEmpty()); + queue.clear(); + System.out.println("Queue is empty = " + queue.isEmpty()); + } +} diff --git a/students/23K0087/23K0087-p23/src/main/java/ru/mirea/practice/s23k0087/task2/AbstractQueue.java b/students/23K0087/23K0087-p23/src/main/java/ru/mirea/practice/s23k0087/task2/AbstractQueue.java new file mode 100644 index 000000000..a5f6f5ea0 --- /dev/null +++ b/students/23K0087/23K0087-p23/src/main/java/ru/mirea/practice/s23k0087/task2/AbstractQueue.java @@ -0,0 +1,29 @@ +package ru.mirea.practice.s23k0087.task2; + +import java.util.AbstractList; + +public abstract class AbstractQueue implements Queue { + private int size; + private AbstractList list; + + @Override + public abstract void enqueue(T element); + + @Override + public abstract T dequeue(); + + @Override + public int size() { + return size; + } + + @Override + public boolean isEmpty() { + return list.isEmpty(); + } + + @Override + public void clear() { + list.clear(); + } +} diff --git a/students/23K0087/23K0087-p23/src/main/java/ru/mirea/practice/s23k0087/task2/LinkedQueue.java b/students/23K0087/23K0087-p23/src/main/java/ru/mirea/practice/s23k0087/task2/LinkedQueue.java new file mode 100644 index 000000000..f3bf4eb1e --- /dev/null +++ b/students/23K0087/23K0087-p23/src/main/java/ru/mirea/practice/s23k0087/task2/LinkedQueue.java @@ -0,0 +1,49 @@ +package ru.mirea.practice.s23k0087.task2; + +import java.util.Collection; +import java.util.LinkedList; +import java.util.List; + +public class LinkedQueue implements Queue { + private final List linkedList; + private int size; + + LinkedQueue(Collection collection) { + linkedList = new LinkedList<>(collection); + this.size = collection.size(); + } + + LinkedQueue() { + linkedList = new LinkedList<>(); + this.size = 0; + } + + @Override + public void enqueue(T element) { + linkedList.add(size - 1, element); + size += 1; + } + + @Override + public T dequeue() { + T element = linkedList.get(0); + linkedList.remove(0); + size -= 1; + return element; + } + + @Override + public int size() { + return size; + } + + @Override + public boolean isEmpty() { + return linkedList.isEmpty(); + } + + @Override + public void clear() { + linkedList.clear(); + } +} diff --git a/students/23K0087/23K0087-p23/src/main/java/ru/mirea/practice/s23k0087/task2/Queue.java b/students/23K0087/23K0087-p23/src/main/java/ru/mirea/practice/s23k0087/task2/Queue.java new file mode 100644 index 000000000..5307035c9 --- /dev/null +++ b/students/23K0087/23K0087-p23/src/main/java/ru/mirea/practice/s23k0087/task2/Queue.java @@ -0,0 +1,13 @@ +package ru.mirea.practice.s23k0087.task2; + +public interface Queue { + void enqueue(T element); + + T dequeue(); + + int size(); + + boolean isEmpty(); + + void clear(); +} diff --git a/students/23K0087/23K0087-p24/pom.xml b/students/23K0087/23K0087-p24/pom.xml new file mode 100644 index 000000000..29f0446d9 --- /dev/null +++ b/students/23K0087/23K0087-p24/pom.xml @@ -0,0 +1,13 @@ + + + 4.0.0 + + 23K0087 + ru.mirea.practice + 2024.1 + ../pom.xml + + 23K0087-p24 + Двадцать четвёртое задание + diff --git a/students/23K0087/23K0087-p24/src/main/java/ru/mirea/practice/s23k0087/task1/Complex.java b/students/23K0087/23K0087-p24/src/main/java/ru/mirea/practice/s23k0087/task1/Complex.java new file mode 100644 index 000000000..a3579c4e6 --- /dev/null +++ b/students/23K0087/23K0087-p24/src/main/java/ru/mirea/practice/s23k0087/task1/Complex.java @@ -0,0 +1,44 @@ +package ru.mirea.practice.s23k0087.task1; + + +public class Complex { + private double real; + private double imag; + + public Complex(double real, double imag) { + this.real = real; + this.imag = imag; + } + + public Complex() { + this.real = 0; + this.imag = 0; + } + + public double getReal() { + return real; + } + + public void setReal(double real) { + this.real = real; + } + + public double getImag() { + return imag; + } + + public void setImag(double imag) { + this.imag = imag; + } + + @Override + public String toString() { + String complexString; + if (imag >= 0) { + complexString = String.format("%f + %fi", real, imag); + } else { + complexString = String.format("%f - %fi", real, Math.abs(imag)); + } + return complexString; + } +} diff --git a/students/23K0087/23K0087-p24/src/main/java/ru/mirea/practice/s23k0087/task1/ComplexAbstractFactory.java b/students/23K0087/23K0087-p24/src/main/java/ru/mirea/practice/s23k0087/task1/ComplexAbstractFactory.java new file mode 100644 index 000000000..dc77e8d61 --- /dev/null +++ b/students/23K0087/23K0087-p24/src/main/java/ru/mirea/practice/s23k0087/task1/ComplexAbstractFactory.java @@ -0,0 +1,7 @@ +package ru.mirea.practice.s23k0087.task1; + +public interface ComplexAbstractFactory { + Complex createComplex(); + + Complex createComplex(int real, int imag); +} diff --git a/students/23K0087/23K0087-p24/src/main/java/ru/mirea/practice/s23k0087/task1/ComplexFactory.java b/students/23K0087/23K0087-p24/src/main/java/ru/mirea/practice/s23k0087/task1/ComplexFactory.java new file mode 100644 index 000000000..28a1b1953 --- /dev/null +++ b/students/23K0087/23K0087-p24/src/main/java/ru/mirea/practice/s23k0087/task1/ComplexFactory.java @@ -0,0 +1,13 @@ +package ru.mirea.practice.s23k0087.task1; + +public class ComplexFactory implements ComplexAbstractFactory { + @Override + public Complex createComplex() { + return new Complex(); + } + + @Override + public Complex createComplex(int real, int imag) { + return new Complex(real, imag); + } +} diff --git a/students/23K0087/23K0087-p24/src/main/java/ru/mirea/practice/s23k0087/task2/AbstractChairFactory.java b/students/23K0087/23K0087-p24/src/main/java/ru/mirea/practice/s23k0087/task2/AbstractChairFactory.java new file mode 100644 index 000000000..46a1b1d70 --- /dev/null +++ b/students/23K0087/23K0087-p24/src/main/java/ru/mirea/practice/s23k0087/task2/AbstractChairFactory.java @@ -0,0 +1,9 @@ +package ru.mirea.practice.s23k0087.task2; + +public interface AbstractChairFactory { + VictorianChair createVictorianChair(); + + MagicChair createMagicChair(); + + FunctionalChair createFunctionalChair(); +} diff --git a/students/23K0087/23K0087-p24/src/main/java/ru/mirea/practice/s23k0087/task2/Chair.java b/students/23K0087/23K0087-p24/src/main/java/ru/mirea/practice/s23k0087/task2/Chair.java new file mode 100644 index 000000000..ab120ef93 --- /dev/null +++ b/students/23K0087/23K0087-p24/src/main/java/ru/mirea/practice/s23k0087/task2/Chair.java @@ -0,0 +1,5 @@ +package ru.mirea.practice.s23k0087.task2; + +public interface Chair { + void sit(); +} diff --git a/students/23K0087/23K0087-p24/src/main/java/ru/mirea/practice/s23k0087/task2/ChairFactory.java b/students/23K0087/23K0087-p24/src/main/java/ru/mirea/practice/s23k0087/task2/ChairFactory.java new file mode 100644 index 000000000..17cebda33 --- /dev/null +++ b/students/23K0087/23K0087-p24/src/main/java/ru/mirea/practice/s23k0087/task2/ChairFactory.java @@ -0,0 +1,18 @@ +package ru.mirea.practice.s23k0087.task2; + +public class ChairFactory implements AbstractChairFactory { + @Override + public VictorianChair createVictorianChair() { + return new VictorianChair(); + } + + @Override + public MagicChair createMagicChair() { + return new MagicChair(); + } + + @Override + public FunctionalChair createFunctionalChair() { + return new FunctionalChair(); + } +} diff --git a/students/23K0087/23K0087-p24/src/main/java/ru/mirea/practice/s23k0087/task2/Client.java b/students/23K0087/23K0087-p24/src/main/java/ru/mirea/practice/s23k0087/task2/Client.java new file mode 100644 index 000000000..0d374d749 --- /dev/null +++ b/students/23K0087/23K0087-p24/src/main/java/ru/mirea/practice/s23k0087/task2/Client.java @@ -0,0 +1,17 @@ +package ru.mirea.practice.s23k0087.task2; + +public class Client { + private Chair chair; + + public void setChair(Chair chair) { + this.chair = chair; + } + + public void sit() { + if (chair != null) { + chair.sit(); + } else { + System.out.println("Стул не выбран"); + } + } +} diff --git a/students/23K0087/23K0087-p24/src/main/java/ru/mirea/practice/s23k0087/task2/FunctionalChair.java b/students/23K0087/23K0087-p24/src/main/java/ru/mirea/practice/s23k0087/task2/FunctionalChair.java new file mode 100644 index 000000000..e99e9fa9f --- /dev/null +++ b/students/23K0087/23K0087-p24/src/main/java/ru/mirea/practice/s23k0087/task2/FunctionalChair.java @@ -0,0 +1,8 @@ +package ru.mirea.practice.s23k0087.task2; + +public class FunctionalChair implements Chair { + @Override + public void sit() { + System.out.println("Функцию стула выполняет на 5+."); + } +} diff --git a/students/23K0087/23K0087-p24/src/main/java/ru/mirea/practice/s23k0087/task2/MagicChair.java b/students/23K0087/23K0087-p24/src/main/java/ru/mirea/practice/s23k0087/task2/MagicChair.java new file mode 100644 index 000000000..987e9a1d9 --- /dev/null +++ b/students/23K0087/23K0087-p24/src/main/java/ru/mirea/practice/s23k0087/task2/MagicChair.java @@ -0,0 +1,8 @@ +package ru.mirea.practice.s23k0087.task2; + +public class MagicChair implements Chair { + @Override + public void sit() { + System.out.println("Магическое удобство!!!!!!!!!!!"); + } +} diff --git a/students/23K0087/23K0087-p24/src/main/java/ru/mirea/practice/s23k0087/task2/Tester.java b/students/23K0087/23K0087-p24/src/main/java/ru/mirea/practice/s23k0087/task2/Tester.java new file mode 100644 index 000000000..e61a509bf --- /dev/null +++ b/students/23K0087/23K0087-p24/src/main/java/ru/mirea/practice/s23k0087/task2/Tester.java @@ -0,0 +1,34 @@ +package ru.mirea.practice.s23k0087.task2; + +import java.util.Scanner; + +public abstract class Tester { + public static void main(String[] args) { + try (Scanner scanner = new Scanner(System.in)) { + ChairFactory chairFactory = new ChairFactory(); + Client client = new Client(); + + System.out.println("Есть три стула: \n1. Викторианский\n2. Магический\n3. Функциональный\n" + + "И на каждом можно сидеть!\nВыбирайте: "); + int chairChoice = scanner.nextInt(); + + switch (chairChoice) { + case 1: + client.setChair(chairFactory.createVictorianChair()); + break; + case 2: + client.setChair(chairFactory.createMagicChair()); + break; + case 3: + client.setChair(chairFactory.createFunctionalChair()); + break; + default: + System.out.println("Нет такого стула."); + break; + } + client.sit(); + } catch (RuntimeException e) { + throw e; + } + } +} diff --git a/students/23K0087/23K0087-p24/src/main/java/ru/mirea/practice/s23k0087/task2/VictorianChair.java b/students/23K0087/23K0087-p24/src/main/java/ru/mirea/practice/s23k0087/task2/VictorianChair.java new file mode 100644 index 000000000..d8343d2e1 --- /dev/null +++ b/students/23K0087/23K0087-p24/src/main/java/ru/mirea/practice/s23k0087/task2/VictorianChair.java @@ -0,0 +1,8 @@ +package ru.mirea.practice.s23k0087.task2; + +public class VictorianChair implements Chair { + @Override + public void sit() { + System.out.println("Аристократично и со вкусом."); + } +} diff --git a/students/23K0087/23K0087-p25/pom.xml b/students/23K0087/23K0087-p25/pom.xml new file mode 100644 index 000000000..e2135cb61 --- /dev/null +++ b/students/23K0087/23K0087-p25/pom.xml @@ -0,0 +1,13 @@ + + + 4.0.0 + + 23K0087 + ru.mirea.practice + 2024.1 + ../pom.xml + + 23K0087-p25 + Двадцать пятое задание + diff --git a/students/23K0087/23K0087-p25/src/main/java/ru/mirea/practice/s23k0087/Task1.java b/students/23K0087/23K0087-p25/src/main/java/ru/mirea/practice/s23k0087/Task1.java new file mode 100644 index 000000000..f3b72ddb8 --- /dev/null +++ b/students/23K0087/23K0087-p25/src/main/java/ru/mirea/practice/s23k0087/Task1.java @@ -0,0 +1,19 @@ +package ru.mirea.practice.s23k0087; + +import java.util.regex.Matcher; +import java.util.regex.Pattern; + +public abstract class Task1 { + public static void main(String[] args) { + String text = "25.98 USD.\n 44 ERR\n 0.004 EU.\n 100.00 RUB,\n 75.50 EUR!"; + + String regex = "\\b\\d+\\.\\d{2}\\s+(USD|RUB|EUR)\\b(?=[\n,;!?.]|$)"; + + Pattern pattern = Pattern.compile(regex); + Matcher matcher = pattern.matcher(text); + + while (matcher.find()) { + System.out.println(matcher.group()); + } + } +} diff --git a/students/23K0087/23K0087-p25/src/main/java/ru/mirea/practice/s23k0087/Task4.java b/students/23K0087/23K0087-p25/src/main/java/ru/mirea/practice/s23k0087/Task4.java new file mode 100644 index 000000000..35638092c --- /dev/null +++ b/students/23K0087/23K0087-p25/src/main/java/ru/mirea/practice/s23k0087/Task4.java @@ -0,0 +1,19 @@ +package ru.mirea.practice.s23k0087; + +import java.util.Scanner; +import java.util.regex.Pattern; + +public abstract class Task4 { + public static void main(String[] args) { + Pattern pattern = Pattern.compile("([a-zA-Z.\\d])+@(([a-z]+\\.[a-z]+)|[a-z]+)"); + String input; + try (Scanner scanner = new Scanner(System.in)) { + input = scanner.nextLine(); + } + if (pattern.matcher(input).matches()) { + System.out.println("Input string is a valid email address"); + } else { + System.out.println("Input string is not a valid email address"); + } + } +} diff --git a/students/23K0087/23K0087-p25/src/main/java/ru/mirea/practice/s23k0087/Task5.java b/students/23K0087/23K0087-p25/src/main/java/ru/mirea/practice/s23k0087/Task5.java new file mode 100644 index 000000000..f10aaadf4 --- /dev/null +++ b/students/23K0087/23K0087-p25/src/main/java/ru/mirea/practice/s23k0087/Task5.java @@ -0,0 +1,33 @@ +package ru.mirea.practice.s23k0087; + +import java.util.regex.Pattern; + +public abstract class Task5 { + + private static final String password_pattern = "^(?=.*[A-Z])(?=.*[a-z])(?=.*\\d)[A-Za-z\\d_]{8,}$"; + + private static final Pattern pattern = Pattern.compile(password_pattern); + + public static boolean checkPassword(String password) { + return pattern.matcher(password).matches(); + } + + public static void main(String[] args) { + String[] passwords = { + "F032_Password", + "TrySpy11", + "smart_pass", + "A007", + "Valid_Pass1", + "InvalidPass!", + "Short1_", + "STOOPIDPASS1", + "stoopidpass2", + "Nonuminthis_" + }; + + for (String password : passwords) { + System.out.println("Пароль " + password + " - " + (checkPassword(password) ? "надежный." : "ненадежный!")); + } + } +} diff --git a/students/23K0087/23K0087-p26/pom.xml b/students/23K0087/23K0087-p26/pom.xml new file mode 100644 index 000000000..93df5499d --- /dev/null +++ b/students/23K0087/23K0087-p26/pom.xml @@ -0,0 +1,13 @@ + + + 4.0.0 + + 23K0087 + ru.mirea.practice + 2024.1 + ../pom.xml + + 23K0087-p26 + Двадцать шестое задание + diff --git a/students/23K0087/23K0087-p26/src/main/java/ru/mirea/practice/s23k0087/Task1.java b/students/23K0087/23K0087-p26/src/main/java/ru/mirea/practice/s23k0087/Task1.java new file mode 100644 index 000000000..f715c1f23 --- /dev/null +++ b/students/23K0087/23K0087-p26/src/main/java/ru/mirea/practice/s23k0087/Task1.java @@ -0,0 +1,27 @@ +package ru.mirea.practice.s23k0087; + +import java.util.ArrayList; +import java.util.List; +import java.util.Stack; + +public abstract class Task1 { + public static List reverse(List list) { + Stack stack = new Stack<>(); + int i = 0; + while (i < list.size() / 2) { + stack.push(list.get(i)); + stack.push(list.get(list.size() - i - 1)); + list.set(i, stack.pop()); + list.set(list.size() - i - 1, stack.pop()); + i++; + } + return list; + } + + public static void main(String[] args) { + ArrayList integers = new ArrayList<>(List.of(new Integer[]{1, 2, 3, 4, 5, 6})); + System.out.println(integers); + reverse(integers); + System.out.println(integers); + } +} diff --git a/students/23K0087/23K0087-p26/src/main/java/ru/mirea/practice/s23k0087/tasks2and3/CustomIterator.java b/students/23K0087/23K0087-p26/src/main/java/ru/mirea/practice/s23k0087/tasks2and3/CustomIterator.java new file mode 100644 index 000000000..6791c0484 --- /dev/null +++ b/students/23K0087/23K0087-p26/src/main/java/ru/mirea/practice/s23k0087/tasks2and3/CustomIterator.java @@ -0,0 +1,20 @@ +package ru.mirea.practice.s23k0087.tasks2and3; + +import java.util.Iterator; + +public class CustomIterator implements Iterator { + Node cursor; + + CustomIterator(CustomList list) { + cursor = list.getFirst(); + } + + public boolean hasNext() { + return cursor.getNext() != null; + } + + public T next() { + cursor = cursor.getNext(); + return cursor.getData(); + } +} diff --git a/students/23K0087/23K0087-p26/src/main/java/ru/mirea/practice/s23k0087/tasks2and3/CustomList.java b/students/23K0087/23K0087-p26/src/main/java/ru/mirea/practice/s23k0087/tasks2and3/CustomList.java new file mode 100644 index 000000000..513371564 --- /dev/null +++ b/students/23K0087/23K0087-p26/src/main/java/ru/mirea/practice/s23k0087/tasks2and3/CustomList.java @@ -0,0 +1,39 @@ +package ru.mirea.practice.s23k0087.tasks2and3; + +import java.util.Iterator; + +public class CustomList implements Iterable { + private Node first; + private final int size; + + public CustomList() { + first = null; + size = 0; + } + + public int getSize() { + return size; + } + + public Node getFirst() { + return first; + } + + public void add(T elem) { + Node node = new Node<>(elem); + if (first == null) { + first = node; + } else { + Node curr = first; + while (curr.getNext() != null) { + curr = curr.getNext(); + } + curr.setNext(node); + } + } + + @Override + public Iterator iterator() { + return new CustomIterator<>(this); + } +} diff --git a/students/23K0087/23K0087-p26/src/main/java/ru/mirea/practice/s23k0087/tasks2and3/Node.java b/students/23K0087/23K0087-p26/src/main/java/ru/mirea/practice/s23k0087/tasks2and3/Node.java new file mode 100644 index 000000000..db7bb1986 --- /dev/null +++ b/students/23K0087/23K0087-p26/src/main/java/ru/mirea/practice/s23k0087/tasks2and3/Node.java @@ -0,0 +1,32 @@ +package ru.mirea.practice.s23k0087.tasks2and3; + +public class Node { + private T data; + private Node next; + + public Node(T data) { + this.data = data; + next = null; + } + + public T getData() { + return data; + } + + public void setData(T data) { + this.data = data; + } + + public Node getNext() { + return next; + } + + public void setNext(Node next) { + this.next = next; + } + + @Override + public String toString() { + return data.toString(); + } +} diff --git a/students/23K0087/23K0087-p27/pom.xml b/students/23K0087/23K0087-p27/pom.xml new file mode 100644 index 000000000..1e383febe --- /dev/null +++ b/students/23K0087/23K0087-p27/pom.xml @@ -0,0 +1,13 @@ + + + 4.0.0 + + 23K0087 + ru.mirea.practice + 2024.1 + ../pom.xml + + 23K0087-p27 + Двадцать седьмое задание + diff --git a/students/23K0087/23K0087-p27/src/main/java/ru/mirea/practice/s23k0087/tasksfrom1to3/Hashtab.java b/students/23K0087/23K0087-p27/src/main/java/ru/mirea/practice/s23k0087/tasksfrom1to3/Hashtab.java new file mode 100644 index 000000000..c639aeea0 --- /dev/null +++ b/students/23K0087/23K0087-p27/src/main/java/ru/mirea/practice/s23k0087/tasksfrom1to3/Hashtab.java @@ -0,0 +1,68 @@ +package ru.mirea.practice.s23k0087.tasksfrom1to3; + +import java.util.LinkedList; + +class Hashtab { + private static class KeyValue { + String key; + String value; + + KeyValue(String key, String value) { + this.key = key; + this.value = value; + } + } + + private final LinkedList[] table; + private final int size; + + public Hashtab(int size) { + this.size = size; + table = new LinkedList[size]; + for (int i = 0; i < size; i++) { + table[i] = new LinkedList<>(); + } + } + + private int hash(String key) { + return Math.abs(key.hashCode() % size); + } + + public void add(String key, String value) { + int index = hash(key); + for (KeyValue kv : table[index]) { + if (kv.key.equals(key)) { + kv.value = value; + return; + } + } + table[index].add(new KeyValue(key, value)); + } + + public String lookup(String key) { + int index = hash(key); + for (KeyValue kv : table[index]) { + if (kv.key.equals(key)) { + return kv.value; + } + } + return null; + } + + public void delete(String key) { + int index = hash(key); + table[index].removeIf(kv -> kv.key.equals(key)); // Удаление элемента + } + + public void printTable() { + for (int i = 0; i < size; i++) { + if (!table[i].isEmpty()) { + System.out.print("Bucket " + i + ": "); + for (KeyValue kv : table[i]) { + System.out.print("[" + kv.key + ": " + kv.value + "] "); + } + System.out.println(); + } + } + } +} diff --git a/students/23K0087/23K0087-p27/src/main/java/ru/mirea/practice/s23k0087/tasksfrom1to3/Tester.java b/students/23K0087/23K0087-p27/src/main/java/ru/mirea/practice/s23k0087/tasksfrom1to3/Tester.java new file mode 100644 index 000000000..464464132 --- /dev/null +++ b/students/23K0087/23K0087-p27/src/main/java/ru/mirea/practice/s23k0087/tasksfrom1to3/Tester.java @@ -0,0 +1,25 @@ +package ru.mirea.practice.s23k0087.tasksfrom1to3; + +public abstract class Tester { + public static void main(String[] args) { + Hashtab hashtab = new Hashtab(10); + hashtab.add("key 0", "value 0"); + hashtab.add("key 1", "value 1"); + hashtab.add("key 2", "value 2"); + hashtab.add("key 3", "value 3"); + hashtab.add("key 4", "value 4"); + hashtab.add("key 5", "value 5"); + hashtab.add("key 6", "value 6"); + hashtab.add("key 7", "value 7"); + hashtab.add("key 8", "value 8"); + hashtab.add("key 9", "value 9"); + System.out.println("Hashmap:"); + hashtab.printTable(); + String value = hashtab.lookup("key 2"); + System.out.println("Looking for key 2... " + (value != null ? "Bingo! the value is: " + value : "not found")); + hashtab.delete("key 2"); + hashtab.printTable(); + value = hashtab.lookup("key 2"); + System.out.println("Looking for key 2... " + (value != null ? "Bingo! the value is: " + value : "not found")); + } +} diff --git a/students/23K0087/23K0087-p28/pom.xml b/students/23K0087/23K0087-p28/pom.xml new file mode 100644 index 000000000..e299df945 --- /dev/null +++ b/students/23K0087/23K0087-p28/pom.xml @@ -0,0 +1,13 @@ + + + 4.0.0 + + 23K0087 + ru.mirea.practice + 2024.1 + ../pom.xml + + 23K0087-p28 + Двадцать восьмое задание + diff --git a/students/23K0087/23K0087-p28/src/main/java/ru/mirea/practice/s23k0087/Task1.java b/students/23K0087/23K0087-p28/src/main/java/ru/mirea/practice/s23k0087/Task1.java new file mode 100644 index 000000000..c75a03d16 --- /dev/null +++ b/students/23K0087/23K0087-p28/src/main/java/ru/mirea/practice/s23k0087/Task1.java @@ -0,0 +1,19 @@ +package ru.mirea.practice.s23k0087; + +import java.util.HashMap; +import java.util.Map; +import java.util.TreeMap; + +public abstract class Task1 { + public static void main(String[] args) { + Map hashmap = new HashMap<>(); + hashmap.put(20, 31); + hashmap.put(23, 32); + hashmap.put(9, 92); + hashmap.put(13, 22); + Map treemap = new TreeMap<>(hashmap); + System.out.println(hashmap); + System.out.println(treemap); + } +} + diff --git a/students/23K0087/23K0087-p28/src/main/java/ru/mirea/practice/s23k0087/Task2.java b/students/23K0087/23K0087-p28/src/main/java/ru/mirea/practice/s23k0087/Task2.java new file mode 100644 index 000000000..16a2e32b1 --- /dev/null +++ b/students/23K0087/23K0087-p28/src/main/java/ru/mirea/practice/s23k0087/Task2.java @@ -0,0 +1,44 @@ +package ru.mirea.practice.s23k0087; + +import java.util.HashMap; +import java.util.Map; + +public abstract class Task2 { + + public static int countMatchingNames(Map map) { + Map nameMap = new HashMap<>(); + for (String value : map.values()) { + if (nameMap.containsKey(value)) { + nameMap.put(value, nameMap.get(value) + 1); + } else { + nameMap.put(value, 1); + } + } + + int count = 0; + int nameCount; + for (String name : nameMap.keySet()) { + nameCount = nameMap.get(name); + if (nameCount > 1) { + count += nameCount; + } + } + + return count; + } + + public static void main(String[] args) { + Map map = new HashMap<>(); + map.put("Кузнецов", "Алексей"); + map.put("Сидорова", "Мария"); + map.put("Петров", "Илья"); + map.put("Кузнецова", "Анна"); + map.put("Иванов", "Дмитрий"); + map.put("Петрова", "Мария"); + map.put("Коммисаров", "Алексей"); + map.put("Абсулов", "Даниил"); + map.put("Мазеллов", "Илья"); + map.put("Кирилленко", "Дмитрий"); + System.out.println("Amount of matching names: " + countMatchingNames(map)); + } +} diff --git a/students/23K0087/23K0087-p29/pom.xml b/students/23K0087/23K0087-p29/pom.xml new file mode 100644 index 000000000..a3ce2e5ea --- /dev/null +++ b/students/23K0087/23K0087-p29/pom.xml @@ -0,0 +1,13 @@ + + + 4.0.0 + + 23K0087 + ru.mirea.practice + 2024.1 + ../pom.xml + + 23K0087-p29 + Двадцать девятое задание + diff --git a/students/23K0087/23K0087-p29/src/main/java/ru/mirea/practice/s23k0087/Task1.java b/students/23K0087/23K0087-p29/src/main/java/ru/mirea/practice/s23k0087/Task1.java new file mode 100644 index 000000000..5f14c791b --- /dev/null +++ b/students/23K0087/23K0087-p29/src/main/java/ru/mirea/practice/s23k0087/Task1.java @@ -0,0 +1,21 @@ +package ru.mirea.practice.s23k0087; + +import java.util.Scanner; + +public abstract class Task1 { + public static void main(String[] args) { + try (Scanner scanner = new Scanner(System.in)) { + int n = scanner.nextInt(); + int res = 0; + for (int i = 0; i < n; i++) { + for (int j = 0; j < n; j++) { + res += scanner.nextInt(); + } + } + res /= 2; + System.out.println(res); + } catch (Exception e) { + throw new RuntimeException(e); + } + } +} diff --git a/students/23K0087/23K0087-p30/pom.xml b/students/23K0087/23K0087-p30/pom.xml new file mode 100644 index 000000000..bab5f7a67 --- /dev/null +++ b/students/23K0087/23K0087-p30/pom.xml @@ -0,0 +1,13 @@ + + + 4.0.0 + + 23K0087 + ru.mirea.practice + 2024.1 + ../pom.xml + + 23K0087-p30 + Тридцатое задание, часть 1 + diff --git a/students/23K0087/23K0087-p30/src/main/java/ru/mirea/practice/s23k0087/task1/BinaryTree.java b/students/23K0087/23K0087-p30/src/main/java/ru/mirea/practice/s23k0087/task1/BinaryTree.java new file mode 100644 index 000000000..9efaee3fe --- /dev/null +++ b/students/23K0087/23K0087-p30/src/main/java/ru/mirea/practice/s23k0087/task1/BinaryTree.java @@ -0,0 +1,69 @@ +package ru.mirea.practice.s23k0087.task1; + +public class BinaryTree { + Node root; + + int height(Node node) { + if (node == null) { + return 0; + } + int heightLeft = height(node.left); + int heightRight = height(node.right); + return Math.max(heightLeft, heightRight) + 1; + } + + boolean lookup(Node node, int target) { + if (node == null) { + return false; + } + if (node.data == target) { + return true; + } + if (target < node.data) { + return lookup(node.left, target); + } else { + return lookup(node.right, target); + } + } + + int getMaxWidth(Node root) { + int h = this.height(this.root); + int maxWidth = 0; + for (int i = 1; i <= h; i++) { + int w = getWidth(this.root, i); + if (w > maxWidth) { + maxWidth = w; + } + } + return maxWidth; + } + + int getWidth(Node node, int level) { + if (node == null) { + return 0; + } + if (level == 1) { + return 1; + } + return getWidth(node.left, level - 1) + getWidth(node.right, level - 1); + } + + int size(Node node) { + if (node == null) { + return 0; + } + return size(node.left) + 1 + size(node.right); + } + + 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; + } +} diff --git a/students/23K0087/23K0087-p30/src/main/java/ru/mirea/practice/s23k0087/task1/Node.java b/students/23K0087/23K0087-p30/src/main/java/ru/mirea/practice/s23k0087/task1/Node.java new file mode 100644 index 000000000..0209e685c --- /dev/null +++ b/students/23K0087/23K0087-p30/src/main/java/ru/mirea/practice/s23k0087/task1/Node.java @@ -0,0 +1,13 @@ +package ru.mirea.practice.s23k0087.task1; + +public class Node { + int data; + Node left; + Node right; + + Node(int d) { + data = d; + left = null; + right = null; + } +} diff --git a/students/23K0087/23K0087-p30/src/main/java/ru/mirea/practice/s23k0087/task1/Tester.java b/students/23K0087/23K0087-p30/src/main/java/ru/mirea/practice/s23k0087/task1/Tester.java new file mode 100644 index 000000000..e2b4e2af1 --- /dev/null +++ b/students/23K0087/23K0087-p30/src/main/java/ru/mirea/practice/s23k0087/task1/Tester.java @@ -0,0 +1,24 @@ +package ru.mirea.practice.s23k0087.task1; + +public abstract class Tester { + public static void main(String[] args) { + BinaryTree tree = new BinaryTree(); + tree.root = new Node(2); + tree.root.left = new Node(4); + tree.root.right = new Node(6); + tree.root.left.left = new Node(8); + tree.root.left.right = new Node(10); + System.out.println("Tree height: " + tree.height(tree.root)); + System.out.println("Tree size: " + tree.size(tree.root)); + System.out.println("Max width of the tree: " + tree.getMaxWidth(tree.root)); + int target1 = 5; + System.out.println("Looking for " + target1 + "... " + tree.lookup(tree.root, target1)); + int target2 = 2; + System.out.println("Looking for " + target2 + "... " + tree.lookup(tree.root, target2)); + BinaryTree tree2 = new BinaryTree(); + tree2.root = new Node(1); + tree2.root.left = new Node(1); + tree2.root.right = new Node(1); + System.out.println("Are those trees the same? " + tree.sameTree(tree.root, tree2.root)); + } +} diff --git a/students/23K0087/23K0087-p30_2/pom.xml b/students/23K0087/23K0087-p30_2/pom.xml new file mode 100644 index 000000000..555aa45f6 --- /dev/null +++ b/students/23K0087/23K0087-p30_2/pom.xml @@ -0,0 +1,13 @@ + + + 4.0.0 + + 23K0087 + ru.mirea.practice + 2024.1 + ../pom.xml + + 23K0087-p30_2 + Тридцатое задание, часть 2 + diff --git a/students/23K0087/23K0087-p30_2/src/main/java/ru/mirea/practice/s23k0087/task1/BinarySearchTree.java b/students/23K0087/23K0087-p30_2/src/main/java/ru/mirea/practice/s23k0087/task1/BinarySearchTree.java new file mode 100644 index 000000000..6567a4264 --- /dev/null +++ b/students/23K0087/23K0087-p30_2/src/main/java/ru/mirea/practice/s23k0087/task1/BinarySearchTree.java @@ -0,0 +1,199 @@ +package ru.mirea.practice.s23k0087.task1; + + +public class BinarySearchTree> { + private Node root; + private int count; + + public BinarySearchTree() { + root = null; + count = 0; + } + + public Node getRoot() { + return root; + } + + public void setRoot(Node root) { + this.root = root; + } + + public int getCount() { + return count; + } + + public void setCount(int count) { + this.count = count; + } + + public boolean binSearch(E item) { + Node searchNode; + searchNode = this.getRoot(); + while (true) { + if (searchNode == null) { + return false; + } else if (item.compareTo(searchNode.data) == 0) { + return true; + } else if (item.compareTo(searchNode.data) > 0) { + searchNode = searchNode.getRight(); + } else { + searchNode = searchNode.getLeft(); + } + } + } + + //Cannot remove the root node because of a bug, would've fixed it later if I had time + public boolean insert(E data) { + // True - Inserted + // False - Already exists + if (this.getRoot() == null) { + setRoot(new Node<>(data)); + return true; + } + Node searchNode = getRoot(); + while (true) { + if (data.compareTo(searchNode.getData()) == 0) { + return false; + } else if (data.compareTo(searchNode.getData()) > 0) { + if (searchNode.getRight() == null) { + searchNode.setRight(new Node<>(data)); + return true; + } else { + searchNode = searchNode.getRight(); + } + } else { + if (searchNode.getLeft() == null) { + searchNode.setLeft(new Node<>(data)); + return true; + } else { + searchNode = searchNode.getLeft(); + } + } + } + } + + public boolean delete(E data) { + Node q = getRoot(); + Node z = getRoot(); + while (true) { + if (z == null) { + return false; + } else if (data.compareTo(z.getData()) == 0) { + break; + } else if (data.compareTo(z.getData()) > 0) { + q = z; + z = z.getRight(); + } else { + q = z; + z = z.getLeft(); + } + } + + if (z.getRight() == null) { + if (q.getLeft().equals(z)) { + q.setLeft(z.getLeft()); + } else { + q.setRight(z.getLeft()); + } + } else { + Node y = z.getRight(); + if (y.getLeft() == null) { + y.setLeft(z.getLeft()); + if (q.getLeft().equals(z)) { + q.setLeft(y); + } else { + q.setRight(y); + } + } else { + Node x = y.getLeft(); + while (x.getLeft() != null) { + y = x; + x = y.getLeft(); + } + y.setLeft(x.getRight()); + x.setLeft(z.getLeft()); + x.setRight(z.getRight()); + if (q.getLeft().equals(z)) { + q.setLeft(x); + } else { + q.setRight(x); + } + } + } + this.count -= 1; + return true; + } + + public String walk(Node searchNode) { + if (searchNode == null) { + return ""; + } + String string = ""; + string += searchNode.getData(); + string += " "; + string += walk(searchNode.getLeft()); + string += walk(searchNode.getRight()); + return string; + } + + public E min() { + Node searchNode; + searchNode = this.root; + while (searchNode.getLeft() != null) { + searchNode = searchNode.getLeft(); + } + return searchNode.getData(); + } + + public E max() { + Node searchNode; + searchNode = this.root; + while (searchNode.getRight() != null) { + searchNode = searchNode.getRight(); + } + return searchNode.getData(); + } + + @Override + public String toString() { + return walk(getRoot()); + } + + class Node { + private E data; + private Node left; + private Node right; + + public Node() { + // Default constructor + } + + public Node(E data) { + this.data = data; + } + + public E getData() { + return data; + } + + public void setData(E data) { + this.data = data; + } + + public Node getLeft() { + return left; + } + + public void setLeft(Node left) { + this.left = left; + } + + public Node getRight() { + return right; + } + + public void setRight(Node right) { + this.right = right; + } + } +} diff --git a/students/23K0087/23K0087-p30_2/src/main/java/ru/mirea/practice/s23k0087/task1/IntegerBinarySearchTree.java b/students/23K0087/23K0087-p30_2/src/main/java/ru/mirea/practice/s23k0087/task1/IntegerBinarySearchTree.java new file mode 100644 index 000000000..07892857f --- /dev/null +++ b/students/23K0087/23K0087-p30_2/src/main/java/ru/mirea/practice/s23k0087/task1/IntegerBinarySearchTree.java @@ -0,0 +1,23 @@ +package ru.mirea.practice.s23k0087.task1; + + +public class IntegerBinarySearchTree extends BinarySearchTree { + IntegerBinarySearchTree() { + super(); + } + + public boolean isBst(Node node) { + return isBstUtil(node, Integer.MIN_VALUE, Integer.MAX_VALUE); + } + + private boolean isBstUtil(Node node, int minValue, int maxValue) { + if (node == null) { + return true; + } + if (node.getData() < minValue || node.getData() > maxValue) { + return false; + } + return isBstUtil(node.getLeft(), minValue, node.getData()) && isBstUtil(node.getRight(), node.getData() + 1, maxValue); + } + +} diff --git a/students/23K0087/23K0087-p30_2/src/main/java/ru/mirea/practice/s23k0087/task1/Main.java b/students/23K0087/23K0087-p30_2/src/main/java/ru/mirea/practice/s23k0087/task1/Main.java new file mode 100644 index 000000000..f66fd7741 --- /dev/null +++ b/students/23K0087/23K0087-p30_2/src/main/java/ru/mirea/practice/s23k0087/task1/Main.java @@ -0,0 +1,15 @@ +package ru.mirea.practice.s23k0087.task1; + + +public abstract class Main { + public static void main(String[] args) { + IntegerBinarySearchTree integerSearch = new IntegerBinarySearchTree(); + int[] array = {11, 10, 1, 3, 5, 63, 32, 2, 23, 4}; + for (int i : array) { + integerSearch.insert(i); + } + System.out.println(integerSearch); + integerSearch.delete(10); + System.out.println(integerSearch); + } +} diff --git a/students/23K0087/23K0087-p32/pom.xml b/students/23K0087/23K0087-p32/pom.xml new file mode 100644 index 000000000..ed5036643 --- /dev/null +++ b/students/23K0087/23K0087-p32/pom.xml @@ -0,0 +1,13 @@ + + + 4.0.0 + + 23K0087 + ru.mirea.practice + 2024.1 + ../pom.xml + + 23K0087-p32 + Тридцать второе задание + diff --git a/students/23K0087/23K0087-p32/src/main/java/ru/mirea/practice/s23k0087/Task1.java b/students/23K0087/23K0087-p32/src/main/java/ru/mirea/practice/s23k0087/Task1.java new file mode 100644 index 000000000..faae3bace --- /dev/null +++ b/students/23K0087/23K0087-p32/src/main/java/ru/mirea/practice/s23k0087/Task1.java @@ -0,0 +1,42 @@ +package ru.mirea.practice.s23k0087; + + +public abstract class Task1 { + public static void perm(int n) { + int[] p = new int[n]; + int[] pi = new int[n]; + int[] dir = new int[n]; + for (int i = 0; i < n; i++) { + dir[i] = -1; + p[i] = i; + pi[i] = i; + } + perm(0, p, pi, dir); + System.out.println(" (0 1)"); + } + + public static void perm(int n, int[] p, int[] pi, int[] dir) { + if (n >= p.length) { + for (int j : p) { + System.out.println(j); + } + return; + } + perm(n + 1, p, pi, dir); + for (int i = 0; i <= n - 1; i++) { + System.out.printf(" (%d %d)\n", pi[n], pi[n] + dir[n]); + int z = p[pi[n] + dir[n]]; + p[pi[n]] = z; + p[pi[n] + dir[n]] = n; + pi[z] = pi[n]; + pi[n] = pi[n] + dir[n]; + + perm(n + 1, p, pi, dir); + } + dir[n] = -dir[n]; + } + + public static void main(String[] args) { + perm(5); + } +} diff --git a/students/23K0087/pom.xml b/students/23K0087/pom.xml index cf4c44512..ab896ecc2 100644 --- a/students/23K0087/pom.xml +++ b/students/23K0087/pom.xml @@ -34,5 +34,17 @@ 23K0087-p18 23K0087-p19 23K0087-p20 + 23K0087-p21 + 23K0087-p22 + 23K0087-p23 + 23K0087-p24 + 23K0087-p25 + 23K0087-p26 + 23K0087-p27 + 23K0087-p28 + 23K0087-p29 + 23K0087-p30 + 23K0087-p30_2 + 23K0087-p32