From 3bb31f1c5a891825fd0cc14a55be789d05ba8f8c Mon Sep 17 00:00:00 2001 From: AraneWiFi Date: Fri, 13 Dec 2024 11:02:16 +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=20=D1=80=D0=B0=D0=B1=D0=BE=D1=82?= =?UTF-8?q?=D1=8B=20=E2=84=9621-30?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- students/23K0350/23K0350-p21-retry/pom.xml | 13 +++ .../practice/s23k0350/task1/AnyArray.java | 24 ++++++ .../mirea/practice/s23k0350/task1/Main.java | 20 +++++ .../s23k0350/task2/AnyArrayElecBug.java | 10 +++ .../mirea/practice/s23k0350/task2/Main.java | 18 ++++ .../practice/s23k0350/task2/TestHuman.java | 15 ++++ students/23K0350/23K0350-p22/pom.xml | 13 +++ .../java/ru/mirea/practice/s23k0350/Main.java | 10 +++ .../practice/s23k0350/RpnCalculator.java | 55 ++++++++++++ students/23K0350/23K0350-p23/pom.xml | 13 +++ .../practice/s23k0350/AbstractQueue.java | 15 ++++ .../mirea/practice/s23k0350/LinkedQueue.java | 56 +++++++++++++ .../java/ru/mirea/practice/s23k0350/Node.java | 12 +++ .../ru/mirea/practice/s23k0350/Queue.java | 13 +++ students/23K0350/23K0350-p24/pom.xml | 13 +++ .../ru/mirea/practice/s23k0350/Chair.java | 5 ++ .../mirea/practice/s23k0350/ChairFactory.java | 5 ++ .../ru/mirea/practice/s23k0350/Client.java | 7 ++ .../mirea/practice/s23k0350/MagicalChair.java | 8 ++ .../s23k0350/MagicalChairFactory.java | 9 ++ .../ru/mirea/practice/s23k0350/Maine.java | 20 +++++ .../s23k0350/MultifunctionalChair.java | 9 ++ .../s23k0350/MultifunctionalChairFactory.java | 9 ++ .../practice/s23k0350/VictorianChair.java | 9 ++ .../s23k0350/VictorianChairFactory.java | 9 ++ students/23K0350/23K0350-p25/pom.xml | 13 +++ .../mirea/practice/s23k0350/PlusFinder.java | 22 +++++ students/23K0350/23K0350-p26/pom.xml | 13 +++ .../practice/s23k0350/ArrayInverter.java | 21 +++++ .../ru/mirea/practice/s23k0350/MainArray.java | 11 +++ students/23K0350/23K0350-p27/pom.xml | 13 +++ .../ru/mirea/practice/s23k0350/HashTab.java | 58 +++++++++++++ .../ru/mirea/practice/s23k0350/Main27.java | 12 +++ students/23K0350/23K0350-p28/pom.xml | 13 +++ .../ru/mirea/practice/s23k0350/Main28.java | 12 +++ .../ru/mirea/practice/s23k0350/NameMap.java | 56 +++++++++++++ students/23K0350/23K0350-p29/pom.xml | 13 +++ .../ru/mirea/practice/s23k0350/Main29.java | 8 ++ .../practice/s23k0350/SolutionMilkyWay.java | 30 +++++++ students/23K0350/23K0350-p30/pom.xml | 13 +++ .../practice/s23k0350/pt1/HuffmanCoding.java | 37 +++++++++ .../mirea/practice/s23k0350/pt1/Main30.java | 13 +++ .../ru/mirea/practice/s23k0350/pt1/Node.java | 15 ++++ .../s23k0350/pt2/BinarySearchTree.java | 83 +++++++++++++++++++ .../practice/s23k0350/pt2/Main30pt2.java | 22 +++++ .../mirea/practice/s23k0350/pt2/TreeNode.java | 12 +++ students/23K0350/pom.xml | 10 +++ 47 files changed, 890 insertions(+) create mode 100644 students/23K0350/23K0350-p21-retry/pom.xml create mode 100644 students/23K0350/23K0350-p21-retry/src/main/java/ru/mirea/practice/s23k0350/task1/AnyArray.java create mode 100644 students/23K0350/23K0350-p21-retry/src/main/java/ru/mirea/practice/s23k0350/task1/Main.java create mode 100644 students/23K0350/23K0350-p21-retry/src/main/java/ru/mirea/practice/s23k0350/task2/AnyArrayElecBug.java create mode 100644 students/23K0350/23K0350-p21-retry/src/main/java/ru/mirea/practice/s23k0350/task2/Main.java create mode 100644 students/23K0350/23K0350-p21-retry/src/main/java/ru/mirea/practice/s23k0350/task2/TestHuman.java create mode 100644 students/23K0350/23K0350-p22/pom.xml create mode 100644 students/23K0350/23K0350-p22/src/main/java/ru/mirea/practice/s23k0350/Main.java create mode 100644 students/23K0350/23K0350-p22/src/main/java/ru/mirea/practice/s23k0350/RpnCalculator.java create mode 100644 students/23K0350/23K0350-p23/pom.xml create mode 100644 students/23K0350/23K0350-p23/src/main/java/ru/mirea/practice/s23k0350/AbstractQueue.java create mode 100644 students/23K0350/23K0350-p23/src/main/java/ru/mirea/practice/s23k0350/LinkedQueue.java create mode 100644 students/23K0350/23K0350-p23/src/main/java/ru/mirea/practice/s23k0350/Node.java create mode 100644 students/23K0350/23K0350-p23/src/main/java/ru/mirea/practice/s23k0350/Queue.java create mode 100644 students/23K0350/23K0350-p24/pom.xml create mode 100644 students/23K0350/23K0350-p24/src/main/java/ru/mirea/practice/s23k0350/Chair.java create mode 100644 students/23K0350/23K0350-p24/src/main/java/ru/mirea/practice/s23k0350/ChairFactory.java create mode 100644 students/23K0350/23K0350-p24/src/main/java/ru/mirea/practice/s23k0350/Client.java create mode 100644 students/23K0350/23K0350-p24/src/main/java/ru/mirea/practice/s23k0350/MagicalChair.java create mode 100644 students/23K0350/23K0350-p24/src/main/java/ru/mirea/practice/s23k0350/MagicalChairFactory.java create mode 100644 students/23K0350/23K0350-p24/src/main/java/ru/mirea/practice/s23k0350/Maine.java create mode 100644 students/23K0350/23K0350-p24/src/main/java/ru/mirea/practice/s23k0350/MultifunctionalChair.java create mode 100644 students/23K0350/23K0350-p24/src/main/java/ru/mirea/practice/s23k0350/MultifunctionalChairFactory.java create mode 100644 students/23K0350/23K0350-p24/src/main/java/ru/mirea/practice/s23k0350/VictorianChair.java create mode 100644 students/23K0350/23K0350-p24/src/main/java/ru/mirea/practice/s23k0350/VictorianChairFactory.java create mode 100644 students/23K0350/23K0350-p25/pom.xml create mode 100644 students/23K0350/23K0350-p25/src/main/java/ru/mirea/practice/s23k0350/PlusFinder.java create mode 100644 students/23K0350/23K0350-p26/pom.xml create mode 100644 students/23K0350/23K0350-p26/src/main/java/ru/mirea/practice/s23k0350/ArrayInverter.java create mode 100644 students/23K0350/23K0350-p26/src/main/java/ru/mirea/practice/s23k0350/MainArray.java create mode 100644 students/23K0350/23K0350-p27/pom.xml create mode 100644 students/23K0350/23K0350-p27/src/main/java/ru/mirea/practice/s23k0350/HashTab.java create mode 100644 students/23K0350/23K0350-p27/src/main/java/ru/mirea/practice/s23k0350/Main27.java create mode 100644 students/23K0350/23K0350-p28/pom.xml create mode 100644 students/23K0350/23K0350-p28/src/main/java/ru/mirea/practice/s23k0350/Main28.java create mode 100644 students/23K0350/23K0350-p28/src/main/java/ru/mirea/practice/s23k0350/NameMap.java create mode 100644 students/23K0350/23K0350-p29/pom.xml create mode 100644 students/23K0350/23K0350-p29/src/main/java/ru/mirea/practice/s23k0350/Main29.java create mode 100644 students/23K0350/23K0350-p29/src/main/java/ru/mirea/practice/s23k0350/SolutionMilkyWay.java create mode 100644 students/23K0350/23K0350-p30/pom.xml create mode 100644 students/23K0350/23K0350-p30/src/main/java/ru/mirea/practice/s23k0350/pt1/HuffmanCoding.java create mode 100644 students/23K0350/23K0350-p30/src/main/java/ru/mirea/practice/s23k0350/pt1/Main30.java create mode 100644 students/23K0350/23K0350-p30/src/main/java/ru/mirea/practice/s23k0350/pt1/Node.java create mode 100644 students/23K0350/23K0350-p30/src/main/java/ru/mirea/practice/s23k0350/pt2/BinarySearchTree.java create mode 100644 students/23K0350/23K0350-p30/src/main/java/ru/mirea/practice/s23k0350/pt2/Main30pt2.java create mode 100644 students/23K0350/23K0350-p30/src/main/java/ru/mirea/practice/s23k0350/pt2/TreeNode.java diff --git a/students/23K0350/23K0350-p21-retry/pom.xml b/students/23K0350/23K0350-p21-retry/pom.xml new file mode 100644 index 000000000..23e66cbd9 --- /dev/null +++ b/students/23K0350/23K0350-p21-retry/pom.xml @@ -0,0 +1,13 @@ + + + 4.0.0 + + 23K0350 + ru.mirea.practice + 2024.1 + ../pom.xml + + 23K0350-p21 + Стирание типов + diff --git a/students/23K0350/23K0350-p21-retry/src/main/java/ru/mirea/practice/s23k0350/task1/AnyArray.java b/students/23K0350/23K0350-p21-retry/src/main/java/ru/mirea/practice/s23k0350/task1/AnyArray.java new file mode 100644 index 000000000..38f31a629 --- /dev/null +++ b/students/23K0350/23K0350-p21-retry/src/main/java/ru/mirea/practice/s23k0350/task1/AnyArray.java @@ -0,0 +1,24 @@ +package ru.mirea.practice.s23k0350.task1; + +import java.util.ArrayList; +import java.util.List; + +public class AnyArray { + public List array; + + public AnyArray() { + this.array = new ArrayList<>(); + } + + public void add(T item) { + array.add(item); + } + + + public void printElements() { + for (T item: array) { + System.out.println(item.toString()); + } + } + +} \ No newline at end of file diff --git a/students/23K0350/23K0350-p21-retry/src/main/java/ru/mirea/practice/s23k0350/task1/Main.java b/students/23K0350/23K0350-p21-retry/src/main/java/ru/mirea/practice/s23k0350/task1/Main.java new file mode 100644 index 000000000..c71e8b6ce --- /dev/null +++ b/students/23K0350/23K0350-p21-retry/src/main/java/ru/mirea/practice/s23k0350/task1/Main.java @@ -0,0 +1,20 @@ +package ru.mirea.practice.s23k0350.task1; + + +import ru.mirea.practice.s23k0350.task2.TestHuman; + +abstract class Main { + public static void main(String[] args) { + AnyArray testing = new AnyArray<>(); + TestHuman female = new TestHuman("Natasha", 27); + testing.add(10); + testing.add("Hello"); + testing.add(true); + testing.add(3.14); + testing.add(female); + System.out.println("Elements:"); + testing.printElements(); + } +} + + diff --git a/students/23K0350/23K0350-p21-retry/src/main/java/ru/mirea/practice/s23k0350/task2/AnyArrayElecBug.java b/students/23K0350/23K0350-p21-retry/src/main/java/ru/mirea/practice/s23k0350/task2/AnyArrayElecBug.java new file mode 100644 index 000000000..14f5c0c90 --- /dev/null +++ b/students/23K0350/23K0350-p21-retry/src/main/java/ru/mirea/practice/s23k0350/task2/AnyArrayElecBug.java @@ -0,0 +1,10 @@ +package ru.mirea.practice.s23k0350.task2; + + +import ru.mirea.practice.s23k0350.task1.AnyArray; + +public class AnyArrayElecBug extends AnyArray { + public T returnElement(int index) { + return array.get(index); + } +} diff --git a/students/23K0350/23K0350-p21-retry/src/main/java/ru/mirea/practice/s23k0350/task2/Main.java b/students/23K0350/23K0350-p21-retry/src/main/java/ru/mirea/practice/s23k0350/task2/Main.java new file mode 100644 index 000000000..ca936f878 --- /dev/null +++ b/students/23K0350/23K0350-p21-retry/src/main/java/ru/mirea/practice/s23k0350/task2/Main.java @@ -0,0 +1,18 @@ +package ru.mirea.practice.s23k0350.task2; + + +abstract class Main { + public static void main(String[] args) { + AnyArrayElecBug test = new AnyArrayElecBug<>(); + TestHuman male = new TestHuman("Oleg", 35); + test.add(10); + test.add(male); + test.add("Hello"); + test.add(true); + test.add(3.14); + System.out.println("Elements:"); + test.printElements(); + System.out.println("w/ Index:\n" + test.returnElement(1)); + + } +} diff --git a/students/23K0350/23K0350-p21-retry/src/main/java/ru/mirea/practice/s23k0350/task2/TestHuman.java b/students/23K0350/23K0350-p21-retry/src/main/java/ru/mirea/practice/s23k0350/task2/TestHuman.java new file mode 100644 index 000000000..58034238b --- /dev/null +++ b/students/23K0350/23K0350-p21-retry/src/main/java/ru/mirea/practice/s23k0350/task2/TestHuman.java @@ -0,0 +1,15 @@ +package ru.mirea.practice.s23k0350.task2; + +public class TestHuman { + String name; + int age; + + public TestHuman(String name, int age) { + this.age = age; + this.name = name; + } + + public String toString() { + return "Name: " + name + "\n" + "Age:" + age; + } +} diff --git a/students/23K0350/23K0350-p22/pom.xml b/students/23K0350/23K0350-p22/pom.xml new file mode 100644 index 000000000..5e50bcd8d --- /dev/null +++ b/students/23K0350/23K0350-p22/pom.xml @@ -0,0 +1,13 @@ + + + 4.0.0 + + 23K0350 + ru.mirea.practice + 2024.1 + ../pom.xml + + 23K0350-p22 + Стек + diff --git a/students/23K0350/23K0350-p22/src/main/java/ru/mirea/practice/s23k0350/Main.java b/students/23K0350/23K0350-p22/src/main/java/ru/mirea/practice/s23k0350/Main.java new file mode 100644 index 000000000..7521bd0da --- /dev/null +++ b/students/23K0350/23K0350-p22/src/main/java/ru/mirea/practice/s23k0350/Main.java @@ -0,0 +1,10 @@ +package ru.mirea.practice.s23k0350; + +abstract class Main { + public static void main(String[] args) { + String expression = "2 3 * 4 5 * + "; + RpnCalculator rp = new RpnCalculator(expression); + System.out.println("Результат: " + rp.evaluate(expression)); + } +} + diff --git a/students/23K0350/23K0350-p22/src/main/java/ru/mirea/practice/s23k0350/RpnCalculator.java b/students/23K0350/23K0350-p22/src/main/java/ru/mirea/practice/s23k0350/RpnCalculator.java new file mode 100644 index 000000000..6c89ca1c5 --- /dev/null +++ b/students/23K0350/23K0350-p22/src/main/java/ru/mirea/practice/s23k0350/RpnCalculator.java @@ -0,0 +1,55 @@ +package ru.mirea.practice.s23k0350; + +import java.util.Stack; + +public class RpnCalculator { + String expression; + + public RpnCalculator(String expression) { + this.expression = expression; + } + + public static double evaluate(String expression) { + Stack stack = new Stack<>(); + String[] tokens = expression.split(" "); + + for (String token : tokens) { + if (isNumber(token)) { + stack.push(Double.parseDouble(token)); + } else { + double b = stack.pop(); + double a = stack.pop(); + stack.push(applyOperation(a, b, token)); + } + } + + return stack.pop(); + } + + private static boolean isNumber(String token) { + try { + Double.parseDouble(token); + return true; + } catch (NumberFormatException e) { + return false; + } + } + + private static double applyOperation(double a, double b, String operator) { + if ("+".equals(operator)) { + return a + b; + } else if ("-".equals(operator)) { + return a - b; + } else if ("*".equals(operator)) { + return a * b; + } else if ("/".equals(operator)) { + if (b == 0) { + throw new UnsupportedOperationException("Cannot divide by zero"); + } + return a / b; + } + throw new UnsupportedOperationException("Unsupported operation: " + operator); + } +} + + diff --git a/students/23K0350/23K0350-p23/pom.xml b/students/23K0350/23K0350-p23/pom.xml new file mode 100644 index 000000000..d6efb8e31 --- /dev/null +++ b/students/23K0350/23K0350-p23/pom.xml @@ -0,0 +1,13 @@ + + + 4.0.0 + + 23K0350 + ru.mirea.practice + 2024.1 + ../pom.xml + + 23K0350-p23 + Очередь + diff --git a/students/23K0350/23K0350-p23/src/main/java/ru/mirea/practice/s23k0350/AbstractQueue.java b/students/23K0350/23K0350-p23/src/main/java/ru/mirea/practice/s23k0350/AbstractQueue.java new file mode 100644 index 000000000..140b7d161 --- /dev/null +++ b/students/23K0350/23K0350-p23/src/main/java/ru/mirea/practice/s23k0350/AbstractQueue.java @@ -0,0 +1,15 @@ +package ru.mirea.practice.s23k0350; + +public abstract class AbstractQueue implements Queue { + protected int size; + + + public boolean isEmpty() { + return size == 0; + } + + + public int size() { + return size; + } +} diff --git a/students/23K0350/23K0350-p23/src/main/java/ru/mirea/practice/s23k0350/LinkedQueue.java b/students/23K0350/23K0350-p23/src/main/java/ru/mirea/practice/s23k0350/LinkedQueue.java new file mode 100644 index 000000000..aee7c77d5 --- /dev/null +++ b/students/23K0350/23K0350-p23/src/main/java/ru/mirea/practice/s23k0350/LinkedQueue.java @@ -0,0 +1,56 @@ +package ru.mirea.practice.s23k0350; + +public class LinkedQueue extends AbstractQueue { + private Node head; + private Node tail; + private int size; + + public LinkedQueue() { + head = null; + tail = null; + size = 0; + } + + public void enqueue(T element) { + Node newNode = new Node<>(element); + if (tail != null) { + tail.next = newNode; + } + tail = newNode; + if (head == null) { + head = newNode; + } + size++; + } + + public T dequeue() { + if (isEmpty()) { + throw new IllegalStateException("Queue is empty"); + } + head = head.next; + T value = head.value; + if (head == null) { + tail = null; + } + size--; + return value; + } + + + public T peek() { + if (isEmpty()) { + throw new IllegalStateException("Queue is empty"); + } + return head.value; + } + + + public boolean isEmpty() { + return size == 0; + } + + + public int size() { + return size; + } +} diff --git a/students/23K0350/23K0350-p23/src/main/java/ru/mirea/practice/s23k0350/Node.java b/students/23K0350/23K0350-p23/src/main/java/ru/mirea/practice/s23k0350/Node.java new file mode 100644 index 000000000..e7cddd275 --- /dev/null +++ b/students/23K0350/23K0350-p23/src/main/java/ru/mirea/practice/s23k0350/Node.java @@ -0,0 +1,12 @@ +package ru.mirea.practice.s23k0350; + +class Node { + T value; + Node next; + + Node(T value) { + this.value = value; + this.next = null; + } +} + diff --git a/students/23K0350/23K0350-p23/src/main/java/ru/mirea/practice/s23k0350/Queue.java b/students/23K0350/23K0350-p23/src/main/java/ru/mirea/practice/s23k0350/Queue.java new file mode 100644 index 000000000..7210849a3 --- /dev/null +++ b/students/23K0350/23K0350-p23/src/main/java/ru/mirea/practice/s23k0350/Queue.java @@ -0,0 +1,13 @@ +package ru.mirea.practice.s23k0350; + +public interface Queue { + void enqueue(T element); + + T dequeue(); + + T peek(); + + boolean isEmpty(); + + int size(); +} diff --git a/students/23K0350/23K0350-p24/pom.xml b/students/23K0350/23K0350-p24/pom.xml new file mode 100644 index 000000000..656dc799f --- /dev/null +++ b/students/23K0350/23K0350-p24/pom.xml @@ -0,0 +1,13 @@ + + + 4.0.0 + + 23K0350 + ru.mirea.practice + 2024.1 + ../pom.xml + + 23K0350-p24 + Фабрики + diff --git a/students/23K0350/23K0350-p24/src/main/java/ru/mirea/practice/s23k0350/Chair.java b/students/23K0350/23K0350-p24/src/main/java/ru/mirea/practice/s23k0350/Chair.java new file mode 100644 index 000000000..018e8c8cd --- /dev/null +++ b/students/23K0350/23K0350-p24/src/main/java/ru/mirea/practice/s23k0350/Chair.java @@ -0,0 +1,5 @@ +package ru.mirea.practice.s23k0350; + +interface Chair { + void sit(); +} diff --git a/students/23K0350/23K0350-p24/src/main/java/ru/mirea/practice/s23k0350/ChairFactory.java b/students/23K0350/23K0350-p24/src/main/java/ru/mirea/practice/s23k0350/ChairFactory.java new file mode 100644 index 000000000..72e4fc95a --- /dev/null +++ b/students/23K0350/23K0350-p24/src/main/java/ru/mirea/practice/s23k0350/ChairFactory.java @@ -0,0 +1,5 @@ +package ru.mirea.practice.s23k0350; + +abstract class ChairFactory { + public abstract Chair createChair(); +} diff --git a/students/23K0350/23K0350-p24/src/main/java/ru/mirea/practice/s23k0350/Client.java b/students/23K0350/23K0350-p24/src/main/java/ru/mirea/practice/s23k0350/Client.java new file mode 100644 index 000000000..05914d29e --- /dev/null +++ b/students/23K0350/23K0350-p24/src/main/java/ru/mirea/practice/s23k0350/Client.java @@ -0,0 +1,7 @@ +package ru.mirea.practice.s23k0350; + +class Client { + public void sit(Chair chair) { + chair.sit(); + } +} diff --git a/students/23K0350/23K0350-p24/src/main/java/ru/mirea/practice/s23k0350/MagicalChair.java b/students/23K0350/23K0350-p24/src/main/java/ru/mirea/practice/s23k0350/MagicalChair.java new file mode 100644 index 000000000..db231dea6 --- /dev/null +++ b/students/23K0350/23K0350-p24/src/main/java/ru/mirea/practice/s23k0350/MagicalChair.java @@ -0,0 +1,8 @@ +package ru.mirea.practice.s23k0350; + +class MagicalChair implements Chair { + @Override + public void sit() { + System.out.println("Sitting on a magical chair."); + } +} diff --git a/students/23K0350/23K0350-p24/src/main/java/ru/mirea/practice/s23k0350/MagicalChairFactory.java b/students/23K0350/23K0350-p24/src/main/java/ru/mirea/practice/s23k0350/MagicalChairFactory.java new file mode 100644 index 000000000..b91c421b4 --- /dev/null +++ b/students/23K0350/23K0350-p24/src/main/java/ru/mirea/practice/s23k0350/MagicalChairFactory.java @@ -0,0 +1,9 @@ +package ru.mirea.practice.s23k0350; + + +class MagicalChairFactory extends ChairFactory { + @Override + public Chair createChair() { + return new MagicalChair(); + } +} diff --git a/students/23K0350/23K0350-p24/src/main/java/ru/mirea/practice/s23k0350/Maine.java b/students/23K0350/23K0350-p24/src/main/java/ru/mirea/practice/s23k0350/Maine.java new file mode 100644 index 000000000..0b72b94c2 --- /dev/null +++ b/students/23K0350/23K0350-p24/src/main/java/ru/mirea/practice/s23k0350/Maine.java @@ -0,0 +1,20 @@ +package ru.mirea.practice.s23k0350; + +abstract class Maine { + public static void main(String[] args) { + Client client = new Client(); + + ChairFactory victorianFactory = new VictorianChairFactory(); + Chair victorianChair = victorianFactory.createChair(); + client.sit(victorianChair); + + ChairFactory multifunctionalFactory = new MultifunctionalChairFactory(); + Chair multifunctionalChair = multifunctionalFactory.createChair(); + client.sit(multifunctionalChair); + + ChairFactory magicalFactory = new MagicalChairFactory(); + Chair magicalChair = magicalFactory.createChair(); + client.sit(magicalChair); + } +} + diff --git a/students/23K0350/23K0350-p24/src/main/java/ru/mirea/practice/s23k0350/MultifunctionalChair.java b/students/23K0350/23K0350-p24/src/main/java/ru/mirea/practice/s23k0350/MultifunctionalChair.java new file mode 100644 index 000000000..4c979644a --- /dev/null +++ b/students/23K0350/23K0350-p24/src/main/java/ru/mirea/practice/s23k0350/MultifunctionalChair.java @@ -0,0 +1,9 @@ +package ru.mirea.practice.s23k0350; + + +class MultifunctionalChair implements Chair { + @Override + public void sit() { + System.out.println("Sitting on a multifunctional chair."); + } +} diff --git a/students/23K0350/23K0350-p24/src/main/java/ru/mirea/practice/s23k0350/MultifunctionalChairFactory.java b/students/23K0350/23K0350-p24/src/main/java/ru/mirea/practice/s23k0350/MultifunctionalChairFactory.java new file mode 100644 index 000000000..88fff3da2 --- /dev/null +++ b/students/23K0350/23K0350-p24/src/main/java/ru/mirea/practice/s23k0350/MultifunctionalChairFactory.java @@ -0,0 +1,9 @@ +package ru.mirea.practice.s23k0350; + + +class MultifunctionalChairFactory extends ChairFactory { + @Override + public Chair createChair() { + return new MultifunctionalChair(); + } +} diff --git a/students/23K0350/23K0350-p24/src/main/java/ru/mirea/practice/s23k0350/VictorianChair.java b/students/23K0350/23K0350-p24/src/main/java/ru/mirea/practice/s23k0350/VictorianChair.java new file mode 100644 index 000000000..689cbb74c --- /dev/null +++ b/students/23K0350/23K0350-p24/src/main/java/ru/mirea/practice/s23k0350/VictorianChair.java @@ -0,0 +1,9 @@ +package ru.mirea.practice.s23k0350; + + +class VictorianChair implements Chair { + @Override + public void sit() { + System.out.println("Sitting on a Victorian chair."); + } +} diff --git a/students/23K0350/23K0350-p24/src/main/java/ru/mirea/practice/s23k0350/VictorianChairFactory.java b/students/23K0350/23K0350-p24/src/main/java/ru/mirea/practice/s23k0350/VictorianChairFactory.java new file mode 100644 index 000000000..7e55b4b9f --- /dev/null +++ b/students/23K0350/23K0350-p24/src/main/java/ru/mirea/practice/s23k0350/VictorianChairFactory.java @@ -0,0 +1,9 @@ +package ru.mirea.practice.s23k0350; + + +class VictorianChairFactory extends ChairFactory { + @Override + public Chair createChair() { + return new VictorianChair(); + } +} diff --git a/students/23K0350/23K0350-p25/pom.xml b/students/23K0350/23K0350-p25/pom.xml new file mode 100644 index 000000000..ba91b8295 --- /dev/null +++ b/students/23K0350/23K0350-p25/pom.xml @@ -0,0 +1,13 @@ + + + 4.0.0 + + 23K0350 + ru.mirea.practice + 2024.1 + ../pom.xml + + 23K0350-p25 + Шаблоны + diff --git a/students/23K0350/23K0350-p25/src/main/java/ru/mirea/practice/s23k0350/PlusFinder.java b/students/23K0350/23K0350-p25/src/main/java/ru/mirea/practice/s23k0350/PlusFinder.java new file mode 100644 index 000000000..8ac904599 --- /dev/null +++ b/students/23K0350/23K0350-p25/src/main/java/ru/mirea/practice/s23k0350/PlusFinder.java @@ -0,0 +1,22 @@ +package ru.mirea.practice.s23k0350; + +import java.util.regex.Matcher; + +import java.util.regex.Pattern; + +abstract class PlusFinder { + public static void main(String[] args) { + String text = "6 / 5 – 2 * 9"; + String regex = "\\b\\d+\\b(?!\\s*\\+)"; + + Pattern pattern = Pattern.compile(regex); + Matcher matcher = pattern.matcher(text); + + if (matcher.find()) { + System.out.println("В тексте найдены цифры без знака '+'."); + } else { + System.out.println("В тексте нет цифр без знака '+'."); + } + } +} + diff --git a/students/23K0350/23K0350-p26/pom.xml b/students/23K0350/23K0350-p26/pom.xml new file mode 100644 index 000000000..827eb1e0a --- /dev/null +++ b/students/23K0350/23K0350-p26/pom.xml @@ -0,0 +1,13 @@ + + + 4.0.0 + + 23K0350 + ru.mirea.practice + 2024.1 + ../pom.xml + + 23K0350-p26 + Collections + diff --git a/students/23K0350/23K0350-p26/src/main/java/ru/mirea/practice/s23k0350/ArrayInverter.java b/students/23K0350/23K0350-p26/src/main/java/ru/mirea/practice/s23k0350/ArrayInverter.java new file mode 100644 index 000000000..c63cf9506 --- /dev/null +++ b/students/23K0350/23K0350-p26/src/main/java/ru/mirea/practice/s23k0350/ArrayInverter.java @@ -0,0 +1,21 @@ +package ru.mirea.practice.s23k0350; + +import java.util.Stack; + +abstract class ArrayInverter { + public static int[] invertArray(int[] array) { + Stack stack = new Stack<>(); + + for (int num : array) { + stack.push(num); + } + + for (int i = 0; i < array.length; i++) { + array[i] = stack.pop(); + } + + return array; + } + + +} diff --git a/students/23K0350/23K0350-p26/src/main/java/ru/mirea/practice/s23k0350/MainArray.java b/students/23K0350/23K0350-p26/src/main/java/ru/mirea/practice/s23k0350/MainArray.java new file mode 100644 index 000000000..f78a26e25 --- /dev/null +++ b/students/23K0350/23K0350-p26/src/main/java/ru/mirea/practice/s23k0350/MainArray.java @@ -0,0 +1,11 @@ +package ru.mirea.practice.s23k0350; + +abstract class MainArray { + public static void main(String[] args) { + int[] originalArray = {1, 2, 3, 4, 5}; + int[] invertedArray = ArrayInverter.invertArray(originalArray); + for (int num : invertedArray) { + System.out.print(num + " "); + } + } +} diff --git a/students/23K0350/23K0350-p27/pom.xml b/students/23K0350/23K0350-p27/pom.xml new file mode 100644 index 000000000..e65005223 --- /dev/null +++ b/students/23K0350/23K0350-p27/pom.xml @@ -0,0 +1,13 @@ + + + 4.0.0 + + 23K0350 + ru.mirea.practice + 2024.1 + ../pom.xml + + 23K0350-p27 + Хэш таблицы + diff --git a/students/23K0350/23K0350-p27/src/main/java/ru/mirea/practice/s23k0350/HashTab.java b/students/23K0350/23K0350-p27/src/main/java/ru/mirea/practice/s23k0350/HashTab.java new file mode 100644 index 000000000..93a0deeed --- /dev/null +++ b/students/23K0350/23K0350-p27/src/main/java/ru/mirea/practice/s23k0350/HashTab.java @@ -0,0 +1,58 @@ +package ru.mirea.practice.s23k0350; + +import java.util.LinkedList; + +class HashTab { + private LinkedList[] table; + private int size; + + private static class Entry { + String key; + String value; + + Entry(String key, String value) { + this.key = key; + this.value = value; + } + } + + public void hashtabInit(int size) { + this.size = size; + table = new LinkedList[size]; + for (int i = 0; i < size; i++) { + table[i] = new LinkedList<>(); + } + } + + + private int hashtabHash(String key) { + return Math.abs(key.hashCode()) % size; + } + + + public void hashtabAdd(String key, String value) { + int index = hashtabHash(key); + LinkedList bucket = table[index]; + + for (Entry entry : bucket) { + if (entry.key.equals(key)) { + entry.value = value; + return; + } + } + bucket.add(new Entry(key, value)); + } + + + public String hashtabLookup(String key) { + int index = hashtabHash(key); + LinkedList bucket = table[index]; + + for (Entry entry : bucket) { + if (entry.key.equals(key)) { + return entry.value; + } + } + return null; + } +} \ No newline at end of file diff --git a/students/23K0350/23K0350-p27/src/main/java/ru/mirea/practice/s23k0350/Main27.java b/students/23K0350/23K0350-p27/src/main/java/ru/mirea/practice/s23k0350/Main27.java new file mode 100644 index 000000000..f3903641c --- /dev/null +++ b/students/23K0350/23K0350-p27/src/main/java/ru/mirea/practice/s23k0350/Main27.java @@ -0,0 +1,12 @@ +package ru.mirea.practice.s23k0350; + +abstract class Main27 { + public static void main(String[] args) { + HashTab hashTab = new HashTab(); + hashTab.hashtabInit(10); + hashTab.hashtabAdd("key1", "value1"); + hashTab.hashtabAdd("key2", "value2"); + System.out.println(hashTab.hashtabLookup("key1")); + System.out.println(hashTab.hashtabLookup("key3")); + } +} diff --git a/students/23K0350/23K0350-p28/pom.xml b/students/23K0350/23K0350-p28/pom.xml new file mode 100644 index 000000000..b24e11657 --- /dev/null +++ b/students/23K0350/23K0350-p28/pom.xml @@ -0,0 +1,13 @@ + + + 4.0.0 + + 23K0350 + ru.mirea.practice + 2024.1 + ../pom.xml + + 23K0350-p28 + HashMap + diff --git a/students/23K0350/23K0350-p28/src/main/java/ru/mirea/practice/s23k0350/Main28.java b/students/23K0350/23K0350-p28/src/main/java/ru/mirea/practice/s23k0350/Main28.java new file mode 100644 index 000000000..a66ba62c0 --- /dev/null +++ b/students/23K0350/23K0350-p28/src/main/java/ru/mirea/practice/s23k0350/Main28.java @@ -0,0 +1,12 @@ +package ru.mirea.practice.s23k0350; + +import java.util.Map; + +abstract class Main28 { + public static void main(String[] args) { + Map nmpp = NameMap.createMap(); + System.out.println(NameMap.getSameFirstNameCount(nmpp)); + System.out.println(NameMap.getSameLastNameCount(nmpp)); + + } +} diff --git a/students/23K0350/23K0350-p28/src/main/java/ru/mirea/practice/s23k0350/NameMap.java b/students/23K0350/23K0350-p28/src/main/java/ru/mirea/practice/s23k0350/NameMap.java new file mode 100644 index 000000000..ed2628306 --- /dev/null +++ b/students/23K0350/23K0350-p28/src/main/java/ru/mirea/practice/s23k0350/NameMap.java @@ -0,0 +1,56 @@ +package ru.mirea.practice.s23k0350; + +import java.util.HashMap; +import java.util.Map; + + +abstract class NameMap { + public static Map createMap() { + Map nameMap = new HashMap<>(); + nameMap.put("Иванов", "Иван"); + nameMap.put("Петров", "Петр"); + nameMap.put("Сидоров", "Иван"); + nameMap.put("Смирнов", "Алексей"); + nameMap.put("Кузнецов", "Петр"); + nameMap.put("Попов", "Сергей"); + nameMap.put("Лебедев", "Дмитрий"); + nameMap.put("Морозов", "Иван"); + nameMap.put("Соловьев", "Алексей"); + nameMap.put("Васильев", "Петр"); + return nameMap; + } + + public static int getSameFirstNameCount(Map nameMap) { + Map firstNameCount = new HashMap<>(); + + for (String firstName : nameMap.values()) { + firstNameCount.put(firstName, firstNameCount.getOrDefault(firstName, 0) + 1); + } + + int count = 0; + for (int value : firstNameCount.values()) { + if (value > 1) { + count += value; + } + } + + return count; + } + + public static int getSameLastNameCount(Map nameMap) { + Map lastNameCount = new HashMap<>(); + + for (String lastName : nameMap.keySet()) { + lastNameCount.put(lastName, lastNameCount.getOrDefault(lastName, 0) + 1); + } + + int count = 0; + for (int value : lastNameCount.values()) { + if (value > 1) { + count += value; + } + } + + return count; + } +} \ No newline at end of file diff --git a/students/23K0350/23K0350-p29/pom.xml b/students/23K0350/23K0350-p29/pom.xml new file mode 100644 index 000000000..477ee51d5 --- /dev/null +++ b/students/23K0350/23K0350-p29/pom.xml @@ -0,0 +1,13 @@ + + + 4.0.0 + + 23K0350 + ru.mirea.practice + 2024.1 + ../pom.xml + + 23K0350-p29 + Графы + diff --git a/students/23K0350/23K0350-p29/src/main/java/ru/mirea/practice/s23k0350/Main29.java b/students/23K0350/23K0350-p29/src/main/java/ru/mirea/practice/s23k0350/Main29.java new file mode 100644 index 000000000..77f601fac --- /dev/null +++ b/students/23K0350/23K0350-p29/src/main/java/ru/mirea/practice/s23k0350/Main29.java @@ -0,0 +1,8 @@ +package ru.mirea.practice.s23k0350; + +abstract class Main29 { + public static void main(String[] args) { + SolutionMilkyWay smw = new SolutionMilkyWay(); + smw.solve(); + } +} diff --git a/students/23K0350/23K0350-p29/src/main/java/ru/mirea/practice/s23k0350/SolutionMilkyWay.java b/students/23K0350/23K0350-p29/src/main/java/ru/mirea/practice/s23k0350/SolutionMilkyWay.java new file mode 100644 index 000000000..b18530a59 --- /dev/null +++ b/students/23K0350/23K0350-p29/src/main/java/ru/mirea/practice/s23k0350/SolutionMilkyWay.java @@ -0,0 +1,30 @@ +package ru.mirea.practice.s23k0350; + +import java.util.Scanner; + +class SolutionMilkyWay { + public void solve() { + try (Scanner scanner = new Scanner(System.in)) { + System.out.println("Enter n\n"); + + int n = scanner.nextInt(); + int[][] matrix = new int[n][n]; + + for (int i = 0; i < n; i++) { + System.out.println("next row"); + for (int j = 0; j < n; j++) { + matrix[i][j] = scanner.nextInt(); + } + } + int res = 0; + for (int i = 0; i < n; i++) { + for (int j = 0; j < n; j++) { + res += matrix[i][j]; + } + res /= 2; + System.out.println(res); + } + + } + } +} diff --git a/students/23K0350/23K0350-p30/pom.xml b/students/23K0350/23K0350-p30/pom.xml new file mode 100644 index 000000000..b73e78c7b --- /dev/null +++ b/students/23K0350/23K0350-p30/pom.xml @@ -0,0 +1,13 @@ + + + 4.0.0 + + 23K0350 + ru.mirea.practice + 2024.1 + ../pom.xml + + 23K0350-p30 + Деревья + diff --git a/students/23K0350/23K0350-p30/src/main/java/ru/mirea/practice/s23k0350/pt1/HuffmanCoding.java b/students/23K0350/23K0350-p30/src/main/java/ru/mirea/practice/s23k0350/pt1/HuffmanCoding.java new file mode 100644 index 000000000..41bda982b --- /dev/null +++ b/students/23K0350/23K0350-p30/src/main/java/ru/mirea/practice/s23k0350/pt1/HuffmanCoding.java @@ -0,0 +1,37 @@ +package ru.mirea.practice.s23k0350.pt1; + +import java.util.PriorityQueue; + +class HuffmanCoding { + public void printCodes(Node root, String str) { + if (root == null) { + return; + } + + if (root.left == null && root.right == null) { + System.out.println(root.ch + ": " + str); + return; + } + + printCodes(root.left, str + '0'); + printCodes(root.right, str + '1'); + } + + public Node buildHuffmanTree(char[] chars, int[] freq) { + PriorityQueue priorityQueue = new PriorityQueue<>((a, b) -> a.freq - b.freq); + + for (int i = 0; i < chars.length; i++) { + priorityQueue.add(new Node(chars[i], freq[i])); + } + + while (priorityQueue.size() > 1) { + Node left = priorityQueue.poll(); + Node right = priorityQueue.poll(); + Node newNode = new Node('\0', left.freq + right.freq); + newNode.left = left; + newNode.right = right; + priorityQueue.add(newNode); + } + return priorityQueue.poll(); + } +} diff --git a/students/23K0350/23K0350-p30/src/main/java/ru/mirea/practice/s23k0350/pt1/Main30.java b/students/23K0350/23K0350-p30/src/main/java/ru/mirea/practice/s23k0350/pt1/Main30.java new file mode 100644 index 000000000..5391f4fad --- /dev/null +++ b/students/23K0350/23K0350-p30/src/main/java/ru/mirea/practice/s23k0350/pt1/Main30.java @@ -0,0 +1,13 @@ +package ru.mirea.practice.s23k0350.pt1; + +abstract class Main30 { + public static void main(String[] args) { + HuffmanCoding huffmanCoding = new HuffmanCoding(); + char[] chars = {'a', 'b', 'c', 'd', 'e', 'f'}; + int[] freq = {5, 9, 12, 13, 16, 45}; + + Node root = huffmanCoding.buildHuffmanTree(chars, freq); + huffmanCoding.printCodes(root, ""); + } +} + diff --git a/students/23K0350/23K0350-p30/src/main/java/ru/mirea/practice/s23k0350/pt1/Node.java b/students/23K0350/23K0350-p30/src/main/java/ru/mirea/practice/s23k0350/pt1/Node.java new file mode 100644 index 000000000..c20d651ba --- /dev/null +++ b/students/23K0350/23K0350-p30/src/main/java/ru/mirea/practice/s23k0350/pt1/Node.java @@ -0,0 +1,15 @@ +package ru.mirea.practice.s23k0350.pt1; + +class Node { + int freq; + char ch; + Node left; + Node right; + + Node(char ch, int freq) { + this.ch = ch; + this.freq = freq; + this.left = null; + this.right = null; + } +} \ No newline at end of file diff --git a/students/23K0350/23K0350-p30/src/main/java/ru/mirea/practice/s23k0350/pt2/BinarySearchTree.java b/students/23K0350/23K0350-p30/src/main/java/ru/mirea/practice/s23k0350/pt2/BinarySearchTree.java new file mode 100644 index 000000000..c7368696c --- /dev/null +++ b/students/23K0350/23K0350-p30/src/main/java/ru/mirea/practice/s23k0350/pt2/BinarySearchTree.java @@ -0,0 +1,83 @@ +package ru.mirea.practice.s23k0350.pt2; + +class BinarySearchTree { + TreeNode root; + + BinarySearchTree() { + root = null; + } + + void insert(int key) { + root = insertRec(root, key); + } + + TreeNode insertRec(TreeNode root, int key) { + if (root == null) { + root = new TreeNode(key); + return root; + } + if (key < root.key) { + root.left = insertRec(root.left, key); + } else if (key > root.key) { + root.right = insertRec(root.right, key); + } + return root; + } + + void inorder() { + inorderRec(root); + System.out.println(); + } + + void inorderRec(TreeNode root) { + if (root != null) { + inorderRec(root.left); + System.out.print(root.key + " "); + inorderRec(root.right); + } + } + + TreeNode deleteNode(TreeNode root, int key) { + if (root == null) { + return root; + } + + if (key < root.key) { + root.left = deleteNode(root.left, key); + } else if (key > root.key) { + root.right = deleteNode(root.right, key); + } else { + if (root.left == null) { + return root.right; + } else if (root.right == null) { + return root.left; + } + + root.key = minValue(root.right); + root.right = deleteNode(root.right, root.key); + } + return root; + } + + int minValue(TreeNode root) { + int minv = root.key; + while (root.left != null) { + minv = root.left.key; + root = root.left; + } + return minv; + } + + void clear(TreeNode node) { + if (node != null) { + clear(node.left); + clear(node.right); + node = null; + } + } + + void clear() { + clear(root); + root = null; + } +} diff --git a/students/23K0350/23K0350-p30/src/main/java/ru/mirea/practice/s23k0350/pt2/Main30pt2.java b/students/23K0350/23K0350-p30/src/main/java/ru/mirea/practice/s23k0350/pt2/Main30pt2.java new file mode 100644 index 000000000..14d2c991a --- /dev/null +++ b/students/23K0350/23K0350-p30/src/main/java/ru/mirea/practice/s23k0350/pt2/Main30pt2.java @@ -0,0 +1,22 @@ +package ru.mirea.practice.s23k0350.pt2; + +abstract class Main30pt2 { + public static void main(String[] args) { + BinarySearchTree bst = new BinarySearchTree(); + + int[] keys = {20, 10, 30, 5, 15, 25, 35, 1, 12, 27}; + for (int key : keys) { + bst.insert(key); + } + + System.out.println("Содержимое дерева (в порядке):"); + bst.inorder(); + + bst.root = bst.deleteNode(bst.root, 15); + System.out.println("После удаления узла со значением 15:"); + bst.inorder(); + + bst.clear(); + System.out.println("Дерево полностью очищено."); + } +} diff --git a/students/23K0350/23K0350-p30/src/main/java/ru/mirea/practice/s23k0350/pt2/TreeNode.java b/students/23K0350/23K0350-p30/src/main/java/ru/mirea/practice/s23k0350/pt2/TreeNode.java new file mode 100644 index 000000000..e24bfd36e --- /dev/null +++ b/students/23K0350/23K0350-p30/src/main/java/ru/mirea/practice/s23k0350/pt2/TreeNode.java @@ -0,0 +1,12 @@ +package ru.mirea.practice.s23k0350.pt2; + +class TreeNode { + int key; + TreeNode left; + TreeNode right; + + public TreeNode(int item) { + key = item; + left = right = null; + } +} \ No newline at end of file diff --git a/students/23K0350/pom.xml b/students/23K0350/pom.xml index 745a1e1af..5ade093c6 100644 --- a/students/23K0350/pom.xml +++ b/students/23K0350/pom.xml @@ -29,5 +29,15 @@ 23K0350-p18 23K0350-p19 23K0350-p20 + 23K0350-p21-retry + 23K0350-p22 + 23K0350-p23 + 23K0350-p24 + 23K0350-p25 + 23K0350-p26 + 23K0350-p27 + 23K0350-p28 + 23K0350-p29 + 23K0350-p30