From 2a4cb7dfc2337e5ca9dc23c15d7aac4e54056950 Mon Sep 17 00:00:00 2001 From: evoliatra Date: Fri, 13 Dec 2024 16:31:37 +0300 Subject: [PATCH 1/2] Pr21-32 --- students/23K9901/23K9901-p21/pom.xml | 13 ++++ .../practice/s0000001/ArrayElementGetter.java | 16 +++++ .../java/ru/mirea/practice/s0000001/Main.java | 13 ++++ students/23K9901/23K9901-p22/pom.xml | 13 ++++ .../practice/s0000001/ArrayElementGetter.java | 16 +++++ .../ru/mirea/practice/s0000001/Main3.java | 13 ++++ students/23K9901/23K9901-p23/pom.xml | 13 ++++ .../java/ru/mirea/practice/s0000001/Main.java | 9 +++ .../ru/mirea/practice/s0000001/RPNCalc.java | 44 +++++++++++++ students/23K9901/23K9901-p24/pom.xml | 13 ++++ .../practice/s0000001/AbstractQueue.java | 15 +++++ .../mirea/practice/s0000001/ArrayQueue.java | 58 ++++++++++++++++ .../mirea/practice/s0000001/LinkedQueue.java | 60 +++++++++++++++++ .../java/ru/mirea/practice/s0000001/Main.java | 25 +++++++ .../ru/mirea/practice/s0000001/Queue.java | 16 +++++ students/23K9901/23K9901-p25/pom.xml | 13 ++++ .../ru/mirea/practice/s0000001/Chair.java | 5 ++ .../mirea/practice/s0000001/ChairFactory.java | 10 +++ .../ru/mirea/practice/s0000001/Client.java | 7 ++ .../s0000001/ConcreteChairFactory.java | 18 +++++ .../mirea/practice/s0000001/MagicChair.java | 12 ++++ .../java/ru/mirea/practice/s0000001/Main.java | 19 ++++++ .../s0000001/MultifunctionalChair.java | 12 ++++ .../practice/s0000001/VictorianChair.java | 18 +++++ students/23K9901/23K9901-p26/pom.xml | 13 ++++ .../ru/mirea/practice/s0000001/RegexTest.java | 15 +++++ students/23K9901/23K9901-p27/pom.xml | 13 ++++ .../practice/s0000001/CustomListIterator.java | 43 ++++++++++++ students/23K9901/23K9901-p28/pom.xml | 13 ++++ .../practice/s0000001/PriorityQueueDemo.java | 31 +++++++++ students/23K9901/23K9901-p29/pom.xml | 13 ++++ .../practice/s0000001/NameSurnameMap.java | 55 ++++++++++++++++ students/23K9901/23K9901-p30/pom.xml | 13 ++++ .../java/ru/mirea/practice/s0000001/RC.java | 29 ++++++++ students/23K9901/23K9901-p32/pom.xml | 13 ++++ .../practice/s0000001/HuffmanCoding.java | 66 +++++++++++++++++++ .../mirea/practice/s0000001/HuffmanNode.java | 20 ++++++ students/23K9901/A.java | 0 students/23K9901/pom.xml | 11 ++++ 39 files changed, 799 insertions(+) create mode 100644 students/23K9901/23K9901-p21/pom.xml create mode 100644 students/23K9901/23K9901-p21/src/main/java/ru/mirea/practice/s0000001/ArrayElementGetter.java create mode 100644 students/23K9901/23K9901-p21/src/main/java/ru/mirea/practice/s0000001/Main.java create mode 100644 students/23K9901/23K9901-p22/pom.xml create mode 100644 students/23K9901/23K9901-p22/src/main/java/ru/mirea/practice/s0000001/ArrayElementGetter.java create mode 100644 students/23K9901/23K9901-p22/src/main/java/ru/mirea/practice/s0000001/Main3.java create mode 100644 students/23K9901/23K9901-p23/pom.xml create mode 100644 students/23K9901/23K9901-p23/src/main/java/ru/mirea/practice/s0000001/Main.java create mode 100644 students/23K9901/23K9901-p23/src/main/java/ru/mirea/practice/s0000001/RPNCalc.java create mode 100644 students/23K9901/23K9901-p24/pom.xml create mode 100644 students/23K9901/23K9901-p24/src/main/java/ru/mirea/practice/s0000001/AbstractQueue.java create mode 100644 students/23K9901/23K9901-p24/src/main/java/ru/mirea/practice/s0000001/ArrayQueue.java create mode 100644 students/23K9901/23K9901-p24/src/main/java/ru/mirea/practice/s0000001/LinkedQueue.java create mode 100644 students/23K9901/23K9901-p24/src/main/java/ru/mirea/practice/s0000001/Main.java create mode 100644 students/23K9901/23K9901-p24/src/main/java/ru/mirea/practice/s0000001/Queue.java create mode 100644 students/23K9901/23K9901-p25/pom.xml create mode 100644 students/23K9901/23K9901-p25/src/main/java/ru/mirea/practice/s0000001/Chair.java create mode 100644 students/23K9901/23K9901-p25/src/main/java/ru/mirea/practice/s0000001/ChairFactory.java create mode 100644 students/23K9901/23K9901-p25/src/main/java/ru/mirea/practice/s0000001/Client.java create mode 100644 students/23K9901/23K9901-p25/src/main/java/ru/mirea/practice/s0000001/ConcreteChairFactory.java create mode 100644 students/23K9901/23K9901-p25/src/main/java/ru/mirea/practice/s0000001/MagicChair.java create mode 100644 students/23K9901/23K9901-p25/src/main/java/ru/mirea/practice/s0000001/Main.java create mode 100644 students/23K9901/23K9901-p25/src/main/java/ru/mirea/practice/s0000001/MultifunctionalChair.java create mode 100644 students/23K9901/23K9901-p25/src/main/java/ru/mirea/practice/s0000001/VictorianChair.java create mode 100644 students/23K9901/23K9901-p26/pom.xml create mode 100644 students/23K9901/23K9901-p26/src/main/java/ru/mirea/practice/s0000001/RegexTest.java create mode 100644 students/23K9901/23K9901-p27/pom.xml create mode 100644 students/23K9901/23K9901-p27/src/main/java/ru/mirea/practice/s0000001/CustomListIterator.java create mode 100644 students/23K9901/23K9901-p28/pom.xml create mode 100644 students/23K9901/23K9901-p28/src/main/java/ru/mirea/practice/s0000001/PriorityQueueDemo.java create mode 100644 students/23K9901/23K9901-p29/pom.xml create mode 100644 students/23K9901/23K9901-p29/src/main/java/ru/mirea/practice/s0000001/NameSurnameMap.java create mode 100644 students/23K9901/23K9901-p30/pom.xml create mode 100644 students/23K9901/23K9901-p30/src/main/java/ru/mirea/practice/s0000001/RC.java create mode 100644 students/23K9901/23K9901-p32/pom.xml create mode 100644 students/23K9901/23K9901-p32/src/main/java/ru/mirea/practice/s0000001/HuffmanCoding.java create mode 100644 students/23K9901/23K9901-p32/src/main/java/ru/mirea/practice/s0000001/HuffmanNode.java delete mode 100644 students/23K9901/A.java diff --git a/students/23K9901/23K9901-p21/pom.xml b/students/23K9901/23K9901-p21/pom.xml new file mode 100644 index 000000000..ad9023eba --- /dev/null +++ b/students/23K9901/23K9901-p21/pom.xml @@ -0,0 +1,13 @@ + + + 4.0.0 + + 23K9901 + ru.mirea.practice + 2024.1 + ../pom.xml + + 23K9901-p21 + Второе задание + diff --git a/students/23K9901/23K9901-p21/src/main/java/ru/mirea/practice/s0000001/ArrayElementGetter.java b/students/23K9901/23K9901-p21/src/main/java/ru/mirea/practice/s0000001/ArrayElementGetter.java new file mode 100644 index 000000000..6e3388f15 --- /dev/null +++ b/students/23K9901/23K9901-p21/src/main/java/ru/mirea/practice/s0000001/ArrayElementGetter.java @@ -0,0 +1,16 @@ +package ru.mirea.practice.s0000001; + +public class ArrayElementGetter { + private T[] array; + + public ArrayElementGetter(T[] array) { + this.array = array; + } + + public T getElementByIndex(int index) { + if (index < 0 || index >= array.length) { + throw new IndexOutOfBoundsException("Invalid index: " + index); + } + return array[index]; + } +} diff --git a/students/23K9901/23K9901-p21/src/main/java/ru/mirea/practice/s0000001/Main.java b/students/23K9901/23K9901-p21/src/main/java/ru/mirea/practice/s0000001/Main.java new file mode 100644 index 000000000..0630592f0 --- /dev/null +++ b/students/23K9901/23K9901-p21/src/main/java/ru/mirea/practice/s0000001/Main.java @@ -0,0 +1,13 @@ +package ru.mirea.practice.s0000001; + +abstract class Main { + public static void main(String[] args) { + Integer[] numbers = {10, 20, 30, 40, 50}; + ArrayElementGetter intGetter = new ArrayElementGetter<>(numbers); + System.out.println("Элемент по индексу 2: " + intGetter.getElementByIndex(2)); + + String[] words = {"apple", "banana", "cherry"}; + ArrayElementGetter stringGetter = new ArrayElementGetter<>(words); + System.out.println("Элемент по индексу 1: " + stringGetter.getElementByIndex(1)); + } +} diff --git a/students/23K9901/23K9901-p22/pom.xml b/students/23K9901/23K9901-p22/pom.xml new file mode 100644 index 000000000..95d6c0920 --- /dev/null +++ b/students/23K9901/23K9901-p22/pom.xml @@ -0,0 +1,13 @@ + + + 4.0.0 + + 23K9901 + ru.mirea.practice + 2024.1 + ../pom.xml + + 23K9901-p22 + Второе задание + diff --git a/students/23K9901/23K9901-p22/src/main/java/ru/mirea/practice/s0000001/ArrayElementGetter.java b/students/23K9901/23K9901-p22/src/main/java/ru/mirea/practice/s0000001/ArrayElementGetter.java new file mode 100644 index 000000000..6e3388f15 --- /dev/null +++ b/students/23K9901/23K9901-p22/src/main/java/ru/mirea/practice/s0000001/ArrayElementGetter.java @@ -0,0 +1,16 @@ +package ru.mirea.practice.s0000001; + +public class ArrayElementGetter { + private T[] array; + + public ArrayElementGetter(T[] array) { + this.array = array; + } + + public T getElementByIndex(int index) { + if (index < 0 || index >= array.length) { + throw new IndexOutOfBoundsException("Invalid index: " + index); + } + return array[index]; + } +} diff --git a/students/23K9901/23K9901-p22/src/main/java/ru/mirea/practice/s0000001/Main3.java b/students/23K9901/23K9901-p22/src/main/java/ru/mirea/practice/s0000001/Main3.java new file mode 100644 index 000000000..f722d2b5f --- /dev/null +++ b/students/23K9901/23K9901-p22/src/main/java/ru/mirea/practice/s0000001/Main3.java @@ -0,0 +1,13 @@ +package ru.mirea.practice.s0000001; + +abstract class Main3 { + public static void main(String[] args) { + Integer[] numbers = {10, 20, 30, 40, 50}; + ArrayElementGetter intGetter = new ArrayElementGetter<>(numbers); + System.out.println("Элемент по индексу 2: " + intGetter.getElementByIndex(2)); + + String[] words = {"apple", "banana", "cherry"}; + ArrayElementGetter stringGetter = new ArrayElementGetter<>(words); + System.out.println("Элемент по индексу 1: " + stringGetter.getElementByIndex(1)); + } +} diff --git a/students/23K9901/23K9901-p23/pom.xml b/students/23K9901/23K9901-p23/pom.xml new file mode 100644 index 000000000..f289dd42f --- /dev/null +++ b/students/23K9901/23K9901-p23/pom.xml @@ -0,0 +1,13 @@ + + + 4.0.0 + + 23K9901 + ru.mirea.practice + 2024.1 + ../pom.xml + + 23K9901-p23 + Второе задание + diff --git a/students/23K9901/23K9901-p23/src/main/java/ru/mirea/practice/s0000001/Main.java b/students/23K9901/23K9901-p23/src/main/java/ru/mirea/practice/s0000001/Main.java new file mode 100644 index 000000000..045698ec4 --- /dev/null +++ b/students/23K9901/23K9901-p23/src/main/java/ru/mirea/practice/s0000001/Main.java @@ -0,0 +1,9 @@ +package ru.mirea.practice.s0000001; + +abstract class Main { + public static void main(String[] args) { + String rpnExpression = "3 4 + 2 * 7 /"; + double result = RPNCalc.calculate(rpnExpression); + System.out.println("Результат: " + result); + } +} diff --git a/students/23K9901/23K9901-p23/src/main/java/ru/mirea/practice/s0000001/RPNCalc.java b/students/23K9901/23K9901-p23/src/main/java/ru/mirea/practice/s0000001/RPNCalc.java new file mode 100644 index 000000000..ab93aa9f2 --- /dev/null +++ b/students/23K9901/23K9901-p23/src/main/java/ru/mirea/practice/s0000001/RPNCalc.java @@ -0,0 +1,44 @@ +package ru.mirea.practice.s0000001; + +import java.util.Stack; + +abstract class RPnCalculator { + 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(); + } + + private static boolean isOperator(String token) { + return "+".equals(token) || "-".equals(token) || "*".equals(token) || "/".equals(token); + } + + 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); + } + } +} diff --git a/students/23K9901/23K9901-p24/pom.xml b/students/23K9901/23K9901-p24/pom.xml new file mode 100644 index 000000000..f1a72bbdb --- /dev/null +++ b/students/23K9901/23K9901-p24/pom.xml @@ -0,0 +1,13 @@ + + + 4.0.0 + + 23K9901 + ru.mirea.practice + 2024.1 + ../pom.xml + + 23K9901-p24 + Второе задание + diff --git a/students/23K9901/23K9901-p24/src/main/java/ru/mirea/practice/s0000001/AbstractQueue.java b/students/23K9901/23K9901-p24/src/main/java/ru/mirea/practice/s0000001/AbstractQueue.java new file mode 100644 index 000000000..1d8676f8b --- /dev/null +++ b/students/23K9901/23K9901-p24/src/main/java/ru/mirea/practice/s0000001/AbstractQueue.java @@ -0,0 +1,15 @@ +package ru.mirea.practice.s0000001; + +public abstract class AbstractQueue implements Queue { + protected int size = 0; + + @Override + public int size() { + return size; + } + + @Override + public boolean isEmpty() { + return size == 0; + } +} diff --git a/students/23K9901/23K9901-p24/src/main/java/ru/mirea/practice/s0000001/ArrayQueue.java b/students/23K9901/23K9901-p24/src/main/java/ru/mirea/practice/s0000001/ArrayQueue.java new file mode 100644 index 000000000..cd41b3a79 --- /dev/null +++ b/students/23K9901/23K9901-p24/src/main/java/ru/mirea/practice/s0000001/ArrayQueue.java @@ -0,0 +1,58 @@ +package ru.mirea.practice.s0000001; + +public class ArrayQueue extends AbstractQueue { + private Object[] elements = new Object[10]; + private int head = 0; + private int tail = 0; + + @Override + public void enqueue(Object element) { + if (element == null) { + throw new IllegalArgumentException("Null elements are not allowed"); + } + ensureCapacity(size + 1); + elements[tail] = element; + tail = (tail + 1) % elements.length; + size++; + } + + @Override + public Object element() { + if (isEmpty()) { + throw new IllegalStateException("Queue is empty"); + } + return elements[head]; + } + + @Override + public Object dequeue() { + if (isEmpty()) { + throw new IllegalStateException("Queue is empty"); + } + final Object result = elements[head]; + elements[head] = null; + head = (head + 1) % elements.length; + size--; + return result; + } + + @Override + public void clear() { + elements = new Object[10]; + head = 0; + tail = 0; + size = 0; + } + + private void ensureCapacity(int capacity) { + if (capacity > elements.length) { + Object[] newArray = new Object[2 * elements.length]; + for (int i = 0; i < size; i++) { + newArray[i] = elements[(head + i) % elements.length]; + } + elements = newArray; + head = 0; + tail = size; + } + } +} diff --git a/students/23K9901/23K9901-p24/src/main/java/ru/mirea/practice/s0000001/LinkedQueue.java b/students/23K9901/23K9901-p24/src/main/java/ru/mirea/practice/s0000001/LinkedQueue.java new file mode 100644 index 000000000..f610f3fd7 --- /dev/null +++ b/students/23K9901/23K9901-p24/src/main/java/ru/mirea/practice/s0000001/LinkedQueue.java @@ -0,0 +1,60 @@ +package ru.mirea.practice.s0000001; + +public class LinkedQueue extends AbstractQueue { + private static class Node { + Object value; + Node next; + + Node(Object value, Node next) { + this.value = value; + this.next = next; + } + } + + private Node head; + private Node tail; + + @Override + public void enqueue(Object element) { + if (element == null) { + throw new IllegalArgumentException("Null elements are not allowed"); + } + Node newNode = new Node(element, null); + if (isEmpty()) { + head = newNode; + } else { + tail.next = newNode; + } + tail = newNode; + size++; + } + + @Override + public Object element() { + if (isEmpty()) { + throw new IllegalStateException("Queue is empty"); + } + return head.value; + } + + @Override + public Object dequeue() { + if (isEmpty()) { + throw new IllegalStateException("Queue is empty"); + } + final Object value = head.value; + head = head.next; + if (head == null) { + tail = null; + } + size--; + return value; + } + + @Override + public void clear() { + head = null; + tail = null; + size = 0; + } +} diff --git a/students/23K9901/23K9901-p24/src/main/java/ru/mirea/practice/s0000001/Main.java b/students/23K9901/23K9901-p24/src/main/java/ru/mirea/practice/s0000001/Main.java new file mode 100644 index 000000000..dcd9156d5 --- /dev/null +++ b/students/23K9901/23K9901-p24/src/main/java/ru/mirea/practice/s0000001/Main.java @@ -0,0 +1,25 @@ +package ru.mirea.practice.s0000001; + +abstract class Main { + public static void main(String[] args) { + Queue arrayQueue = new ArrayQueue(); + Queue linkedQueue = new LinkedQueue(); + + testQueue(arrayQueue); + testQueue(linkedQueue); + } + + private static void testQueue(Queue queue) { + queue.enqueue(1); + queue.enqueue(2); + queue.enqueue(3); + + System.out.println("First element: " + queue.element()); + System.out.println("Dequeued: " + queue.dequeue()); + System.out.println("Size: " + queue.size()); + System.out.println("Is empty: " + queue.isEmpty()); + + queue.clear(); + System.out.println("Cleared. Is empty: " + queue.isEmpty()); + } +} diff --git a/students/23K9901/23K9901-p24/src/main/java/ru/mirea/practice/s0000001/Queue.java b/students/23K9901/23K9901-p24/src/main/java/ru/mirea/practice/s0000001/Queue.java new file mode 100644 index 000000000..130b67706 --- /dev/null +++ b/students/23K9901/23K9901-p24/src/main/java/ru/mirea/practice/s0000001/Queue.java @@ -0,0 +1,16 @@ +package ru.mirea.practice.s0000001; + +public interface Queue { + + void enqueue(Object element); + + Object element(); + + Object dequeue(); + + int size(); + + boolean isEmpty(); + + void clear(); +} diff --git a/students/23K9901/23K9901-p25/pom.xml b/students/23K9901/23K9901-p25/pom.xml new file mode 100644 index 000000000..e2a576e80 --- /dev/null +++ b/students/23K9901/23K9901-p25/pom.xml @@ -0,0 +1,13 @@ + + + 4.0.0 + + 23K9901 + ru.mirea.practice + 2024.1 + ../pom.xml + + 23K9901-p25 + Второе задание + diff --git a/students/23K9901/23K9901-p25/src/main/java/ru/mirea/practice/s0000001/Chair.java b/students/23K9901/23K9901-p25/src/main/java/ru/mirea/practice/s0000001/Chair.java new file mode 100644 index 000000000..fda48a5d6 --- /dev/null +++ b/students/23K9901/23K9901-p25/src/main/java/ru/mirea/practice/s0000001/Chair.java @@ -0,0 +1,5 @@ +package ru.mirea.practice.s0000001; + +public interface Chair { + void sit(); +} diff --git a/students/23K9901/23K9901-p25/src/main/java/ru/mirea/practice/s0000001/ChairFactory.java b/students/23K9901/23K9901-p25/src/main/java/ru/mirea/practice/s0000001/ChairFactory.java new file mode 100644 index 000000000..3a5321d1d --- /dev/null +++ b/students/23K9901/23K9901-p25/src/main/java/ru/mirea/practice/s0000001/ChairFactory.java @@ -0,0 +1,10 @@ +package ru.mirea.practice.s0000001; + +public interface ChairFactory { + + VictorianChair createVictorianChair(int age); + + MultifunctionalChair createMultifunctionalChair(); + + MagicChair createMagicChair(); +} diff --git a/students/23K9901/23K9901-p25/src/main/java/ru/mirea/practice/s0000001/Client.java b/students/23K9901/23K9901-p25/src/main/java/ru/mirea/practice/s0000001/Client.java new file mode 100644 index 000000000..83dfb8a3b --- /dev/null +++ b/students/23K9901/23K9901-p25/src/main/java/ru/mirea/practice/s0000001/Client.java @@ -0,0 +1,7 @@ +package ru.mirea.practice.s0000001; + +public class Client { + public void sit(Chair chair) { + chair.sit(); + } +} diff --git a/students/23K9901/23K9901-p25/src/main/java/ru/mirea/practice/s0000001/ConcreteChairFactory.java b/students/23K9901/23K9901-p25/src/main/java/ru/mirea/practice/s0000001/ConcreteChairFactory.java new file mode 100644 index 000000000..25667ad9d --- /dev/null +++ b/students/23K9901/23K9901-p25/src/main/java/ru/mirea/practice/s0000001/ConcreteChairFactory.java @@ -0,0 +1,18 @@ +package ru.mirea.practice.s0000001; + +public class ConcreteChairFactory implements ChairFactory { + @Override + public VictorianChair createVictorianChair(int age) { + return new VictorianChair(age); + } + + @Override + public MultifunctionalChair createMultifunctionalChair() { + return new MultifunctionalChair(); + } + + @Override + public MagicChair createMagicChair() { + return new MagicChair(); + } +} diff --git a/students/23K9901/23K9901-p25/src/main/java/ru/mirea/practice/s0000001/MagicChair.java b/students/23K9901/23K9901-p25/src/main/java/ru/mirea/practice/s0000001/MagicChair.java new file mode 100644 index 000000000..800701f55 --- /dev/null +++ b/students/23K9901/23K9901-p25/src/main/java/ru/mirea/practice/s0000001/MagicChair.java @@ -0,0 +1,12 @@ +package ru.mirea.practice.s0000001; + +public class MagicChair implements Chair { + @Override + public void sit() { + System.out.println("Вы сидите на магическом стуле."); + } + + public void doMagic() { + System.out.println("Магический стул выполняет магию."); + } +} diff --git a/students/23K9901/23K9901-p25/src/main/java/ru/mirea/practice/s0000001/Main.java b/students/23K9901/23K9901-p25/src/main/java/ru/mirea/practice/s0000001/Main.java new file mode 100644 index 000000000..0d839ae95 --- /dev/null +++ b/students/23K9901/23K9901-p25/src/main/java/ru/mirea/practice/s0000001/Main.java @@ -0,0 +1,19 @@ +package ru.mirea.practice.s0000001; + +abstract class Main { + public static void main(String[] args) { + ChairFactory factory = new ConcreteChairFactory(); + Client client = new Client(); + + Chair victorianChair = factory.createVictorianChair(100); + client.sit(victorianChair); + + MultifunctionalChair multifunctionalChair = factory.createMultifunctionalChair(); + client.sit(multifunctionalChair); + multifunctionalChair.transform(); + + MagicChair magicChair = factory.createMagicChair(); + client.sit(magicChair); + magicChair.doMagic(); + } +} diff --git a/students/23K9901/23K9901-p25/src/main/java/ru/mirea/practice/s0000001/MultifunctionalChair.java b/students/23K9901/23K9901-p25/src/main/java/ru/mirea/practice/s0000001/MultifunctionalChair.java new file mode 100644 index 000000000..86ea248ce --- /dev/null +++ b/students/23K9901/23K9901-p25/src/main/java/ru/mirea/practice/s0000001/MultifunctionalChair.java @@ -0,0 +1,12 @@ +package ru.mirea.practice.s0000001; + +public class MultifunctionalChair implements Chair { + @Override + public void sit() { + System.out.println("Вы сидите на многофункциональном стуле."); + } + + public void transform() { + System.out.println("Многофункциональный стул трансформируется в кровать."); + } +} diff --git a/students/23K9901/23K9901-p25/src/main/java/ru/mirea/practice/s0000001/VictorianChair.java b/students/23K9901/23K9901-p25/src/main/java/ru/mirea/practice/s0000001/VictorianChair.java new file mode 100644 index 000000000..8c9e8ff42 --- /dev/null +++ b/students/23K9901/23K9901-p25/src/main/java/ru/mirea/practice/s0000001/VictorianChair.java @@ -0,0 +1,18 @@ +package ru.mirea.practice.s0000001; + +public class VictorianChair implements Chair { + private final int age; + + public VictorianChair(int age) { + this.age = age; + } + + public int getAge() { + return age; + } + + @Override + public void sit() { + System.out.println("Вы сидите на викторианском стуле, которому " + age + " лет."); + } +} diff --git a/students/23K9901/23K9901-p26/pom.xml b/students/23K9901/23K9901-p26/pom.xml new file mode 100644 index 000000000..9c62dd6ab --- /dev/null +++ b/students/23K9901/23K9901-p26/pom.xml @@ -0,0 +1,13 @@ + + + 4.0.0 + + 23K9901 + ru.mirea.practice + 2024.1 + ../pom.xml + + 23K9901-p26 + Второе задание + diff --git a/students/23K9901/23K9901-p26/src/main/java/ru/mirea/practice/s0000001/RegexTest.java b/students/23K9901/23K9901-p26/src/main/java/ru/mirea/practice/s0000001/RegexTest.java new file mode 100644 index 000000000..accff7b80 --- /dev/null +++ b/students/23K9901/23K9901-p26/src/main/java/ru/mirea/practice/s0000001/RegexTest.java @@ -0,0 +1,15 @@ +package ru.mirea.practice.s0000001; + +abstract class RegexTest { + public static void main(String[] args) { + String regex = "^abcdefghijklmnopqrstuv18340$"; + + String correctString = "abcdefghijklmnopqrstuv18340"; + String incorrectString1 = "abcdefghijklmnoasdfasdpqrstuv18340"; + String incorrectString2 = "abcdefghijklmnopqrstuv18340extra"; + + System.out.println(correctString.matches(regex)); + System.out.println(incorrectString1.matches(regex)); + System.out.println(incorrectString2.matches(regex)); + } +} diff --git a/students/23K9901/23K9901-p27/pom.xml b/students/23K9901/23K9901-p27/pom.xml new file mode 100644 index 000000000..5ba582b6b --- /dev/null +++ b/students/23K9901/23K9901-p27/pom.xml @@ -0,0 +1,13 @@ + + + 4.0.0 + + 23K9901 + ru.mirea.practice + 2024.1 + ../pom.xml + + 23K9901-p27 + Второе задание + diff --git a/students/23K9901/23K9901-p27/src/main/java/ru/mirea/practice/s0000001/CustomListIterator.java b/students/23K9901/23K9901-p27/src/main/java/ru/mirea/practice/s0000001/CustomListIterator.java new file mode 100644 index 000000000..072eb6695 --- /dev/null +++ b/students/23K9901/23K9901-p27/src/main/java/ru/mirea/practice/s0000001/CustomListIterator.java @@ -0,0 +1,43 @@ +package ru.mirea.practice.s0000001; + +import java.util.List; +import java.util.NoSuchElementException; + +public class CustomListIterator implements java.util.Iterator { + private final List list; + private int index; + + public CustomListIterator(List list) { + this.list = list; + this.index = 0; + } + + @Override + public boolean hasNext() { + return index < list.size(); + } + + @Override + public T next() { + if (!hasNext()) { + throw new NoSuchElementException(); + } + return list.get(index++); + } + + @Override + public void remove() { + if (index == 0) { + throw new IllegalStateException("next() should be called before remove()"); + } + list.remove(--index); + } + + public static void main(String[] args) { + List list = java.util.Arrays.asList("One", "Two", "Three", "Four"); + CustomListIterator iterator = new CustomListIterator<>(list); + while (iterator.hasNext()) { + System.out.println(iterator.next()); + } + } +} diff --git a/students/23K9901/23K9901-p28/pom.xml b/students/23K9901/23K9901-p28/pom.xml new file mode 100644 index 000000000..d68d1ae27 --- /dev/null +++ b/students/23K9901/23K9901-p28/pom.xml @@ -0,0 +1,13 @@ + + + 4.0.0 + + 23K9901 + ru.mirea.practice + 2024.1 + ../pom.xml + + 23K9901-p28 + Второе задание + diff --git a/students/23K9901/23K9901-p28/src/main/java/ru/mirea/practice/s0000001/PriorityQueueDemo.java b/students/23K9901/23K9901-p28/src/main/java/ru/mirea/practice/s0000001/PriorityQueueDemo.java new file mode 100644 index 000000000..7c2070ae7 --- /dev/null +++ b/students/23K9901/23K9901-p28/src/main/java/ru/mirea/practice/s0000001/PriorityQueueDemo.java @@ -0,0 +1,31 @@ +package ru.mirea.practice.s0000001; + +import java.util.TreeSet; + +abstract class PriorityQueueDemo { + public static void main(String[] args) { + TreeSet priorityQueue = new TreeSet<>(); + + priorityQueue.add(15); + priorityQueue.add(10); + priorityQueue.add(20); + priorityQueue.add(5); + priorityQueue.add(25); + priorityQueue.add(30); + priorityQueue.add(1); + priorityQueue.add(12); + priorityQueue.add(18); + priorityQueue.add(3); + + System.out.println("Initial priority queue:"); + System.out.println(priorityQueue); + + System.out.println("\nExtracting and displaying a few elements:"); + System.out.println("First element: " + priorityQueue.pollFirst()); + System.out.println("Next element: " + priorityQueue.pollFirst()); + System.out.println("Next element: " + priorityQueue.pollFirst()); + + System.out.println("\nPriority queue after extracting elements:"); + System.out.println(priorityQueue); + } +} diff --git a/students/23K9901/23K9901-p29/pom.xml b/students/23K9901/23K9901-p29/pom.xml new file mode 100644 index 000000000..5e525b223 --- /dev/null +++ b/students/23K9901/23K9901-p29/pom.xml @@ -0,0 +1,13 @@ + + + 4.0.0 + + 23K9901 + ru.mirea.practice + 2024.1 + ../pom.xml + + 23K9901-p29 + Второе задание + diff --git a/students/23K9901/23K9901-p29/src/main/java/ru/mirea/practice/s0000001/NameSurnameMap.java b/students/23K9901/23K9901-p29/src/main/java/ru/mirea/practice/s0000001/NameSurnameMap.java new file mode 100644 index 000000000..0e7965d93 --- /dev/null +++ b/students/23K9901/23K9901-p29/src/main/java/ru/mirea/practice/s0000001/NameSurnameMap.java @@ -0,0 +1,55 @@ +package ru.mirea.practice.s0000001; + +import java.util.HashMap; +import java.util.Map; + +abstract class NameSurnameMap { + public static Map createMap() { + Map map = new HashMap<>(); + map.put("Ivanov", "Ivan"); + map.put("Petrov", "Petr"); + map.put("Sidorov", "Ivan"); + map.put("Kuznetsov", "Alex"); + map.put("Smirnov", "Petr"); + map.put("Popov", "Alex"); + map.put("Sokolov", "Vladimir"); + map.put("Morozov", "Ivan"); + map.put("Orlov", "Pavel"); + map.put("Volkov", "Alex"); + return map; + } + + public static int getSameFirstNameCount(Map map) { + Map nameCounts = new HashMap<>(); + for (String name : map.values()) { + nameCounts.put(name, nameCounts.getOrDefault(name, 0) + 1); + } + int count = 0; + for (int value : nameCounts.values()) { + if (value > 1) { + count++; + } + } + return count; + } + + public static int getSameLastNameCount(Map map) { + Map lastNameCounts = new HashMap<>(); + for (String lastName : map.keySet()) { + lastNameCounts.put(lastName, lastNameCounts.getOrDefault(lastName, 0) + 1); + } + int count = 0; + for (int value : lastNameCounts.values()) { + if (value > 1) { + count++; + } + } + return count; + } + + public static void main(String[] args) { + Map map = createMap(); + System.out.println("Number of duplicate first names: " + getSameFirstNameCount(map)); + System.out.println("Number of duplicate last names: " + getSameLastNameCount(map)); + } +} diff --git a/students/23K9901/23K9901-p30/pom.xml b/students/23K9901/23K9901-p30/pom.xml new file mode 100644 index 000000000..8bbf364fb --- /dev/null +++ b/students/23K9901/23K9901-p30/pom.xml @@ -0,0 +1,13 @@ + + + 4.0.0 + + 23K9901 + ru.mirea.practice + 2024.1 + ../pom.xml + + 23K9901-p30 + Второе задание + diff --git a/students/23K9901/23K9901-p30/src/main/java/ru/mirea/practice/s0000001/RC.java b/students/23K9901/23K9901-p30/src/main/java/ru/mirea/practice/s0000001/RC.java new file mode 100644 index 000000000..17cbfa7b7 --- /dev/null +++ b/students/23K9901/23K9901-p30/src/main/java/ru/mirea/practice/s0000001/RC.java @@ -0,0 +1,29 @@ +package ru.mirea.practice.s0000001; + +import java.util.Scanner; + +abstract class RC { + public static void main(String[] args) { + try (Scanner scanner = new Scanner(System.in)) { + int n = scanner.nextInt(); + + int[][] matrix = new int[n][n]; + for (int i = 0; i < n; i++) { + for (int j = 0; j < n; j++) { + matrix[i][j] = scanner.nextInt(); + } + } + + int rCount = 0; + for (int i = 0; i < n; i++) { + for (int j = i + 1; j < n; j++) { + if (matrix[i][j] == 1) { + rCount++; + } + } + } + + System.out.println(rCount); + } + } +} diff --git a/students/23K9901/23K9901-p32/pom.xml b/students/23K9901/23K9901-p32/pom.xml new file mode 100644 index 000000000..841ac9fcd --- /dev/null +++ b/students/23K9901/23K9901-p32/pom.xml @@ -0,0 +1,13 @@ + + + 4.0.0 + + 23K9901 + ru.mirea.practice + 2024.1 + ../pom.xml + + 23K9901-p32 + Второе задание + diff --git a/students/23K9901/23K9901-p32/src/main/java/ru/mirea/practice/s0000001/HuffmanCoding.java b/students/23K9901/23K9901-p32/src/main/java/ru/mirea/practice/s0000001/HuffmanCoding.java new file mode 100644 index 000000000..181345880 --- /dev/null +++ b/students/23K9901/23K9901-p32/src/main/java/ru/mirea/practice/s0000001/HuffmanCoding.java @@ -0,0 +1,66 @@ +package ru.mirea.practice.s0000001; + +import java.util.PriorityQueue; +import java.util.HashMap; +import java.util.Map; + +abstract class HuffmanCoding { + public static Map generateHuffmanCodes(Map frequencyMap) { + PriorityQueue priorityQueue = new PriorityQueue<>(); + + for (Map.Entry entry : frequencyMap.entrySet()) { + priorityQueue.add(new HuffmanNode(entry.getKey(), entry.getValue())); + } + + while (priorityQueue.size() > 1) { + HuffmanNode left = priorityQueue.poll(); + HuffmanNode right = priorityQueue.poll(); + HuffmanNode merged = new HuffmanNode('\0', left.frequency + right.frequency); + merged.left = left; + merged.right = right; + priorityQueue.add(merged); + } + + HuffmanNode root = priorityQueue.poll(); + Map huffmanCodes = new HashMap<>(); + buildHuffmanCodes(root, "", huffmanCodes); + return huffmanCodes; + } + + private static void buildHuffmanCodes(HuffmanNode node, String code, Map huffmanCodes) { + if (node == null) { + return; + } + + if (node.left == null && node.right == null) { + huffmanCodes.put(node.character, code); + return; + } + + buildHuffmanCodes(node.left, code + "0", huffmanCodes); + buildHuffmanCodes(node.right, code + "1", huffmanCodes); + } + + public static void main(String[] args) { + String text = "this is an example for huffman encoding"; + + Map frequencyMap = new HashMap<>(); + for (char c : text.toCharArray()) { + frequencyMap.put(c, frequencyMap.getOrDefault(c, 0) + 1); + } + + Map huffmanCodes = generateHuffmanCodes(frequencyMap); + + System.out.println("Huffman Codes:"); + for (Map.Entry entry : huffmanCodes.entrySet()) { + System.out.println(entry.getKey() + ": " + entry.getValue()); + } + + System.out.println("\nEncoded Text:"); + StringBuilder encodedText = new StringBuilder(); + for (char c : text.toCharArray()) { + encodedText.append(huffmanCodes.get(c)); + } + System.out.println(encodedText.toString()); + } +} diff --git a/students/23K9901/23K9901-p32/src/main/java/ru/mirea/practice/s0000001/HuffmanNode.java b/students/23K9901/23K9901-p32/src/main/java/ru/mirea/practice/s0000001/HuffmanNode.java new file mode 100644 index 000000000..e4b30a658 --- /dev/null +++ b/students/23K9901/23K9901-p32/src/main/java/ru/mirea/practice/s0000001/HuffmanNode.java @@ -0,0 +1,20 @@ +package ru.mirea.practice.s0000001; + +public class HuffmanNode implements Comparable { + char character; + int frequency; + HuffmanNode left; + HuffmanNode right; + + public HuffmanNode(char character, int frequency) { + this.character = character; + this.frequency = frequency; + this.left = null; + this.right = null; + } + + @Override + public int compareTo(HuffmanNode other) { + return Integer.compare(this.frequency, other.frequency); + } +} diff --git a/students/23K9901/A.java b/students/23K9901/A.java deleted file mode 100644 index e69de29bb..000000000 diff --git a/students/23K9901/pom.xml b/students/23K9901/pom.xml index ae492b94b..95ee8d280 100644 --- a/students/23K9901/pom.xml +++ b/students/23K9901/pom.xml @@ -30,5 +30,16 @@ 23K9901-p17 23K9901-p19 23K9901-p20 + 23K9901-p21 + 23K9901-p22 + 23K9901-p23 + 23K9901-p24 + 23K9901-p25 + 23K9901-p26 + 23K9901-p27 + 23K9901-p28 + 23K9901-p29 + 23K9901-p30 + 23K9901-p32 From f0eac6f722acfd3c0be9e0d0952bdfd1f4305f65 Mon Sep 17 00:00:00 2001 From: evoliatra Date: Fri, 13 Dec 2024 17:29:34 +0300 Subject: [PATCH 2/2] PR21-32 --- .../src/main/java/ru/mirea/practice/s0000001/Main.java | 2 +- .../practice/s0000001/{RPNCalc.java => RpnCalculator.java} | 5 ++++- 2 files changed, 5 insertions(+), 2 deletions(-) rename students/23K9901/23K9901-p23/src/main/java/ru/mirea/practice/s0000001/{RPNCalc.java => RpnCalculator.java} (97%) diff --git a/students/23K9901/23K9901-p23/src/main/java/ru/mirea/practice/s0000001/Main.java b/students/23K9901/23K9901-p23/src/main/java/ru/mirea/practice/s0000001/Main.java index 045698ec4..464ad6012 100644 --- a/students/23K9901/23K9901-p23/src/main/java/ru/mirea/practice/s0000001/Main.java +++ b/students/23K9901/23K9901-p23/src/main/java/ru/mirea/practice/s0000001/Main.java @@ -3,7 +3,7 @@ abstract class Main { public static void main(String[] args) { String rpnExpression = "3 4 + 2 * 7 /"; - double result = RPNCalc.calculate(rpnExpression); + double result = RpnCalculator.calculate(rpnExpression); System.out.println("Результат: " + result); } } diff --git a/students/23K9901/23K9901-p23/src/main/java/ru/mirea/practice/s0000001/RPNCalc.java b/students/23K9901/23K9901-p23/src/main/java/ru/mirea/practice/s0000001/RpnCalculator.java similarity index 97% rename from students/23K9901/23K9901-p23/src/main/java/ru/mirea/practice/s0000001/RPNCalc.java rename to students/23K9901/23K9901-p23/src/main/java/ru/mirea/practice/s0000001/RpnCalculator.java index ab93aa9f2..75a82db17 100644 --- a/students/23K9901/23K9901-p23/src/main/java/ru/mirea/practice/s0000001/RPNCalc.java +++ b/students/23K9901/23K9901-p23/src/main/java/ru/mirea/practice/s0000001/RpnCalculator.java @@ -1,8 +1,10 @@ package ru.mirea.practice.s0000001; + + import java.util.Stack; -abstract class RPnCalculator { +abstract class RpnCalculator { public static double calculate(String expression) { Stack stack = new Stack<>(); String[] tokens = expression.split("\\s+"); @@ -42,3 +44,4 @@ private static double applyOperation(double a, double b, String operator) { } } } +