diff --git a/students/23K0130/23K0130-p21/pom.xml b/students/23K0130/23K0130-p21/pom.xml
new file mode 100644
index 000000000..6f4610441
--- /dev/null
+++ b/students/23K0130/23K0130-p21/pom.xml
@@ -0,0 +1,13 @@
+
+
+ 4.0.0
+
+ 23K0130
+ ru.mirea.practice
+ 2024.1
+ ../pom.xml
+
+ 23K0130-p21
+ 21 задание
+
diff --git a/students/23K0130/23K0130-p21/src/main/java/ru/mirea/practice/s23k0130/Main.java b/students/23K0130/23K0130-p21/src/main/java/ru/mirea/practice/s23k0130/Main.java
new file mode 100644
index 000000000..cef172292
--- /dev/null
+++ b/students/23K0130/23K0130-p21/src/main/java/ru/mirea/practice/s23k0130/Main.java
@@ -0,0 +1,12 @@
+package ru.mirea.practice.s23k0130;
+
+public final class Main {
+
+ private Main() {
+
+ }
+
+ public static void main(String[] args) {
+ System.out.println("21 практическая работа");
+ }
+}
diff --git a/students/23K0130/23K0130-p21/src/main/java/ru/mirea/practice/s23k0130/task1/Main.java b/students/23K0130/23K0130-p21/src/main/java/ru/mirea/practice/s23k0130/task1/Main.java
new file mode 100644
index 000000000..779c3e255
--- /dev/null
+++ b/students/23K0130/23K0130-p21/src/main/java/ru/mirea/practice/s23k0130/task1/Main.java
@@ -0,0 +1,25 @@
+package ru.mirea.practice.s23k0130.task1;
+
+import java.util.ArrayList;
+import java.util.List;
+
+public abstract class Main {
+ public static List arrayToArrayList(T[] array) {
+ List list = new ArrayList<>();
+ for (T element : array) {
+ list.add(element);
+ }
+ return list;
+ }
+
+ public static void main(String[] args) {
+ Integer[] arrayInt = {0, 1, 0, 2, 0, 6};
+ List listInt = arrayToArrayList(arrayInt);
+ System.out.println(listInt);
+
+ String[] arrayStr = {"square", "triangle", "rectangle", "circle"};
+ List listStr = arrayToArrayList(arrayStr);
+ System.out.println(listStr);
+
+ }
+}
diff --git a/students/23K0130/23K0130-p22/pom.xml b/students/23K0130/23K0130-p22/pom.xml
new file mode 100644
index 000000000..b990e6cec
--- /dev/null
+++ b/students/23K0130/23K0130-p22/pom.xml
@@ -0,0 +1,13 @@
+
+
+ 4.0.0
+
+ 23K0130
+ ru.mirea.practice
+ 2024.1
+ ../pom.xml
+
+ 23K0130-p22
+ 22 задание
+
diff --git a/students/23K0130/23K0130-p22/src/main/java/ru/mirea/practice/s23k0130/Main.java b/students/23K0130/23K0130-p22/src/main/java/ru/mirea/practice/s23k0130/Main.java
new file mode 100644
index 000000000..8c61b7481
--- /dev/null
+++ b/students/23K0130/23K0130-p22/src/main/java/ru/mirea/practice/s23k0130/Main.java
@@ -0,0 +1,12 @@
+package ru.mirea.practice.s23k0130;
+
+public final class Main {
+
+ private Main() {
+
+ }
+
+ public static void main(String[] args) {
+ System.out.println("22 практическая работа");
+ }
+}
diff --git a/students/23K0130/23K0130-p22/src/main/java/ru/mirea/practice/s23k0130/task1/Main.java b/students/23K0130/23K0130-p22/src/main/java/ru/mirea/practice/s23k0130/task1/Main.java
new file mode 100644
index 000000000..d56ec897d
--- /dev/null
+++ b/students/23K0130/23K0130-p22/src/main/java/ru/mirea/practice/s23k0130/task1/Main.java
@@ -0,0 +1,9 @@
+package ru.mirea.practice.s23k0130.task1;
+
+abstract class Main {
+ public static void main(String[] args) {
+ String rpnExpression = "3 9 + 4 * 2 /";
+ double result = RPncalculator.calculate(rpnExpression);
+ System.out.println("Результат: " + result);
+ }
+}
diff --git a/students/23K0130/23K0130-p22/src/main/java/ru/mirea/practice/s23k0130/task1/RPncalculator.java b/students/23K0130/23K0130-p22/src/main/java/ru/mirea/practice/s23k0130/task1/RPncalculator.java
new file mode 100644
index 000000000..45ce0d0d3
--- /dev/null
+++ b/students/23K0130/23K0130-p22/src/main/java/ru/mirea/practice/s23k0130/task1/RPncalculator.java
@@ -0,0 +1,42 @@
+package ru.mirea.practice.s23k0130.task1;
+
+import java.util.Stack;
+
+abstract class RPncalculator {
+ 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/23K0130/23K0130-p23/pom.xml b/students/23K0130/23K0130-p23/pom.xml
new file mode 100644
index 000000000..57ddecf84
--- /dev/null
+++ b/students/23K0130/23K0130-p23/pom.xml
@@ -0,0 +1,13 @@
+
+
+ 4.0.0
+
+ 23K0130
+ ru.mirea.practice
+ 2024.1
+ ../pom.xml
+
+ 23K0130-p23
+ 23 задание
+
diff --git a/students/23K0130/23K0130-p23/src/main/java/ru/mirea/practice/s23k0130/Main.java b/students/23K0130/23K0130-p23/src/main/java/ru/mirea/practice/s23k0130/Main.java
new file mode 100644
index 000000000..656343336
--- /dev/null
+++ b/students/23K0130/23K0130-p23/src/main/java/ru/mirea/practice/s23k0130/Main.java
@@ -0,0 +1,12 @@
+package ru.mirea.practice.s23k0130;
+
+public final class Main {
+
+ private Main() {
+
+ }
+
+ public static void main(String[] args) {
+ System.out.println("23 практическая работа");
+ }
+}
diff --git a/students/23K0130/23K0130-p23/src/main/java/ru/mirea/practice/s23k0130/task1/ArrayQueue.java b/students/23K0130/23K0130-p23/src/main/java/ru/mirea/practice/s23k0130/task1/ArrayQueue.java
new file mode 100644
index 000000000..3424c51c9
--- /dev/null
+++ b/students/23K0130/23K0130-p23/src/main/java/ru/mirea/practice/s23k0130/task1/ArrayQueue.java
@@ -0,0 +1,58 @@
+package ru.mirea.practice.s23k0130.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 element() {
+ 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/23K0130/23K0130-p23/src/main/java/ru/mirea/practice/s23k0130/task1/ArrayQueueADt.java b/students/23K0130/23K0130-p23/src/main/java/ru/mirea/practice/s23k0130/task1/ArrayQueueADt.java
new file mode 100644
index 000000000..d6087df76
--- /dev/null
+++ b/students/23K0130/23K0130-p23/src/main/java/ru/mirea/practice/s23k0130/task1/ArrayQueueADt.java
@@ -0,0 +1,54 @@
+package ru.mirea.practice.s23k0130.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 element(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;
+ }
+ }
+}
\ No newline at end of file
diff --git a/students/23K0130/23K0130-p23/src/main/java/ru/mirea/practice/s23k0130/task1/ArrayQueueModule.java b/students/23K0130/23K0130-p23/src/main/java/ru/mirea/practice/s23k0130/task1/ArrayQueueModule.java
new file mode 100644
index 000000000..7b4922c7e
--- /dev/null
+++ b/students/23K0130/23K0130-p23/src/main/java/ru/mirea/practice/s23k0130/task1/ArrayQueueModule.java
@@ -0,0 +1,58 @@
+package ru.mirea.practice.s23k0130.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 element() {
+ 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/23K0130/23K0130-p23/src/main/java/ru/mirea/practice/s23k0130/task1/Main.java b/students/23K0130/23K0130-p23/src/main/java/ru/mirea/practice/s23k0130/task1/Main.java
new file mode 100644
index 000000000..bf0539b79
--- /dev/null
+++ b/students/23K0130/23K0130-p23/src/main/java/ru/mirea/practice/s23k0130/task1/Main.java
@@ -0,0 +1,59 @@
+package ru.mirea.practice.s23k0130.task1;
+
+public final class Main {
+
+ private Main() {
+ }
+
+ public static void main(String[] args) {
+ System.out.println("Тестирование ArrayQueueModule:");
+ testarrayqueuemodule();
+
+ System.out.println("\nТестирование ArrayQueueADt:");
+ testarrayaueueadt();
+
+ System.out.println("\nТестирование ArrayQueue:");
+ testarrayqueue();
+ }
+
+ private static void testarrayqueuemodule() {
+ ArrayQueueModule.enqueue(0);
+ ArrayQueueModule.enqueue(1);
+ System.out.println("Элементы добавлены: 0, 1");
+ System.out.println("Первый элемент: " + ArrayQueueModule.element());
+ System.out.println("Удалён первый элемент: " + ArrayQueueModule.dequeue());
+ System.out.println("Текущий размер: " + ArrayQueueModule.size());
+ System.out.println("Очередь пуста? " + ArrayQueueModule.isEmpty());
+ ArrayQueueModule.clear();
+ System.out.println("Очередь очищена.");
+ System.out.println("Очередь пуста? " + ArrayQueueModule.isEmpty());
+ }
+
+ private static void testarrayaueueadt() {
+ ArrayQueueADt queueadt = new ArrayQueueADt();
+ ArrayQueueADt.enqueue(queueadt, 0);
+ ArrayQueueADt.enqueue(queueadt, 2);
+ System.out.println("Элементы добавлены: 0, 2");
+ System.out.println("Первый элемент: " + ArrayQueueADt.element(queueadt));
+ System.out.println("Удалён первый элемент: " + ArrayQueueADt.dequeue(queueadt));
+ System.out.println("Текущий размер: " + ArrayQueueADt.size(queueadt));
+ System.out.println("Очередь пуста? " + ArrayQueueADt.isEmpty(queueadt));
+ ArrayQueueADt.clear(queueadt);
+ System.out.println("Очередь очищена.");
+ System.out.println("Очередь пуста? " + ArrayQueueADt.isEmpty(queueadt));
+ }
+
+ private static void testarrayqueue() {
+ ArrayQueue queue = new ArrayQueue();
+ queue.enqueue(0);
+ queue.enqueue(6);
+ System.out.println("Элементы добавлены: 0, 6");
+ System.out.println("Первый элемент: " + queue.element());
+ System.out.println("Удалён первый элемент: " + queue.dequeue());
+ System.out.println("Текущий размер: " + queue.size());
+ System.out.println("Очередь пуста? " + queue.isEmpty());
+ queue.clear();
+ System.out.println("Очередь очищена.");
+ System.out.println("Очередь пуста? " + queue.isEmpty());
+ }
+}
diff --git a/students/23K0130/23K0130-p24/pom.xml b/students/23K0130/23K0130-p24/pom.xml
new file mode 100644
index 000000000..f05f36f9b
--- /dev/null
+++ b/students/23K0130/23K0130-p24/pom.xml
@@ -0,0 +1,13 @@
+
+
+ 4.0.0
+
+ 23K0130
+ ru.mirea.practice
+ 2024.1
+ ../pom.xml
+
+ 23K0130-p24
+ 24 задание
+
diff --git a/students/23K0130/23K0130-p24/src/main/java/ru/mirea/practice/s23k0130/Main.java b/students/23K0130/23K0130-p24/src/main/java/ru/mirea/practice/s23k0130/Main.java
new file mode 100644
index 000000000..ec2276c1d
--- /dev/null
+++ b/students/23K0130/23K0130-p24/src/main/java/ru/mirea/practice/s23k0130/Main.java
@@ -0,0 +1,12 @@
+package ru.mirea.practice.s23k0130;
+
+public final class Main {
+
+ private Main() {
+
+ }
+
+ public static void main(String[] args) {
+ System.out.println("24 практическая работа");
+ }
+}
diff --git a/students/23K0130/23K0130-p24/src/main/java/ru/mirea/practice/s23k0130/task2/AbstractChairFactory.java b/students/23K0130/23K0130-p24/src/main/java/ru/mirea/practice/s23k0130/task2/AbstractChairFactory.java
new file mode 100644
index 000000000..32f22b147
--- /dev/null
+++ b/students/23K0130/23K0130-p24/src/main/java/ru/mirea/practice/s23k0130/task2/AbstractChairFactory.java
@@ -0,0 +1,9 @@
+package ru.mirea.practice.s23k0130.task2;
+
+public interface AbstractChairFactory {
+ VictorianChair createVictorianChair();
+
+ MagicChair createMagicChair();
+
+ FunctionalChair createFunctionalChair();
+}
diff --git a/students/23K0130/23K0130-p24/src/main/java/ru/mirea/practice/s23k0130/task2/Chair.java b/students/23K0130/23K0130-p24/src/main/java/ru/mirea/practice/s23k0130/task2/Chair.java
new file mode 100644
index 000000000..816cdb3f9
--- /dev/null
+++ b/students/23K0130/23K0130-p24/src/main/java/ru/mirea/practice/s23k0130/task2/Chair.java
@@ -0,0 +1,5 @@
+package ru.mirea.practice.s23k0130.task2;
+
+public interface Chair {
+ void sit();
+}
diff --git a/students/23K0130/23K0130-p24/src/main/java/ru/mirea/practice/s23k0130/task2/ChairFactory.java b/students/23K0130/23K0130-p24/src/main/java/ru/mirea/practice/s23k0130/task2/ChairFactory.java
new file mode 100644
index 000000000..ad6c78c71
--- /dev/null
+++ b/students/23K0130/23K0130-p24/src/main/java/ru/mirea/practice/s23k0130/task2/ChairFactory.java
@@ -0,0 +1,18 @@
+package ru.mirea.practice.s23k0130.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/23K0130/23K0130-p24/src/main/java/ru/mirea/practice/s23k0130/task2/Client.java b/students/23K0130/23K0130-p24/src/main/java/ru/mirea/practice/s23k0130/task2/Client.java
new file mode 100644
index 000000000..3a05452e1
--- /dev/null
+++ b/students/23K0130/23K0130-p24/src/main/java/ru/mirea/practice/s23k0130/task2/Client.java
@@ -0,0 +1,17 @@
+package ru.mirea.practice.s23k0130.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("Стул не выбран");
+ }
+ }
+}
\ No newline at end of file
diff --git a/students/23K0130/23K0130-p24/src/main/java/ru/mirea/practice/s23k0130/task2/FunctionalChair.java b/students/23K0130/23K0130-p24/src/main/java/ru/mirea/practice/s23k0130/task2/FunctionalChair.java
new file mode 100644
index 000000000..4dde2164b
--- /dev/null
+++ b/students/23K0130/23K0130-p24/src/main/java/ru/mirea/practice/s23k0130/task2/FunctionalChair.java
@@ -0,0 +1,8 @@
+package ru.mirea.practice.s23k0130.task2;
+
+public class FunctionalChair implements Chair {
+ @Override
+ public void sit() {
+ System.out.println("Сидим на функциональном стуле");
+ }
+}
diff --git a/students/23K0130/23K0130-p24/src/main/java/ru/mirea/practice/s23k0130/task2/MagicChair.java b/students/23K0130/23K0130-p24/src/main/java/ru/mirea/practice/s23k0130/task2/MagicChair.java
new file mode 100644
index 000000000..37dbc383c
--- /dev/null
+++ b/students/23K0130/23K0130-p24/src/main/java/ru/mirea/practice/s23k0130/task2/MagicChair.java
@@ -0,0 +1,8 @@
+package ru.mirea.practice.s23k0130.task2;
+
+public class MagicChair implements Chair {
+ @Override
+ public void sit() {
+ System.out.println("Сидим на магическом стуле");
+ }
+}
diff --git a/students/23K0130/23K0130-p24/src/main/java/ru/mirea/practice/s23k0130/task2/Main.java b/students/23K0130/23K0130-p24/src/main/java/ru/mirea/practice/s23k0130/task2/Main.java
new file mode 100644
index 000000000..728228428
--- /dev/null
+++ b/students/23K0130/23K0130-p24/src/main/java/ru/mirea/practice/s23k0130/task2/Main.java
@@ -0,0 +1,32 @@
+package ru.mirea.practice.s23k0130.task2;
+
+import java.util.Locale;
+import java.util.Scanner;
+
+public abstract class Main {
+ public static void main(String[] args) {
+ try (Scanner scanner = new Scanner(System.in)) {
+ ChairFactory chairFactory = new ChairFactory();
+ Client client = new Client();
+
+ System.out.println("Выберите тип стула: викторианский, магический или функциональный");
+ String chairChoice = scanner.nextLine().toLowerCase(Locale.ROOT);
+
+ switch (chairChoice) {
+ case "викторианский":
+ client.setChair(chairFactory.createVictorianChair());
+ break;
+ case "магический":
+ client.setChair(chairFactory.createMagicChair());
+ break;
+ case "функциональный":
+ client.setChair(chairFactory.createFunctionalChair());
+ break;
+ default:
+ System.out.println("Неверный выбор");
+ break;
+ }
+ client.sit();
+ }
+ }
+}
diff --git a/students/23K0130/23K0130-p24/src/main/java/ru/mirea/practice/s23k0130/task2/VictorianChair.java b/students/23K0130/23K0130-p24/src/main/java/ru/mirea/practice/s23k0130/task2/VictorianChair.java
new file mode 100644
index 000000000..f6ee7ac94
--- /dev/null
+++ b/students/23K0130/23K0130-p24/src/main/java/ru/mirea/practice/s23k0130/task2/VictorianChair.java
@@ -0,0 +1,8 @@
+package ru.mirea.practice.s23k0130.task2;
+
+public class VictorianChair implements Chair {
+ @Override
+ public void sit() {
+ System.out.println("Сидим на викторианском стуле");
+ }
+}
\ No newline at end of file
diff --git a/students/23K0130/23K0130-p25/pom.xml b/students/23K0130/23K0130-p25/pom.xml
new file mode 100644
index 000000000..b6f742912
--- /dev/null
+++ b/students/23K0130/23K0130-p25/pom.xml
@@ -0,0 +1,13 @@
+
+
+ 4.0.0
+
+ 23K0130
+ ru.mirea.practice
+ 2024.1
+ ../pom.xml
+
+ 23K0130-p25
+ 25 задание
+
diff --git a/students/23K0130/23K0130-p25/src/main/java/ru/mirea/practice/s23k0130/Main.java b/students/23K0130/23K0130-p25/src/main/java/ru/mirea/practice/s23k0130/Main.java
new file mode 100644
index 000000000..cb11ea309
--- /dev/null
+++ b/students/23K0130/23K0130-p25/src/main/java/ru/mirea/practice/s23k0130/Main.java
@@ -0,0 +1,12 @@
+package ru.mirea.practice.s23k0130;
+
+public final class Main {
+
+ private Main() {
+
+ }
+
+ public static void main(String[] args) {
+ System.out.println("25 практическая работа");
+ }
+}
diff --git a/students/23K0130/23K0130-p25/src/main/java/ru/mirea/practice/s23k0130/task2/Main.java b/students/23K0130/23K0130-p25/src/main/java/ru/mirea/practice/s23k0130/task2/Main.java
new file mode 100644
index 000000000..b65059ea0
--- /dev/null
+++ b/students/23K0130/23K0130-p25/src/main/java/ru/mirea/practice/s23k0130/task2/Main.java
@@ -0,0 +1,22 @@
+package ru.mirea.practice.s23k0130.task2;
+
+import java.util.regex.Pattern;
+import java.util.regex.Matcher;
+import java.util.Scanner;
+
+public abstract class Main {
+ public static void main(String[] args) {
+ try (Scanner scanner = new Scanner(System.in);) {
+ System.out.println("Введите строку:");
+ String input = scanner.nextLine();
+ String regex = "^abcdefghijklmnopqrstuv18340$";
+ Pattern pattern = Pattern.compile(regex);
+ Matcher matcher = pattern.matcher(input);
+ if (matcher.matches()) {
+ System.out.println("Строка совпадает с 'abcdefghijklmnopqrstuv18340'");
+ } else {
+ System.out.println("Строка не совпадает с 'abcdefghijklmnopqrstuv18340'");
+ }
+ }
+ }
+}
diff --git a/students/23K0130/23K0130-p25/src/main/java/ru/mirea/practice/s23k0130/task3/Main.java b/students/23K0130/23K0130-p25/src/main/java/ru/mirea/practice/s23k0130/task3/Main.java
new file mode 100644
index 000000000..f63a27b49
--- /dev/null
+++ b/students/23K0130/23K0130-p25/src/main/java/ru/mirea/practice/s23k0130/task3/Main.java
@@ -0,0 +1,26 @@
+package ru.mirea.practice.s23k0130.task3;
+
+import java.util.Scanner;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+
+public abstract class Main {
+ public static void main(String[] args) {
+ Scanner scanner = new Scanner(System.in);
+ try {
+ System.out.print("Введите текст для поиска цен: ");
+ String text = scanner.nextLine();
+ String regex = "\\b\\d{1,3}(\\.\\d{1,2})? (USD|RUB|EU)\\b";
+ Pattern pattern = Pattern.compile(regex);
+ Matcher matcher = pattern.matcher(text);
+ System.out.println("Цены в USD, RUB, EU:");
+ while (matcher.find()) {
+ System.out.println(matcher.group());
+ }
+ } finally {
+ if (scanner != null) {
+ scanner.close();
+ }
+ }
+ }
+}
diff --git a/students/23K0130/23K0130-p26/pom.xml b/students/23K0130/23K0130-p26/pom.xml
new file mode 100644
index 000000000..10fae36cd
--- /dev/null
+++ b/students/23K0130/23K0130-p26/pom.xml
@@ -0,0 +1,13 @@
+
+
+ 4.0.0
+
+ 23K0130
+ ru.mirea.practice
+ 2024.1
+ ../pom.xml
+
+ 23K0130-p26
+ 26 задание
+
diff --git a/students/23K0130/23K0130-p26/src/main/java/ru/mirea/practice/s23k0130/Main.java b/students/23K0130/23K0130-p26/src/main/java/ru/mirea/practice/s23k0130/Main.java
new file mode 100644
index 000000000..11bf60425
--- /dev/null
+++ b/students/23K0130/23K0130-p26/src/main/java/ru/mirea/practice/s23k0130/Main.java
@@ -0,0 +1,12 @@
+package ru.mirea.practice.s23k0130;
+
+public final class Main {
+
+ private Main() {
+
+ }
+
+ public static void main(String[] args) {
+ System.out.println("26 практическая работа");
+ }
+}
diff --git a/students/23K0130/23K0130-p26/src/main/java/ru/mirea/practice/s23k0130/task1/Main.java b/students/23K0130/23K0130-p26/src/main/java/ru/mirea/practice/s23k0130/task1/Main.java
new file mode 100644
index 000000000..41bb1b9f3
--- /dev/null
+++ b/students/23K0130/23K0130-p26/src/main/java/ru/mirea/practice/s23k0130/task1/Main.java
@@ -0,0 +1,31 @@
+package ru.mirea.practice.s23k0130.task1;
+
+import java.util.Stack;
+
+public abstract class Main {
+ public static void main(String[] args) {
+ int[] array = {0, 1, 0, 2, 0, 6};
+ System.out.print("Начальный массив: ");
+ printArray(array);
+ invertArray(array);
+ System.out.print("Инвертированный массив: ");
+ printArray(array);
+ }
+
+ public static void invertArray(int[] array) {
+ Stack stack = new Stack<>();
+ for (int value : array) {
+ stack.push(value);
+ }
+ for (int i = 0; i < array.length; i++) {
+ array[i] = stack.pop();
+ }
+ }
+
+ public static void printArray(int[] array) {
+ for (int value : array) {
+ System.out.print(value);
+ }
+ System.out.println();
+ }
+}
diff --git a/students/23K0130/23K0130-p27/pom.xml b/students/23K0130/23K0130-p27/pom.xml
new file mode 100644
index 000000000..05bdf4b98
--- /dev/null
+++ b/students/23K0130/23K0130-p27/pom.xml
@@ -0,0 +1,13 @@
+
+
+ 4.0.0
+
+ 23K0130
+ ru.mirea.practice
+ 2024.1
+ ../pom.xml
+
+ 23K0130-p27
+ 27 задание
+
diff --git a/students/23K0130/23K0130-p27/src/main/java/ru/mirea/practice/s23k0130/Main.java b/students/23K0130/23K0130-p27/src/main/java/ru/mirea/practice/s23k0130/Main.java
new file mode 100644
index 000000000..e0a9aa3fa
--- /dev/null
+++ b/students/23K0130/23K0130-p27/src/main/java/ru/mirea/practice/s23k0130/Main.java
@@ -0,0 +1,12 @@
+package ru.mirea.practice.s23k0130;
+
+public final class Main {
+
+ private Main() {
+
+ }
+
+ public static void main(String[] args) {
+ System.out.println("27 практическая работа");
+ }
+}
diff --git a/students/23K0130/23K0130-p27/src/main/java/ru/mirea/practice/s23k0130/task12/HashTab.java b/students/23K0130/23K0130-p27/src/main/java/ru/mirea/practice/s23k0130/task12/HashTab.java
new file mode 100644
index 000000000..9302e6602
--- /dev/null
+++ b/students/23K0130/23K0130-p27/src/main/java/ru/mirea/practice/s23k0130/task12/HashTab.java
@@ -0,0 +1,69 @@
+package ru.mirea.practice.s23k0130.task12;
+
+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 LinkedList[] table;
+ private int size;
+
+ @SuppressWarnings("unchecked")
+ 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/23K0130/23K0130-p27/src/main/java/ru/mirea/practice/s23k0130/task12/Main.java b/students/23K0130/23K0130-p27/src/main/java/ru/mirea/practice/s23k0130/task12/Main.java
new file mode 100644
index 000000000..fedd86b46
--- /dev/null
+++ b/students/23K0130/23K0130-p27/src/main/java/ru/mirea/practice/s23k0130/task12/Main.java
@@ -0,0 +1,26 @@
+package ru.mirea.practice.s23k0130.task12;
+
+public abstract class Main {
+ public static void main(String[] args) {
+ HashTab hashtab = new HashTab(10);
+ hashtab.add("key0", "value0");
+ hashtab.add("key1", "value1");
+ hashtab.add("key2", "value2");
+ hashtab.add("key3", "value3");
+ hashtab.add("key4", "value4");
+ hashtab.add("key5", "value5");
+ hashtab.add("key6", "value6");
+ hashtab.add("key7", "value7");
+ hashtab.add("key8", "value8");
+ hashtab.add("key9", "value9");
+ System.out.println("Содержимое хеш-таблицы:");
+ hashtab.printTable();
+ String value = hashtab.lookup("key2");
+ System.out.println("Поиск key2: " + (value != null ? value : "not found"));
+ hashtab.delete("key2");
+ System.out.println("После удаления key2:");
+ hashtab.printTable();
+ value = hashtab.lookup("key2");
+ System.out.println("Поиск key2 после удаления: " + (value != null ? value : "not found"));
+ }
+}
diff --git a/students/23K0130/23K0130-p28/pom.xml b/students/23K0130/23K0130-p28/pom.xml
new file mode 100644
index 000000000..37ae411fd
--- /dev/null
+++ b/students/23K0130/23K0130-p28/pom.xml
@@ -0,0 +1,13 @@
+
+
+ 4.0.0
+
+ 23K0130
+ ru.mirea.practice
+ 2024.1
+ ../pom.xml
+
+ 23K0130-p28
+ 28 задание
+
diff --git a/students/23K0130/23K0130-p28/src/main/java/ru/mirea/practice/s23k0130/Main.java b/students/23K0130/23K0130-p28/src/main/java/ru/mirea/practice/s23k0130/Main.java
new file mode 100644
index 000000000..641106ac3
--- /dev/null
+++ b/students/23K0130/23K0130-p28/src/main/java/ru/mirea/practice/s23k0130/Main.java
@@ -0,0 +1,12 @@
+package ru.mirea.practice.s23k0130;
+
+public final class Main {
+
+ private Main() {
+
+ }
+
+ public static void main(String[] args) {
+ System.out.println("28 практическая работа");
+ }
+}
diff --git a/students/23K0130/23K0130-p28/src/main/java/ru/mirea/practice/s23k0130/task2/Main.java b/students/23K0130/23K0130-p28/src/main/java/ru/mirea/practice/s23k0130/task2/Main.java
new file mode 100644
index 000000000..a58448067
--- /dev/null
+++ b/students/23K0130/23K0130-p28/src/main/java/ru/mirea/practice/s23k0130/task2/Main.java
@@ -0,0 +1,57 @@
+package ru.mirea.practice.s23k0130.task2;
+
+import java.util.HashMap;
+import java.util.Map;
+
+public abstract class Main {
+
+ public static void main(String[] args) {
+ Map map = createMap();
+ int sameFirstNameCount = getSameFirstNameCount(map);
+ int sameLastNameCount = getSameLastNameCount(map);
+ System.out.println(sameFirstNameCount + " " + sameLastNameCount);
+ }
+
+ public static Map createMap() {
+ Map map = new HashMap<>();
+ map.put("Чернов", "Григорий");
+ map.put("Чернушкин", "Игорь");
+ map.put("Черный", "Себастиан");
+ map.put("Чернышенко", "Матвей");
+ map.put("Белый", "Николай");
+ map.put("Белов", "Петр");
+ map.put("Белозеров", "Сергей");
+ map.put("Серов", "Иван");
+ map.put("Сырный", "Алексей");
+ map.put("Серый", "Сергей");
+ return map;
+ }
+
+ public static int getSameFirstNameCount(Map map) {
+ Map firstNameCount = new HashMap<>();
+ for (String firstName : map.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 map) {
+ Map lastNameCount = new HashMap<>();
+ for (String lastName : map.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/23K0130/23K0130-p29/pom.xml b/students/23K0130/23K0130-p29/pom.xml
new file mode 100644
index 000000000..20af2506c
--- /dev/null
+++ b/students/23K0130/23K0130-p29/pom.xml
@@ -0,0 +1,13 @@
+
+
+ 4.0.0
+
+ 23K0130
+ ru.mirea.practice
+ 2024.1
+ ../pom.xml
+
+ 23K0130-p29
+ 29 задание
+
diff --git a/students/23K0130/23K0130-p29/src/main/java/ru/mirea/practice/s23k0130/Main.java b/students/23K0130/23K0130-p29/src/main/java/ru/mirea/practice/s23k0130/Main.java
new file mode 100644
index 000000000..7ce96c296
--- /dev/null
+++ b/students/23K0130/23K0130-p29/src/main/java/ru/mirea/practice/s23k0130/Main.java
@@ -0,0 +1,12 @@
+package ru.mirea.practice.s23k0130;
+
+public final class Main {
+
+ private Main() {
+
+ }
+
+ public static void main(String[] args) {
+ System.out.println("29 практическая работа");
+ }
+}
diff --git a/students/23K0130/23K0130-p29/src/main/java/ru/mirea/practice/s23k0130/task/Main.java b/students/23K0130/23K0130-p29/src/main/java/ru/mirea/practice/s23k0130/task/Main.java
new file mode 100644
index 000000000..1757bd8e6
--- /dev/null
+++ b/students/23K0130/23K0130-p29/src/main/java/ru/mirea/practice/s23k0130/task/Main.java
@@ -0,0 +1,27 @@
+package ru.mirea.practice.s23k0130.task;
+
+import java.util.Scanner;
+
+public final class Main {
+ private Main() {
+ }
+
+ public static void main(String[] args) {
+ try (Scanner scanner = new Scanner(System.in)) {
+ int n = scanner.nextInt();
+ int[][] roads = new int[n][n];
+ for (int i = 0; i < n; i++) {
+ for (int j = 0; j < n; j++) {
+ roads[i][j] = scanner.nextInt();
+ }
+ }
+ int roadCount = 0;
+ for (int i = 0; i < n; i++) {
+ for (int j = i + 1; j < n; j++) {
+ roadCount += roads[i][j];
+ }
+ }
+ System.out.println(roadCount);
+ }
+ }
+}
diff --git a/students/23K0130/23K0130-p30-1/pom.xml b/students/23K0130/23K0130-p30-1/pom.xml
new file mode 100644
index 000000000..271c7ecb5
--- /dev/null
+++ b/students/23K0130/23K0130-p30-1/pom.xml
@@ -0,0 +1,13 @@
+
+
+ 4.0.0
+
+ 23K0130
+ ru.mirea.practice
+ 2024.1
+ ../pom.xml
+
+ 23K0130-p30-1
+ 30-1 задание
+
diff --git a/students/23K0130/23K0130-p30-1/src/main/java/ru/mirea/practice/s23k0130/Main.java b/students/23K0130/23K0130-p30-1/src/main/java/ru/mirea/practice/s23k0130/Main.java
new file mode 100644
index 000000000..a09d42dcb
--- /dev/null
+++ b/students/23K0130/23K0130-p30-1/src/main/java/ru/mirea/practice/s23k0130/Main.java
@@ -0,0 +1,12 @@
+package ru.mirea.practice.s23k0130;
+
+public final class Main {
+
+ private Main() {
+
+ }
+
+ public static void main(String[] args) {
+ System.out.println("30-1 практическая работа");
+ }
+}
diff --git a/students/23K0130/23K0130-p30-1/src/main/java/ru/mirea/practice/s23k0130/task/BinaryTree.java b/students/23K0130/23K0130-p30-1/src/main/java/ru/mirea/practice/s23k0130/task/BinaryTree.java
new file mode 100644
index 000000000..123f87041
--- /dev/null
+++ b/students/23K0130/23K0130-p30-1/src/main/java/ru/mirea/practice/s23k0130/task/BinaryTree.java
@@ -0,0 +1,90 @@
+package ru.mirea.practice.s23k0130.task;
+
+public class BinaryTree {
+ Node root;
+
+ int height(Node node) {
+ if (node == null) {
+ return 0;
+ }
+ int heighLeft = height(node.left);
+ int heighRight = height(node.right);
+ return Math.max(heighLeft, heighRight) + 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;
+ }
+
+ 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.root));
+ System.out.println("Размер дерева: " + tree.size(tree.root));
+ System.out.println("Максимальная ширина дерева: " + tree.getMaxWidth(tree.root));
+ int target1 = 5;
+ System.out.println("Поиск " + target1 + ": " + tree.lookup(tree.root, target1));
+ int target2 = 2;
+ System.out.println("Поиск " + 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("Являются ли эти два дерева одинаковыми? " + tree.sameTree(tree.root, tree2.root));
+ }
+}
diff --git a/students/23K0130/23K0130-p30-1/src/main/java/ru/mirea/practice/s23k0130/task/Node.java b/students/23K0130/23K0130-p30-1/src/main/java/ru/mirea/practice/s23k0130/task/Node.java
new file mode 100644
index 000000000..98cf455a8
--- /dev/null
+++ b/students/23K0130/23K0130-p30-1/src/main/java/ru/mirea/practice/s23k0130/task/Node.java
@@ -0,0 +1,13 @@
+package ru.mirea.practice.s23k0130.task;
+
+public class Node {
+ int data;
+ Node left;
+ Node right;
+
+ Node(int d) {
+ data = d;
+ left = null;
+ right = null;
+ }
+}
diff --git a/students/23K0130/23K0130-p30-2/pom.xml b/students/23K0130/23K0130-p30-2/pom.xml
new file mode 100644
index 000000000..f9418220f
--- /dev/null
+++ b/students/23K0130/23K0130-p30-2/pom.xml
@@ -0,0 +1,13 @@
+
+
+ 4.0.0
+
+ 23K0130
+ ru.mirea.practice
+ 2024.1
+ ../pom.xml
+
+ 23K0130-p30-2
+ 30-2 задание
+
diff --git a/students/23K0130/23K0130-p30-2/src/main/java/ru/mirea/practice/s23k0130/Main.java b/students/23K0130/23K0130-p30-2/src/main/java/ru/mirea/practice/s23k0130/Main.java
new file mode 100644
index 000000000..05b296417
--- /dev/null
+++ b/students/23K0130/23K0130-p30-2/src/main/java/ru/mirea/practice/s23k0130/Main.java
@@ -0,0 +1,12 @@
+package ru.mirea.practice.s23k0130;
+
+public final class Main {
+
+ private Main() {
+
+ }
+
+ public static void main(String[] args) {
+ System.out.println("30-2 практическая работа");
+ }
+}
diff --git a/students/23K0130/23K0130-p30-2/src/main/java/ru/mirea/practice/s23k0130/task/BinaryTree.java b/students/23K0130/23K0130-p30-2/src/main/java/ru/mirea/practice/s23k0130/task/BinaryTree.java
new file mode 100644
index 000000000..b87183dff
--- /dev/null
+++ b/students/23K0130/23K0130-p30-2/src/main/java/ru/mirea/practice/s23k0130/task/BinaryTree.java
@@ -0,0 +1,115 @@
+package ru.mirea.practice.s23k0130.task;
+
+public class BinaryTree {
+ Node root;
+ int count;
+
+ public BinaryTree() {
+ root = null;
+ count = 0;
+ }
+
+ public void insert(int item) {
+ Node newNode = new Node(item);
+ if (root == null) {
+ root = newNode;
+ count++;
+ return;
+ }
+ Node current = root;
+ Node parent;
+ while (true) {
+ parent = current;
+ if (item < current.data) {
+ current = current.left;
+ if (current == null) {
+ parent.left = newNode;
+ count++;
+ return;
+ }
+ } else if (item > current.data) {
+ current = current.right;
+ if (current == null) {
+ parent.right = newNode;
+ count++;
+ return;
+ }
+ } else {
+ System.out.println("Элемент " + item + " уже существует в дереве.");
+ return;
+ }
+ }
+ }
+
+ public void inorder() {
+ inorderRec(root);
+ System.out.println();
+ }
+
+ private void inorderRec(Node node) {
+ if (node != null) {
+ inorderRec(node.left);
+ System.out.print(node.data + " ");
+ inorderRec(node.right);
+ }
+ }
+
+ public void delete(int key) {
+ root = deleteRec(root, key);
+ }
+
+ private Node deleteRec(Node root, int key) {
+ if (root == null) {
+ System.out.println("Узел " + key + " не найден.");
+ return null;
+ }
+ if (key < root.data) {
+ root.left = deleteRec(root.left, key);
+ } else if (key > root.data) {
+ root.right = deleteRec(root.right, key);
+ } else {
+ if (root.left == null && root.right == null) {
+ return null;
+ } else if (root.left == null) {
+ return root.right;
+ } else if (root.right == null) {
+ return root.left;
+ } else {
+ Node successor = findMin(root.right);
+ root.data = successor.data;
+ root.right = deleteRec(root.right, successor.data);
+ }
+ count--;
+ }
+ return root;
+ }
+
+ private Node findMin(Node node) {
+ while (node.left != null) {
+ node = node.left;
+ }
+ return node;
+ }
+
+ public void destroyTree() {
+ root = null;
+ count = 0;
+ }
+
+ public static void main(String[] args) {
+ BinaryTree tree = new BinaryTree();
+ int[] nodes = {0, 2, 1, 3, 9, 5, 7, 6, 8, 4};
+ for (int node : nodes) {
+ tree.insert(node);
+ }
+ System.out.println("Содержимое дерева в сортированном порядке:");
+ tree.inorder();
+ int keyToDelete = 7;
+ System.out.println("Удаление узла: " + keyToDelete);
+ tree.delete(keyToDelete);
+ System.out.println("Содержимое дерева после удаления узла:");
+ tree.inorder();
+ tree.destroyTree();
+ System.out.println("Полное удаление дерева.");
+ }
+}
diff --git a/students/23K0130/23K0130-p30-2/src/main/java/ru/mirea/practice/s23k0130/task/Node.java b/students/23K0130/23K0130-p30-2/src/main/java/ru/mirea/practice/s23k0130/task/Node.java
new file mode 100644
index 000000000..fcb765f6f
--- /dev/null
+++ b/students/23K0130/23K0130-p30-2/src/main/java/ru/mirea/practice/s23k0130/task/Node.java
@@ -0,0 +1,13 @@
+package ru.mirea.practice.s23k0130.task;
+
+public class Node {
+ int data;
+ Node left;
+ Node right;
+
+ Node(int d) {
+ data = d;
+ left = null;
+ right = null;
+ }
+}
\ No newline at end of file
diff --git a/students/23K0130/23K0130-p31/pom.xml b/students/23K0130/23K0130-p31/pom.xml
new file mode 100644
index 000000000..d2b445a04
--- /dev/null
+++ b/students/23K0130/23K0130-p31/pom.xml
@@ -0,0 +1,13 @@
+
+
+ 4.0.0
+
+ 23K0130
+ ru.mirea.practice
+ 2024.1
+ ../pom.xml
+
+ 23K0130-p31
+ 31 задание
+
diff --git a/students/23K0130/23K0130-p31/src/main/java/ru/mirea/practice/s23k0130/Main.java b/students/23K0130/23K0130-p31/src/main/java/ru/mirea/practice/s23k0130/Main.java
new file mode 100644
index 000000000..0b8edf0dc
--- /dev/null
+++ b/students/23K0130/23K0130-p31/src/main/java/ru/mirea/practice/s23k0130/Main.java
@@ -0,0 +1,12 @@
+package ru.mirea.practice.s23k0130;
+
+public final class Main {
+
+ private Main() {
+
+ }
+
+ public static void main(String[] args) {
+ System.out.println("31 практическая работа");
+ }
+}
diff --git a/students/23K0130/23K0130-p31/src/main/java/ru/mirea/practice/s23k0130/task/Node.java b/students/23K0130/23K0130-p31/src/main/java/ru/mirea/practice/s23k0130/task/Node.java
new file mode 100644
index 000000000..3ab413906
--- /dev/null
+++ b/students/23K0130/23K0130-p31/src/main/java/ru/mirea/practice/s23k0130/task/Node.java
@@ -0,0 +1,13 @@
+package ru.mirea.practice.s23k0130.task;
+
+public class Node {
+ int data;
+ Node left;
+ Node right;
+
+ Node(int data) {
+ this.data = data;
+ left = null;
+ right = null;
+ }
+}
diff --git a/students/23K0130/23K0130-p31/src/main/java/ru/mirea/practice/s23k0130/task/Tree.java b/students/23K0130/23K0130-p31/src/main/java/ru/mirea/practice/s23k0130/task/Tree.java
new file mode 100644
index 000000000..3ffaf2a4f
--- /dev/null
+++ b/students/23K0130/23K0130-p31/src/main/java/ru/mirea/practice/s23k0130/task/Tree.java
@@ -0,0 +1,59 @@
+package ru.mirea.practice.s23k0130.task;
+
+import java.util.LinkedList;
+import java.util.Queue;
+import java.util.Stack;
+
+public abstract class Tree {
+
+ public static void printTree(Node root) {
+ if (root == null) {
+ return;
+ }
+ int height = getHeight(root);
+ Stack levels = new Stack<>();
+ Queue queue = new LinkedList<>();
+ queue.offer(root);
+ for (int level = 0; level < height; level++) {
+ int levelSize = queue.size();
+ int spacesBeforeFirstNode = (int) Math.pow(2, height - level - 1) - 1;
+ int spacesBetweenNodes = (int) Math.pow(2, height - level) - 1;
+ StringBuilder levelString = new StringBuilder(" ".repeat(spacesBeforeFirstNode));
+ for (int i = 0; i < levelSize; i++) {
+ Node node = queue.poll();
+ levelString.append(node.data);
+ if (i < levelSize - 1) {
+ levelString.append(" ".repeat(spacesBetweenNodes));
+ }
+ if (node.left != null) {
+ queue.offer(node.left);
+ }
+ if (node.right != null) {
+ queue.offer(node.right);
+ }
+ }
+ levels.push(levelString.toString());
+ }
+ while (!levels.isEmpty()) {
+ System.out.println(levels.pop());
+ }
+ }
+
+ private static int getHeight(Node root) {
+ if (root == null) {
+ return 0;
+ }
+ return Math.max(getHeight(root.left), getHeight(root.right)) + 1;
+ }
+
+ public static void main(String[] args) {
+ Node root = new Node(5);
+ root.left = new Node(2);
+ root.right = new Node(6);
+ root.left.left = new Node(1);
+ root.left.right = new Node(2);
+ root.right.left = new Node(5);
+ root.right.right = new Node(6);
+ printTree(root);
+ }
+}
\ No newline at end of file
diff --git a/students/23K0130/23K0130-p32/pom.xml b/students/23K0130/23K0130-p32/pom.xml
new file mode 100644
index 000000000..71abe1fb6
--- /dev/null
+++ b/students/23K0130/23K0130-p32/pom.xml
@@ -0,0 +1,13 @@
+
+
+ 4.0.0
+
+ 23K0130
+ ru.mirea.practice
+ 2024.1
+ ../pom.xml
+
+ 23K0130-p32
+ 32 задание
+
diff --git a/students/23K0130/23K0130-p32/src/main/java/ru/mirea/practice/s23k0130/Main.java b/students/23K0130/23K0130-p32/src/main/java/ru/mirea/practice/s23k0130/Main.java
new file mode 100644
index 000000000..492164eae
--- /dev/null
+++ b/students/23K0130/23K0130-p32/src/main/java/ru/mirea/practice/s23k0130/Main.java
@@ -0,0 +1,12 @@
+package ru.mirea.practice.s23k0130;
+
+public final class Main {
+
+ private Main() {
+
+ }
+
+ public static void main(String[] args) {
+ System.out.println("32 практическая работа");
+ }
+}
diff --git a/students/23K0130/23K0130-p32/src/main/java/ru/mirea/practice/s23k0130/task/Main.java b/students/23K0130/23K0130-p32/src/main/java/ru/mirea/practice/s23k0130/task/Main.java
new file mode 100644
index 000000000..3636e544d
--- /dev/null
+++ b/students/23K0130/23K0130-p32/src/main/java/ru/mirea/practice/s23k0130/task/Main.java
@@ -0,0 +1,64 @@
+package ru.mirea.practice.s23k0130.task;
+
+public abstract class Main {
+
+ public static void printPermutation(int[] permutation) {
+ for (int num : permutation) {
+ System.out.print(num + " ");
+ }
+ System.out.println();
+ }
+
+ public static void generatePermutations(int n) {
+ int[] permutation = new int[n];
+ int[] direction = new int[n];
+ for (int i = 0; i < n; i++) {
+ permutation[i] = i + 1;
+ direction[i] = 0;
+ }
+ printPermutation(permutation);
+ boolean hasNext = true;
+ while (hasNext) {
+ int largestMobile = -1;
+ int largestMobileIndex = -1;
+ for (int i = 0; i < n; i++) {
+ if (direction[i] == 0 && i > 0 && permutation[i] > permutation[i - 1]
+ || direction[i] == 1 && i < n - 1 && permutation[i] > permutation[i + 1]) {
+ if (permutation[i] > largestMobile) {
+ largestMobile = permutation[i];
+ largestMobileIndex = i;
+ }
+ }
+ }
+ if (largestMobile == -1) {
+ hasNext = false;
+ } else {
+ int index = largestMobileIndex;
+ int temp = permutation[index];
+ if (direction[index] == 0) {
+ permutation[index] = permutation[index - 1];
+ permutation[index - 1] = temp;
+ direction[index] = 1;
+ direction[index - 1] = 0;
+ } else {
+ permutation[index] = permutation[index + 1];
+ permutation[index + 1] = temp;
+ direction[index] = 0;
+ direction[index + 1] = 1;
+ }
+
+ for (int i = 0; i < n; i++) {
+ if (permutation[i] > largestMobile) {
+ direction[i] = 1 - direction[i];
+ }
+ }
+ printPermutation(permutation);
+ }
+ }
+ }
+
+ public static void main(String[] args) {
+ int n = 3;
+ generatePermutations(n);
+ }
+}
diff --git a/students/23K0130/pom.xml b/students/23K0130/pom.xml
index 408496b4b..bb8efdf6b 100644
--- a/students/23K0130/pom.xml
+++ b/students/23K0130/pom.xml
@@ -34,5 +34,18 @@
23K0130-p18
23K0130-p19
23K0130-p20
+ 23K0130-p21
+ 23K0130-p22
+ 23K0130-p23
+ 23K0130-p24
+ 23K0130-p25
+ 23K0130-p26
+ 23K0130-p27
+ 23K0130-p28
+ 23K0130-p29
+ 23K0130-p30-1
+ 23K0130-p30-2
+ 23K0130-p31
+ 23K0130-p32