diff --git a/pom.xml b/pom.xml
index 3abccea2f..046aea7d6 100644
--- a/pom.xml
+++ b/pom.xml
@@ -81,6 +81,8 @@
students/23K0186
students/23K0755
students/23K1292
+ students/23K1158
+
diff --git a/students/23K1158/23K1158-025/pom.xml b/students/23K1158/23K1158-025/pom.xml
new file mode 100644
index 000000000..5ebb11dcd
--- /dev/null
+++ b/students/23K1158/23K1158-025/pom.xml
@@ -0,0 +1,13 @@
+
+
+ 4.0.0
+
+ 23K1158
+ ru.mirea.practice
+ 2024.1
+ ../pom.xml
+
+ 23K1158-025
+ 025
+
diff --git a/students/23K1158/23K1158-025/src/main/java/ru/mirea/practice/u23k1158/t1/Main.java b/students/23K1158/23K1158-025/src/main/java/ru/mirea/practice/u23k1158/t1/Main.java
new file mode 100644
index 000000000..2e939bd9a
--- /dev/null
+++ b/students/23K1158/23K1158-025/src/main/java/ru/mirea/practice/u23k1158/t1/Main.java
@@ -0,0 +1,9 @@
+package ru.mirea.practice.u23k1158.t1;
+
+public final class Main {
+ private Main() {
+ }
+ public static void main(String[] args) {
+ System.out.println("Двадцать пятая практическая работа");
+ }
+}
diff --git a/students/23K1158/23K1158-025/src/main/java/ru/mirea/practice/u23k1158/t1/StringChecker.java b/students/23K1158/23K1158-025/src/main/java/ru/mirea/practice/u23k1158/t1/StringChecker.java
new file mode 100644
index 000000000..18f762025
--- /dev/null
+++ b/students/23K1158/23K1158-025/src/main/java/ru/mirea/practice/u23k1158/t1/StringChecker.java
@@ -0,0 +1,18 @@
+package ru.mirea.practice.u23k1158.t1;
+
+public abstract class StringChecker {
+ // Регулярное выражение для проверки строки
+ private static final String PATTERN = "^abcdefghijklmnopqrstuv18340$";
+ // Метод для проверки строки
+ public static boolean isValidString(String input) {
+ return input.matches(PATTERN);
+ }
+ public static void main(String[] args) {
+ // Примеры строк для проверки
+ String validString = "abcdefghijklmnopqrstuv18340";
+ String invalidString = "abcdefghijklmnoasdfasdpqrstuv18340";
+ // Проверка строк
+ System.out.println("Строка \"" + validString + "\" корректна: " + isValidString(validString));
+ System.out.println("Строка \"" + invalidString + "\" корректна: " + isValidString(invalidString));
+ }
+}
diff --git a/students/23K1158/23K1158-025/src/main/java/ru/mirea/practice/u23k1158/t1/t3/PriceExtractor.java b/students/23K1158/23K1158-025/src/main/java/ru/mirea/practice/u23k1158/t1/t3/PriceExtractor.java
new file mode 100644
index 000000000..66d7021b6
--- /dev/null
+++ b/students/23K1158/23K1158-025/src/main/java/ru/mirea/practice/u23k1158/t1/t3/PriceExtractor.java
@@ -0,0 +1,18 @@
+package ru.mirea.practice.u23k1158.t1.t3;
+
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+public abstract class PriceExtractor {
+ public static void main(String[] args) {
+ String text = "The product costs 25.98 USD, another is priced at 50.00 RUB,"
+ + "and there's one more at 30.50 EU. Wrong prices include 44 ERR, 0.004 EU, and 20.3 USD.";
+ // Регулярное выражение для поиска цен
+ String pattern = "\\b\\d{1,}\\.\\d{2}\\s(?:USD|RUB|EU)\\b";
+ Pattern compiledPattern = Pattern.compile(pattern);
+ Matcher matcher = compiledPattern.matcher(text);
+ System.out.println("Найденные цены:");
+ while (matcher.find()) {
+ System.out.println(matcher.group());
+ }
+ }
+}
diff --git a/students/23K1158/23K1158-025/src/main/java/ru/mirea/practice/u23k1158/t1/t6/EmailValidator.java b/students/23K1158/23K1158-025/src/main/java/ru/mirea/practice/u23k1158/t1/t6/EmailValidator.java
new file mode 100644
index 000000000..ea91fdd78
--- /dev/null
+++ b/students/23K1158/23K1158-025/src/main/java/ru/mirea/practice/u23k1158/t1/t6/EmailValidator.java
@@ -0,0 +1,19 @@
+package ru.mirea.practice.u23k1158.t1.t6;
+
+public abstract class EmailValidator {
+ public static void main(String[] args) {
+ String[] emails = {
+ "user@example.com",
+ "user@sub.example.ru",
+ "user@com"
+ };
+ for (String email : emails) {
+ System.out.println(email + " is " + (isValidEmail(email) ? "Valid" : "Invalid"));
+ }
+ }
+ public static boolean isValidEmail(String email) {
+ // Регулярное выражение для проверки e-mail адреса
+ String regex = "^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\\.[a-zA-Z]{2,}$";
+ return email.matches(regex);
+ }
+}
diff --git a/students/23K1158/23K1158-026/pom.xml b/students/23K1158/23K1158-026/pom.xml
new file mode 100644
index 000000000..21cd7f5e3
--- /dev/null
+++ b/students/23K1158/23K1158-026/pom.xml
@@ -0,0 +1,13 @@
+
+
+ 4.0.0
+
+ 23K1158
+ ru.mirea.practice
+ 2024.1
+ ../pom.xml
+
+ 23K1158-026
+ 026
+
diff --git a/students/23K1158/23K1158-026/src/main/java/ru/mirea/practice/u23k1158/t1/ArrayInverter.java b/students/23K1158/23K1158-026/src/main/java/ru/mirea/practice/u23k1158/t1/ArrayInverter.java
new file mode 100644
index 000000000..969fc77a6
--- /dev/null
+++ b/students/23K1158/23K1158-026/src/main/java/ru/mirea/practice/u23k1158/t1/ArrayInverter.java
@@ -0,0 +1,28 @@
+package ru.mirea.practice.u23k1158.t1;
+
+import java.util.Stack;
+public abstract class ArrayInverter {
+ public static void 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();
+ }
+ }
+ public static void main(String[] args) {
+ int[] array = {1, 2, 3, 4, 5};
+ System.out.println("Исходный массив:");
+ for (int num : array) {
+ System.out.print(num + " ");
+ }
+ invertArray(array);
+ System.out.println("\nИнвертированный массив:");
+ for (int num : array) {
+ System.out.print(num + " ");
+ }
+ }
+}
diff --git a/students/23K1158/23K1158-026/src/main/java/ru/mirea/practice/u23k1158/t1/Main.java b/students/23K1158/23K1158-026/src/main/java/ru/mirea/practice/u23k1158/t1/Main.java
new file mode 100644
index 000000000..e9d23821b
--- /dev/null
+++ b/students/23K1158/23K1158-026/src/main/java/ru/mirea/practice/u23k1158/t1/Main.java
@@ -0,0 +1,9 @@
+package ru.mirea.practice.u23k1158.t1;
+
+public final class Main {
+ private Main() {
+ }
+ public static void main(String[] args) {
+ System.out.println("Двадцать шестая практическая работа!");
+ }
+}
diff --git a/students/23K1158/23K1158-026/src/main/java/ru/mirea/practice/u23k1158/t1/t2/Main.java b/students/23K1158/23K1158-026/src/main/java/ru/mirea/practice/u23k1158/t1/t2/Main.java
new file mode 100644
index 000000000..47027cb17
--- /dev/null
+++ b/students/23K1158/23K1158-026/src/main/java/ru/mirea/practice/u23k1158/t1/t2/Main.java
@@ -0,0 +1,26 @@
+package ru.mirea.practice.u23k1158.t1.t2;
+
+import java.util.Iterator;
+public abstract class Main {
+ public static void main(String[] args) {
+ MyList myList = new MyList<>();
+ myList.add(1);
+ myList.add(7);
+ myList.add(2);
+ myList.add(3);
+ myList.add(8);
+ System.out.println("Итерация через итератор:");
+ Iterator iterator = myList.iterator();
+ while (iterator.hasNext()) {
+ Integer value = iterator.next();
+ System.out.println(value);
+ if (value == 2) {
+ iterator.remove(); // Удаляем элемент 2
+ }
+ }
+ System.out.println("\nОставшиеся элементы:");
+ for (Integer value : myList) {
+ System.out.println(value);
+ }
+ }
+}
diff --git a/students/23K1158/23K1158-026/src/main/java/ru/mirea/practice/u23k1158/t1/t2/MyList.java b/students/23K1158/23K1158-026/src/main/java/ru/mirea/practice/u23k1158/t1/t2/MyList.java
new file mode 100644
index 000000000..1b37c5f2d
--- /dev/null
+++ b/students/23K1158/23K1158-026/src/main/java/ru/mirea/practice/u23k1158/t1/t2/MyList.java
@@ -0,0 +1,76 @@
+package ru.mirea.practice.u23k1158.t1.t2;
+
+import java.util.Arrays;
+import java.util.Iterator;
+import java.util.NoSuchElementException;
+import java.util.Objects;
+public class MyList implements Iterable {
+ private Object[] elements;
+ private int size;
+ public MyList() {
+ elements = new Object[10];
+ size = 0;
+ }
+ public boolean add(E e) {
+ if (size == elements.length) {
+ elements = Arrays.copyOf(elements, elements.length * 2);
+ }
+ elements[size++] = e;
+ return true;
+ }
+ public E get(int index) {
+ if (index < 0 || index >= size) {
+ throw new IndexOutOfBoundsException("Индекс вне диапазона: " + index);
+ }
+ return (E) elements[index];
+ }
+ public int size() {
+ return size;
+ }
+ public boolean isEmpty() {
+ return size == 0;
+ }
+ public boolean contains(Object o) {
+ for (int i = 0; i < size; i++) {
+ if (Objects.equals(elements[i], o)) {
+ return true;
+ }
+ }
+ return false;
+ }
+ public void clear() {
+ Arrays.fill(elements, 0, size, null);
+ size = 0;
+ }
+ @Override
+ public Iterator iterator() {
+ return new MyIterator();
+ }
+ // Реализация собственного итератора
+ private class MyIterator implements Iterator {
+ private int cursor = 0; // Указатель текущей позиции
+ private boolean canRemove = false; // Можно ли удалить элемент
+ @Override
+ public boolean hasNext() {
+ return cursor < size;
+ }
+ @Override
+ public E next() {
+ if (!hasNext()) {
+ throw new NoSuchElementException("Элементов больше нет");
+ }
+ canRemove = true;
+ return (E) elements[cursor++];
+ }
+ @Override
+ public void remove() {
+ if (!canRemove) {
+ throw new IllegalStateException("Удаление невозможно");
+ }
+ System.arraycopy(elements, cursor, elements, cursor - 1, size - cursor);
+ elements[--size] = null; // Уменьшаем размер и обнуляем последний элемент
+ cursor--;
+ canRemove = false;
+ }
+ }
+}
diff --git a/students/23K1158/23K1158-027/pom.xml b/students/23K1158/23K1158-027/pom.xml
new file mode 100644
index 000000000..08ed02229
--- /dev/null
+++ b/students/23K1158/23K1158-027/pom.xml
@@ -0,0 +1,13 @@
+
+
+ 4.0.0
+
+ 23K1158
+ ru.mirea.practice
+ 2024.1
+ ../pom.xml
+
+ 23K1158-027
+ 027
+
diff --git a/students/23K1158/23K1158-027/src/main/java/ru/mirea/practice/u23k1158/t1/HashTable.java b/students/23K1158/23K1158-027/src/main/java/ru/mirea/practice/u23k1158/t1/HashTable.java
new file mode 100644
index 000000000..fb26b0dba
--- /dev/null
+++ b/students/23K1158/23K1158-027/src/main/java/ru/mirea/practice/u23k1158/t1/HashTable.java
@@ -0,0 +1,36 @@
+package ru.mirea.practice.u23k1158.t1;
+
+import java.util.HashMap;
+import java.util.Map;
+public class HashTable {
+ private Map hashtable;
+ // Инициализация хеш-таблицы
+ public void hashtabInit() {
+ hashtable = new HashMap<>();
+ }
+ // Хеширование ключа (в данном случае используется встроенный хеш)
+ public int hashtabHash(String key) {
+ return key.hashCode();
+ }
+ // Добавление элемента в хеш-таблицу
+ public void hashtabAdd(String key, String value) {
+ int hash = hashtabHash(key);
+ hashtable.put(hash, value);
+ }
+ // Поиск элемента по ключу
+ public String hashtabLookup(String key) {
+ int hash = hashtabHash(key);
+ return hashtable.get(hash);
+ }
+ // Удаление элемента по ключу
+ public void hashtabDelete(String key) {
+ int hash = hashtabHash(key);
+ hashtable.remove(hash);
+ }
+ // Вывод всех элементов таблицы
+ public void printHashTable() {
+ for (Map.Entry entry : hashtable.entrySet()) {
+ System.out.println("Key Hash: " + entry.getKey() + ", Value: " + entry.getValue());
+ }
+ }
+}
diff --git a/students/23K1158/23K1158-027/src/main/java/ru/mirea/practice/u23k1158/t1/HashTableTest.java b/students/23K1158/23K1158-027/src/main/java/ru/mirea/practice/u23k1158/t1/HashTableTest.java
new file mode 100644
index 000000000..baf0768fe
--- /dev/null
+++ b/students/23K1158/23K1158-027/src/main/java/ru/mirea/practice/u23k1158/t1/HashTableTest.java
@@ -0,0 +1,25 @@
+package ru.mirea.practice.u23k1158.t1;
+
+public abstract class HashTableTest {
+ public static void main(String[] args) {
+ // Задание 2: Тестирование созданных функций
+ HashTable hashTab = new HashTable();
+ hashTab.hashtabInit();
+ // Добавление элементов
+ for (int i = 1; i <= 10; i++) {
+ hashTab.hashtabAdd("key" + i, "value" + i);
+ }
+ System.out.println("Элементы хеш-таблицы после добавления:");
+ hashTab.printHashTable();
+ // Задание 3: Поиск и удаление элементов
+ String keyToFind = "key5";
+ String keyToDelete = "key8";
+ System.out.println("\nПоиск элемента с ключом '" + keyToFind + "':");
+ String lookupResult = hashTab.hashtabLookup(keyToFind);
+ System.out.println("Найдено значение: " + lookupResult);
+ System.out.println("\nУдаление элемента с ключом '" + keyToDelete + "':");
+ hashTab.hashtabDelete(keyToDelete);
+ System.out.println("\nЭлементы хеш-таблицы после удаления:");
+ hashTab.printHashTable();
+ }
+}
diff --git a/students/23K1158/23K1158-027/src/main/java/ru/mirea/practice/u23k1158/t1/Main.java b/students/23K1158/23K1158-027/src/main/java/ru/mirea/practice/u23k1158/t1/Main.java
new file mode 100644
index 000000000..cd44d806a
--- /dev/null
+++ b/students/23K1158/23K1158-027/src/main/java/ru/mirea/practice/u23k1158/t1/Main.java
@@ -0,0 +1,9 @@
+package ru.mirea.practice.u23k1158.t1;
+
+public final class Main {
+ private Main() {
+ }
+ public static void main(String[] args) {
+ System.out.println("Двадцать седьмая практическая работа");
+ }
+}
diff --git a/students/23K1158/23K1158-028/pom.xml b/students/23K1158/23K1158-028/pom.xml
new file mode 100644
index 000000000..f1b98e25c
--- /dev/null
+++ b/students/23K1158/23K1158-028/pom.xml
@@ -0,0 +1,13 @@
+
+
+ 4.0.0
+
+ 23K1158
+ ru.mirea.practice
+ 2024.1
+ ../pom.xml
+
+ 23K1158-028
+ 028
+
diff --git a/students/23K1158/23K1158-028/src/main/java/ru/mirea/practice/u23k1158/t1/HashSetToTreeSet.java b/students/23K1158/23K1158-028/src/main/java/ru/mirea/practice/u23k1158/t1/HashSetToTreeSet.java
new file mode 100644
index 000000000..0c8949bd5
--- /dev/null
+++ b/students/23K1158/23K1158-028/src/main/java/ru/mirea/practice/u23k1158/t1/HashSetToTreeSet.java
@@ -0,0 +1,28 @@
+package ru.mirea.practice.u23k1158.t1;
+
+import java.util.HashSet;
+import java.util.Set;
+import java.util.TreeSet;
+public abstract class HashSetToTreeSet {
+ public static void main(String[] args) {
+ // Создание и инициализация HashSet
+ Set hashSet = new HashSet<>();
+ hashSet.add(50);
+ hashSet.add(20);
+ hashSet.add(80);
+ hashSet.add(10);
+ hashSet.add(60);
+ hashSet.add(30);
+ hashSet.add(70);
+ System.out.println("HashSet (произвольный порядок):");
+ for (Integer num : hashSet) {
+ System.out.print(num + " ");
+ }
+ // Преобразование HashSet в TreeSet
+ TreeSet treeSet = new TreeSet<>(hashSet);
+ System.out.println("\n\nTreeSet (отсортированный):");
+ for (Integer num : treeSet) {
+ System.out.print(num + " ");
+ }
+ }
+}
diff --git a/students/23K1158/23K1158-028/src/main/java/ru/mirea/practice/u23k1158/t1/Main.java b/students/23K1158/23K1158-028/src/main/java/ru/mirea/practice/u23k1158/t1/Main.java
new file mode 100644
index 000000000..3050fd175
--- /dev/null
+++ b/students/23K1158/23K1158-028/src/main/java/ru/mirea/practice/u23k1158/t1/Main.java
@@ -0,0 +1,9 @@
+package ru.mirea.practice.u23k1158.t1;
+
+public final class Main {
+ private Main() {
+ }
+ public static void main(String[] args) {
+ System.out.println("Двадцать восьмая практическая работа!");
+ }
+}
diff --git a/students/23K1158/23K1158-028/src/main/java/ru/mirea/practice/u23k1158/t1/t2/TestHash.java b/students/23K1158/23K1158-028/src/main/java/ru/mirea/practice/u23k1158/t1/t2/TestHash.java
new file mode 100644
index 000000000..5742d8aaf
--- /dev/null
+++ b/students/23K1158/23K1158-028/src/main/java/ru/mirea/practice/u23k1158/t1/t2/TestHash.java
@@ -0,0 +1,55 @@
+package ru.mirea.practice.u23k1158.t1.t2;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+public abstract class TestHash {
+ public static void main(String[] args) {
+ List> map = createMap();
+ int sameFirstNameCount = getSameFirstNameCount(map);
+ int sameLastNameCount = getSameLastNameCount(map);
+ System.out.println(sameFirstNameCount);
+ System.out.println(sameLastNameCount);
+ }
+ public static List> createMap() {
+ List> map = new ArrayList<>();
+ map.add(Map.entry("Иванов", "Иван"));
+ map.add(Map.entry("Печкин", "Егор"));
+ map.add(Map.entry("Петров", "Иван"));
+ map.add(Map.entry("Иванов", "Егор"));
+ return map;
+ }
+ public static int getSameFirstNameCount(List> map) {
+ Map firstNameCount = new HashMap<>();
+ // Подсчет частоты каждого имени
+ for (Map.Entry entry : map) {
+ String firstName = entry.getValue();
+ firstNameCount.put(firstName, firstNameCount.getOrDefault(firstName, 0) + 1);
+ }
+ // Подсчет количества имен, которые встречаются более одного раза
+ int count = 0;
+ for (int value : firstNameCount.values()) {
+ if (value > 1) {
+ count++;
+ }
+ }
+ return count;
+ }
+ public static int getSameLastNameCount(List> map) {
+ Map lastNameCount = new HashMap<>();
+ // Подсчет частоты каждой фамилии
+ for (Map.Entry entry : map) {
+ String lastName = entry.getKey();
+ lastNameCount.put(lastName, lastNameCount.getOrDefault(lastName, 0) + 1);
+ }
+ // Подсчет количества фамилий, которые встречаются более одного раза
+ int count = 0;
+ for (int value : lastNameCount.values()) {
+ if (value > 1) {
+ count++;
+ }
+ }
+ return count;
+ }
+}
diff --git a/students/23K1158/23K1158-029/pom.xml b/students/23K1158/23K1158-029/pom.xml
new file mode 100644
index 000000000..b766e8b7b
--- /dev/null
+++ b/students/23K1158/23K1158-029/pom.xml
@@ -0,0 +1,13 @@
+
+
+ 4.0.0
+
+ 23K1158
+ ru.mirea.practice
+ 2024.1
+ ../pom.xml
+
+ 23K1158-029
+ 029
+
diff --git a/students/23K1158/23K1158-029/src/main/java/ru/mirea/practice/u23k1158/t1/Main.java b/students/23K1158/23K1158-029/src/main/java/ru/mirea/practice/u23k1158/t1/Main.java
new file mode 100644
index 000000000..383bf6e7a
--- /dev/null
+++ b/students/23K1158/23K1158-029/src/main/java/ru/mirea/practice/u23k1158/t1/Main.java
@@ -0,0 +1,8 @@
+package ru.mirea.practice.u23k1158.t1;
+public final class Main {
+ private Main() {
+ }
+ public static void main(String[] args) {
+ System.out.println("29 практическая работа");
+ }
+}
diff --git a/students/23K1158/23K1158-029/src/main/java/ru/mirea/practice/u23k1158/t1/RoadsCounter.java b/students/23K1158/23K1158-029/src/main/java/ru/mirea/practice/u23k1158/t1/RoadsCounter.java
new file mode 100644
index 000000000..1b77d1177
--- /dev/null
+++ b/students/23K1158/23K1158-029/src/main/java/ru/mirea/practice/u23k1158/t1/RoadsCounter.java
@@ -0,0 +1,33 @@
+package ru.mirea.practice.u23k1158.t1;
+
+import java.util.Scanner;
+public abstract class RoadsCounter {
+ public static void main(String[] args) {
+ try (Scanner scanner = new Scanner(System.in)) {
+ int n = scanner.nextInt();
+ if (n == 0) {
+ System.out.println(0);
+ return;
+ }
+ // Считываем количество городов
+ 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 roads = 0;
+ for (int i = 0; i < n; i++) {
+ for (int j = i + 1; j < n; j++) { // Считаем только верхнюю часть матрицы
+ if (matrix[i][j] == 1) {
+ roads++;
+ }
+ }
+ }
+ // Вывод результата
+ System.out.println(roads);
+ }
+ }
+}
diff --git a/students/23K1158/23K1158-030_1/pom.xml b/students/23K1158/23K1158-030_1/pom.xml
new file mode 100644
index 000000000..13c6245c2
--- /dev/null
+++ b/students/23K1158/23K1158-030_1/pom.xml
@@ -0,0 +1,13 @@
+
+
+ 4.0.0
+
+ 23K1158
+ ru.mirea.practice
+ 2024.1
+ ../pom.xml
+
+ 23K1158-030_1
+ 030_1
+
diff --git a/students/23K1158/23K1158-030_1/src/main/java/ru/mirea/practice/u23k1158/t1/BinaryTree.java b/students/23K1158/23K1158-030_1/src/main/java/ru/mirea/practice/u23k1158/t1/BinaryTree.java
new file mode 100644
index 000000000..443f6c855
--- /dev/null
+++ b/students/23K1158/23K1158-030_1/src/main/java/ru/mirea/practice/u23k1158/t1/BinaryTree.java
@@ -0,0 +1,83 @@
+package ru.mirea.practice.u23k1158.t1;
+
+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(10);
+ tree.root.left = new Node(5);
+ tree.root.right = new Node(15);
+ tree.root.left.left = new Node(2);
+ tree.root.left.right = new Node(7);
+ System.out.println("Высота дерева: " + tree.height(tree.root));
+ System.out.println("Размер дерева: " + tree.size(tree.root));
+ System.out.println("Максимальная ширина дерева: " + tree.getMaxWidth(tree.root));
+ int target1 = 2;
+ System.out.println("Поиск " + target1 + ": " + tree.lookup(tree.root, target1));
+ int target2 = 4;
+ System.out.println("Поиск " + target2 + ": " + tree.lookup(tree.root, target2));
+ BinaryTree tree2 = new BinaryTree();
+ tree2.root = new Node(7);
+ tree2.root.left = new Node(1);
+ tree2.root.right = new Node(4);
+ System.out.println("Являются ли эти два дерева одинаковыми? " + tree.sameTree(tree.root, tree2.root));
+ }
+}
diff --git a/students/23K1158/23K1158-030_1/src/main/java/ru/mirea/practice/u23k1158/t1/Main.java b/students/23K1158/23K1158-030_1/src/main/java/ru/mirea/practice/u23k1158/t1/Main.java
new file mode 100644
index 000000000..73070cc41
--- /dev/null
+++ b/students/23K1158/23K1158-030_1/src/main/java/ru/mirea/practice/u23k1158/t1/Main.java
@@ -0,0 +1,9 @@
+package ru.mirea.practice.u23k1158.t1;
+
+public final class Main {
+ private Main() {
+ }
+ public static void main(String[] args) {
+ System.out.println("30_1 практическая работа!");
+ }
+}
diff --git a/students/23K1158/23K1158-030_1/src/main/java/ru/mirea/practice/u23k1158/t1/Node.java b/students/23K1158/23K1158-030_1/src/main/java/ru/mirea/practice/u23k1158/t1/Node.java
new file mode 100644
index 000000000..08940c696
--- /dev/null
+++ b/students/23K1158/23K1158-030_1/src/main/java/ru/mirea/practice/u23k1158/t1/Node.java
@@ -0,0 +1,12 @@
+package ru.mirea.practice.u23k1158.t1;
+
+class Node {
+ int data;
+ Node left;
+ Node right;
+ Node(int d) {
+ data = d;
+ left = null;
+ right = null;
+ }
+}
diff --git a/students/23K1158/23K1158-030_2/pom.xml b/students/23K1158/23K1158-030_2/pom.xml
new file mode 100644
index 000000000..7bd502aa9
--- /dev/null
+++ b/students/23K1158/23K1158-030_2/pom.xml
@@ -0,0 +1,13 @@
+
+
+ 4.0.0
+
+ 23K1158
+ ru.mirea.practice
+ 2024.1
+ ../pom.xml
+
+ 23K1158-030_2
+ 030_2
+
diff --git a/students/23K1158/23K1158-030_2/src/main/java/ru/mirea/practice/u23k1158/t1/BinaryTree.java b/students/23K1158/23K1158-030_2/src/main/java/ru/mirea/practice/u23k1158/t1/BinaryTree.java
new file mode 100644
index 000000000..f0b730d3f
--- /dev/null
+++ b/students/23K1158/23K1158-030_2/src/main/java/ru/mirea/practice/u23k1158/t1/BinaryTree.java
@@ -0,0 +1,106 @@
+package ru.mirea.practice.u23k1158.t1;
+
+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 = {5, 4, 44, 2, 1, 12, 6, 3, 8, 19, 10};
+ for (int node : nodes) {
+ tree.insert(node);
+ }
+ System.out.println("Содержимое дерева в сортированном порядке:");
+ tree.inorder();
+ int keyToDelete = 5;
+ System.out.println("Удаление узла: " + keyToDelete);
+ tree.delete(keyToDelete);
+ System.out.println("Содержимое дерева после удаления узла:");
+ tree.inorder();
+ tree.destroyTree();
+ System.out.println("Полное удаление дерева.");
+ }
+}
diff --git a/students/23K1158/23K1158-030_2/src/main/java/ru/mirea/practice/u23k1158/t1/Main.java b/students/23K1158/23K1158-030_2/src/main/java/ru/mirea/practice/u23k1158/t1/Main.java
new file mode 100644
index 000000000..d3c03e15f
--- /dev/null
+++ b/students/23K1158/23K1158-030_2/src/main/java/ru/mirea/practice/u23k1158/t1/Main.java
@@ -0,0 +1,9 @@
+package ru.mirea.practice.u23k1158.t1;
+
+public final class Main {
+ private Main() {
+ }
+ public static void main(String[] args) {
+ System.out.println("30_2 практическая работа");
+ }
+}
diff --git a/students/23K1158/23K1158-030_2/src/main/java/ru/mirea/practice/u23k1158/t1/Node.java b/students/23K1158/23K1158-030_2/src/main/java/ru/mirea/practice/u23k1158/t1/Node.java
new file mode 100644
index 000000000..08940c696
--- /dev/null
+++ b/students/23K1158/23K1158-030_2/src/main/java/ru/mirea/practice/u23k1158/t1/Node.java
@@ -0,0 +1,12 @@
+package ru.mirea.practice.u23k1158.t1;
+
+class Node {
+ int data;
+ Node left;
+ Node right;
+ Node(int d) {
+ data = d;
+ left = null;
+ right = null;
+ }
+}
diff --git a/students/23K1158/23K1158-031/pom.xml b/students/23K1158/23K1158-031/pom.xml
new file mode 100644
index 000000000..6d7216f8d
--- /dev/null
+++ b/students/23K1158/23K1158-031/pom.xml
@@ -0,0 +1,13 @@
+
+
+ 4.0.0
+
+ 23K1158
+ ru.mirea.practice
+ 2024.1
+ ../pom.xml
+
+ 23K1158-031
+ 031
+
diff --git a/students/23K1158/23K1158-031/src/main/java/ru/mirea/practice/u23k1158/t1/LevelOrderTraversal.java b/students/23K1158/23K1158-031/src/main/java/ru/mirea/practice/u23k1158/t1/LevelOrderTraversal.java
new file mode 100644
index 000000000..2b216d20b
--- /dev/null
+++ b/students/23K1158/23K1158-031/src/main/java/ru/mirea/practice/u23k1158/t1/LevelOrderTraversal.java
@@ -0,0 +1,55 @@
+package ru.mirea.practice.u23k1158.t1;
+
+import java.util.LinkedList;
+import java.util.Queue;
+import java.util.Stack;
+public abstract class LevelOrderTraversal {
+ 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(7);
+ root.left = new Node(4);
+ root.right = new Node(9);
+ root.left.left = new Node(1);
+ root.left.right = new Node(2);
+ root.right.left = new Node(5);
+ root.right.right = new Node(12);
+ printTree(root);
+ }
+}
diff --git a/students/23K1158/23K1158-031/src/main/java/ru/mirea/practice/u23k1158/t1/LevelOrderTraversalreverse.java b/students/23K1158/23K1158-031/src/main/java/ru/mirea/practice/u23k1158/t1/LevelOrderTraversalreverse.java
new file mode 100644
index 000000000..102ffaf34
--- /dev/null
+++ b/students/23K1158/23K1158-031/src/main/java/ru/mirea/practice/u23k1158/t1/LevelOrderTraversalreverse.java
@@ -0,0 +1,50 @@
+package ru.mirea.practice.u23k1158.t1;
+
+import java.util.LinkedList;
+import java.util.Queue;
+public abstract class LevelOrderTraversalreverse {
+ public static void printTree(Node root) {
+ if (root == null) {
+ return;
+ }
+ int height = getHeight(root);
+ 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;
+ System.out.print(" ".repeat(spacesBeforeFirstNode));
+ for (int i = 0; i < levelSize; i++) {
+ Node node = queue.poll();
+ System.out.print(node.data);
+ if (i < levelSize - 1) {
+ System.out.print(" ".repeat(spacesBetweenNodes));
+ }
+ if (node.left != null) {
+ queue.offer(node.left);
+ }
+ if (node.right != null) {
+ queue.offer(node.right);
+ }
+ }
+ System.out.println();
+ }
+ }
+ 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(7);
+ root.left = new Node(4);
+ root.right = new Node(9);
+ root.left.left = new Node(1);
+ root.left.right = new Node(2);
+ root.right.left = new Node(5);
+ root.right.right = new Node(12);
+ printTree(root);
+ }
+}
diff --git a/students/23K1158/23K1158-031/src/main/java/ru/mirea/practice/u23k1158/t1/Node.java b/students/23K1158/23K1158-031/src/main/java/ru/mirea/practice/u23k1158/t1/Node.java
new file mode 100644
index 000000000..97fea4ff0
--- /dev/null
+++ b/students/23K1158/23K1158-031/src/main/java/ru/mirea/practice/u23k1158/t1/Node.java
@@ -0,0 +1,11 @@
+package ru.mirea.practice.u23k1158.t1;
+
+class Node {
+ int data;
+ Node left;
+ Node right;
+ Node(int d) {
+ this.data = d;
+ left = right = null;
+ }
+}
diff --git a/students/23K1158/23K1158-032/pom.xml b/students/23K1158/23K1158-032/pom.xml
new file mode 100644
index 000000000..d8ef30bbe
--- /dev/null
+++ b/students/23K1158/23K1158-032/pom.xml
@@ -0,0 +1,13 @@
+
+
+ 4.0.0
+
+ 23K1158
+ ru.mirea.practice
+ 2024.1
+ ../pom.xml
+
+ 23K1158-032
+ 032
+
diff --git a/students/23K1158/23K1158-032/src/main/java/ru/mirea/practice/u23k1158/JohnsonTrotter.java b/students/23K1158/23K1158-032/src/main/java/ru/mirea/practice/u23k1158/JohnsonTrotter.java
new file mode 100644
index 000000000..88af7c041
--- /dev/null
+++ b/students/23K1158/23K1158-032/src/main/java/ru/mirea/practice/u23k1158/JohnsonTrotter.java
@@ -0,0 +1,83 @@
+package ru.mirea.practice.u23k1158;
+
+public abstract class JohnsonTrotter {
+ private static final boolean isleft = true;
+ private static final boolean isright = false;
+ public static int findPosition(int[] array, int size, int number) {
+ for (int i = 0; i < size; i++) {
+ if (array[i] == number) {
+ return i + 1;
+ }
+ }
+ return 0;
+ }
+ public static int getLargestMobile(int[] array, boolean[] directions, int size) {
+ int largest = 0;
+ int mobile = 0;
+ for (int i = 0; i < size; i++) {
+ if (directions[array[i] - 1] == isright && i != 0) {
+ if (array[i] > array[i - 1] && array[i] > largest) {
+ mobile = array[i];
+ largest = mobile;
+ }
+ }
+ if (directions[array[i] - 1] == isleft && i != size - 1) {
+ if (array[i] > array[i + 1] && array[i] > largest) {
+ mobile = array[i];
+ largest = mobile;
+ }
+ }
+ }
+ return mobile == 0 && largest == 0 ? 0 : mobile;
+ }
+ public static void displayPermutation(int[] array, boolean[] directions, int size) {
+ int mobile = getLargestMobile(array, directions, size);
+ int position = findPosition(array, size, mobile);
+ if (directions[array[position - 1] - 1] == isright) {
+ int temp = array[position - 1];
+ array[position - 1] = array[position - 2];
+ array[position - 2] = temp;
+ } else if (directions[array[position - 1] - 1] == isleft) {
+ int temp = array[position];
+ array[position] = array[position - 1];
+ array[position - 1] = temp;
+ }
+ for (int i = 0; i < size; i++) {
+ if (array[i] > mobile) {
+ directions[array[i] - 1] = (directions[array[i] - 1] == isleft) ? isright : isleft;
+ }
+ }
+ for (int i = 0; i < size; i++) {
+ System.out.print(array[i] + " ");
+ }
+ System.out.println();
+ }
+ public static int calculateFactorial(int n) {
+ int result = 1;
+ for (int i = 1; i <= n; i++) {
+ result *= i;
+ }
+ return result;
+ }
+ public static void generatePermutations(int size) {
+ int[] array = new int[size];
+ boolean[] directions = new boolean[size];
+ for (int i = 0; i < size; i++) {
+ array[i] = i + 1;
+ }
+ for (int i = 0; i < size; i++) {
+ directions[i] = isright;
+ }
+ for (int i = 0; i < size; i++) {
+ System.out.print(array[i] + " ");
+ }
+ System.out.println();
+ for (int i = 1; i < calculateFactorial(size); i++) {
+ displayPermutation(array, directions, size);
+ }
+ }
+ public static void main(String[] args) {
+ int n = 3;
+ generatePermutations(n);
+ }
+}
diff --git a/students/23K1158/23K1158-032/src/main/java/ru/mirea/practice/u23k1158/Main.java b/students/23K1158/23K1158-032/src/main/java/ru/mirea/practice/u23k1158/Main.java
new file mode 100644
index 000000000..d652170e6
--- /dev/null
+++ b/students/23K1158/23K1158-032/src/main/java/ru/mirea/practice/u23k1158/Main.java
@@ -0,0 +1,9 @@
+package ru.mirea.practice.u23k1158;
+
+public final class Main {
+ private Main() {
+ }
+ public static void main(String[] args) {
+ System.out.println("32 практическая работа");
+ }
+}
diff --git a/students/23K1158/23K1158-21/pom.xml b/students/23K1158/23K1158-21/pom.xml
new file mode 100644
index 000000000..10255bb3b
--- /dev/null
+++ b/students/23K1158/23K1158-21/pom.xml
@@ -0,0 +1,13 @@
+
+
+ 4.0.0
+
+ 23K1158
+ ru.mirea.practice
+ 2024.1
+ ../pom.xml
+
+ 23K1158-21
+ 21
+
diff --git a/students/23K1158/23K1158-21/src/main/java/ru/mirea/practice/u23k1158/ArrayElementRetriever.java b/students/23K1158/23K1158-21/src/main/java/ru/mirea/practice/u23k1158/ArrayElementRetriever.java
new file mode 100644
index 000000000..c3a35f6d5
--- /dev/null
+++ b/students/23K1158/23K1158-21/src/main/java/ru/mirea/practice/u23k1158/ArrayElementRetriever.java
@@ -0,0 +1,10 @@
+package ru.mirea.practice.u23k1158;
+
+public abstract class ArrayElementRetriever {
+ public static T getElementAtIndex(T[] array, int index) {
+ if (index < 0 || index >= array.length) {
+ throw new IndexOutOfBoundsException("Индекс вне границ массива");
+ }
+ return array[index];
+ }
+}
diff --git a/students/23K1158/23K1158-21/src/main/java/ru/mirea/practice/u23k1158/ArrayToListConverter.java b/students/23K1158/23K1158-21/src/main/java/ru/mirea/practice/u23k1158/ArrayToListConverter.java
new file mode 100644
index 000000000..e7031564d
--- /dev/null
+++ b/students/23K1158/23K1158-21/src/main/java/ru/mirea/practice/u23k1158/ArrayToListConverter.java
@@ -0,0 +1,14 @@
+package ru.mirea.practice.u23k1158;
+
+import java.util.ArrayList;
+import java.util.List;
+
+public abstract class ArrayToListConverter {
+ public static List convertArrayToList(T[] array) {
+ List list = new ArrayList<>();
+ for (T element : array) {
+ list.add(element);
+ }
+ return list;
+ }
+}
diff --git a/students/23K1158/23K1158-21/src/main/java/ru/mirea/practice/u23k1158/Main.java b/students/23K1158/23K1158-21/src/main/java/ru/mirea/practice/u23k1158/Main.java
new file mode 100644
index 000000000..7765cdef4
--- /dev/null
+++ b/students/23K1158/23K1158-21/src/main/java/ru/mirea/practice/u23k1158/Main.java
@@ -0,0 +1,12 @@
+package ru.mirea.practice.u23k1158;
+
+public final class Main {
+
+ private Main() {
+
+ }
+
+ public static void main(String[] args) {
+ System.out.println("первая практическая работа!");
+ }
+}
diff --git a/students/23K1158/23K1158-21/src/main/java/ru/mirea/practice/u23k1158/Test.java b/students/23K1158/23K1158-21/src/main/java/ru/mirea/practice/u23k1158/Test.java
new file mode 100644
index 000000000..64d6d76ca
--- /dev/null
+++ b/students/23K1158/23K1158-21/src/main/java/ru/mirea/practice/u23k1158/Test.java
@@ -0,0 +1,22 @@
+package ru.mirea.practice.u23k1158;
+
+import java.util.List;
+
+public abstract class Test {
+ public static void main(String[] args) {
+
+ String[] stringArray = {"Я", "люблю", "есть"};
+ List stringList = ArrayToListConverter.convertArrayToList(stringArray);
+ System.out.println("Список строк: " + stringList);
+
+ String element = ArrayElementRetriever.getElementAtIndex(stringArray, 1); // получаем 'banana'
+ System.out.println("Элемент по индексу 1: " + element);
+
+ Integer[] intArray = {1, 2, 3, 4, 5};
+ List intList = ArrayToListConverter.convertArrayToList(intArray);
+ System.out.println("Список чисел: " + intList);
+
+ Integer num = ArrayElementRetriever.getElementAtIndex(intArray, 3); // получаем '4'
+ System.out.println("Элемент по индексу 3: " + num);
+ }
+}
diff --git a/students/23K1158/23K1158-22/pom.xml b/students/23K1158/23K1158-22/pom.xml
new file mode 100644
index 000000000..85f542ff6
--- /dev/null
+++ b/students/23K1158/23K1158-22/pom.xml
@@ -0,0 +1,13 @@
+
+
+ 4.0.0
+
+ 23K1158
+ ru.mirea.practice
+ 2024.1
+ ../pom.xml
+
+ 23K1158-22
+ 22
+
diff --git a/students/23K1158/23K1158-22/src/main/java/ru/mirea/practice/u23k1158/Main.java b/students/23K1158/23K1158-22/src/main/java/ru/mirea/practice/u23k1158/Main.java
new file mode 100644
index 000000000..7765cdef4
--- /dev/null
+++ b/students/23K1158/23K1158-22/src/main/java/ru/mirea/practice/u23k1158/Main.java
@@ -0,0 +1,12 @@
+package ru.mirea.practice.u23k1158;
+
+public final class Main {
+
+ private Main() {
+
+ }
+
+ public static void main(String[] args) {
+ System.out.println("первая практическая работа!");
+ }
+}
diff --git a/students/23K1158/23K1158-22/src/main/java/ru/mirea/practice/u23k1158/RpnCalculator.java b/students/23K1158/23K1158-22/src/main/java/ru/mirea/practice/u23k1158/RpnCalculator.java
new file mode 100644
index 000000000..9742eddb9
--- /dev/null
+++ b/students/23K1158/23K1158-22/src/main/java/ru/mirea/practice/u23k1158/RpnCalculator.java
@@ -0,0 +1,61 @@
+package ru.mirea.practice.u23k1158;
+
+import java.util.StringTokenizer;
+
+public class RpnCalculator {
+ private Stack stack;
+
+ public RpnCalculator(int size) {
+ stack = new Stack(size);
+ }
+
+ public double evaluate(String expression) {
+ StringTokenizer tokenizer = new StringTokenizer(expression);
+
+ while (tokenizer.hasMoreTokens()) {
+ String token = tokenizer.nextToken();
+
+ if (isNumeric(token)) {
+ stack.push(Double.parseDouble(token));
+ } else {
+ performOperation(token);
+ }
+ }
+
+ return stack.pop();
+ }
+
+ private void performOperation(String operator) {
+ double secondOperand = stack.pop();
+ double firstOperand = stack.pop();
+
+ switch (operator) {
+ case "+":
+ stack.push(firstOperand + secondOperand);
+ break;
+ case "-":
+ stack.push(firstOperand - secondOperand);
+ break;
+ case "*":
+ stack.push(firstOperand * secondOperand);
+ break;
+ case "/":
+ if (secondOperand == 0) {
+ throw new ArithmeticException("Ошибка: Деление на ноль");
+ }
+ stack.push(firstOperand / secondOperand);
+ break;
+ default:
+ throw new IllegalArgumentException("Недопустимый оператор: " + operator);
+ }
+ }
+
+ private boolean isNumeric(String str) {
+ try {
+ Double.parseDouble(str);
+ return true;
+ } catch (NumberFormatException e) {
+ return false;
+ }
+ }
+}
diff --git a/students/23K1158/23K1158-22/src/main/java/ru/mirea/practice/u23k1158/Stack.java b/students/23K1158/23K1158-22/src/main/java/ru/mirea/practice/u23k1158/Stack.java
new file mode 100644
index 000000000..ab2290e4e
--- /dev/null
+++ b/students/23K1158/23K1158-22/src/main/java/ru/mirea/practice/u23k1158/Stack.java
@@ -0,0 +1,40 @@
+package ru.mirea.practice.u23k1158;
+
+import java.util.EmptyStackException;
+
+public class Stack {
+ private int maxSize;
+ private double[] stackArray;
+ private int top;
+
+ public Stack(int size) {
+ this.maxSize = size;
+ this.stackArray = new double[maxSize];
+ this.top = -1;
+ }
+
+ public void push(double value) {
+ if (top >= maxSize - 1) {
+ throw new StackOverflowError("Стек переполнен");
+ }
+ stackArray[++top] = value;
+ }
+
+ public double pop() {
+ if (isEmpty()) {
+ throw new EmptyStackException();
+ }
+ return stackArray[top--];
+ }
+
+ public double peek() {
+ if (isEmpty()) {
+ throw new EmptyStackException();
+ }
+ return stackArray[top];
+ }
+
+ public boolean isEmpty() {
+ return top == -1;
+ }
+}
diff --git a/students/23K1158/23K1158-22/src/main/java/ru/mirea/practice/u23k1158/Test.java b/students/23K1158/23K1158-22/src/main/java/ru/mirea/practice/u23k1158/Test.java
new file mode 100644
index 000000000..1aa154b61
--- /dev/null
+++ b/students/23K1158/23K1158-22/src/main/java/ru/mirea/practice/u23k1158/Test.java
@@ -0,0 +1,33 @@
+package ru.mirea.practice.u23k1158;
+
+import java.util.EmptyStackException;
+
+public abstract class Test {
+ public static void main(String[] args) {
+ RpnCalculator calculator = new RpnCalculator(10);
+
+ System.out.println("1 2 + = " + calculator.evaluate("1 2 +"));
+ System.out.println("5 1 - = " + calculator.evaluate("5 1 -"));
+ System.out.println("3 4 * = " + calculator.evaluate("3 4 *"));
+ System.out.println("10 2 / = " + calculator.evaluate("10 2 /"));
+ System.out.println("3 4 + 2 * = " + calculator.evaluate("3 4 + 2 *"));
+
+ try {
+ System.out.println("10 0 / = " + calculator.evaluate("10 0 /"));
+ } catch (ArithmeticException e) {
+ System.out.println(e.getMessage());
+ }
+
+ try {
+ System.out.println("1 + = " + calculator.evaluate("1 +"));
+ } catch (EmptyStackException e) {
+ System.out.println("Невозможно выполнить POP для пустого стека");
+ }
+
+ try {
+ System.out.println("5 3 % = " + calculator.evaluate("5 3 %"));
+ } catch (IllegalArgumentException e) {
+ System.out.println(e.getMessage());
+ }
+ }
+}
diff --git a/students/23K1158/23K1158-23/pom.xml b/students/23K1158/23K1158-23/pom.xml
new file mode 100644
index 000000000..5eb494163
--- /dev/null
+++ b/students/23K1158/23K1158-23/pom.xml
@@ -0,0 +1,13 @@
+
+
+ 4.0.0
+
+ 23K1158
+ ru.mirea.practice
+ 2024.1
+ ../pom.xml
+
+ 23K1158-23
+ 23
+
diff --git a/students/23K1158/23K1158-23/src/main/java/ru/mirea/practice/u23k1158/AbstractQueue.java b/students/23K1158/23K1158-23/src/main/java/ru/mirea/practice/u23k1158/AbstractQueue.java
new file mode 100644
index 000000000..a1a831e12
--- /dev/null
+++ b/students/23K1158/23K1158-23/src/main/java/ru/mirea/practice/u23k1158/AbstractQueue.java
@@ -0,0 +1,20 @@
+package ru.mirea.practice.u23k1158;
+
+public abstract class AbstractQueue implements Queue {
+ protected int size;
+
+ @Override
+ public boolean isEmpty() {
+ return size == 0;
+ }
+
+ @Override
+ public int size() {
+ return size;
+ }
+
+ @Override
+ public void clear() {
+ size = 0;
+ }
+}
diff --git a/students/23K1158/23K1158-23/src/main/java/ru/mirea/practice/u23k1158/ArrayQueue.java b/students/23K1158/23K1158-23/src/main/java/ru/mirea/practice/u23k1158/ArrayQueue.java
new file mode 100644
index 000000000..efcdc39d5
--- /dev/null
+++ b/students/23K1158/23K1158-23/src/main/java/ru/mirea/practice/u23k1158/ArrayQueue.java
@@ -0,0 +1,55 @@
+package ru.mirea.practice.u23k1158;
+
+public class ArrayQueue {
+ private double[] elements;
+ private int head;
+ private int tail;
+ private int size;
+
+ public ArrayQueue(int capacity) {
+ this.elements = new double[capacity];
+ this.head = 0;
+ this.tail = 0;
+ this.size = 0;
+ }
+
+ public void enqueue(double value) {
+ if (size == elements.length) {
+ throw new IllegalStateException("Очередь переполнена");
+ }
+ elements[tail] = value;
+ tail = (tail + 1) % elements.length;
+ size++;
+ }
+
+ public double dequeue() {
+ if (isEmpty()) {
+ throw new IllegalStateException("Очередь пуста");
+ }
+ double value = elements[head];
+ head = (head + 1) % elements.length;
+ size--;
+ return value;
+ }
+
+ public double element() {
+ if (isEmpty()) {
+ throw new IllegalStateException("Очередь пуста");
+ }
+ return elements[head];
+ }
+
+ public int size() {
+ return size;
+ }
+
+ public boolean isEmpty() {
+ return size == 0;
+ }
+
+ public void clear() {
+ head = 0;
+ tail = 0;
+ size = 0;
+ }
+}
diff --git a/students/23K1158/23K1158-23/src/main/java/ru/mirea/practice/u23k1158/ArrayQueueAdt.java b/students/23K1158/23K1158-23/src/main/java/ru/mirea/practice/u23k1158/ArrayQueueAdt.java
new file mode 100644
index 000000000..a6f4e17b0
--- /dev/null
+++ b/students/23K1158/23K1158-23/src/main/java/ru/mirea/practice/u23k1158/ArrayQueueAdt.java
@@ -0,0 +1,55 @@
+package ru.mirea.practice.u23k1158;
+
+public class ArrayQueueAdt {
+ private double[] elements;
+ private int head;
+ private int tail;
+ private int size;
+
+ public ArrayQueueAdt(int capacity) {
+ elements = new double[capacity];
+ head = 0;
+ tail = 0;
+ size = 0;
+ }
+
+ public void enqueue(double value) {
+ if (size == elements.length) {
+ throw new IllegalStateException("Очередь переполнена");
+ }
+ elements[tail] = value;
+ tail = (tail + 1) % elements.length;
+ size++;
+ }
+
+ public double dequeue() {
+ if (isEmpty()) {
+ throw new IllegalStateException("Очередь пуста");
+ }
+ double value = elements[head];
+ head = (head + 1) % elements.length;
+ size--;
+ return value;
+ }
+
+ public double element() {
+ if (isEmpty()) {
+ throw new IllegalStateException("Очередь пуста");
+ }
+ return elements[head];
+ }
+
+ public int size() {
+ return size;
+ }
+
+ public boolean isEmpty() {
+ return size == 0;
+ }
+
+ public void clear() {
+ head = 0;
+ tail = 0;
+ size = 0;
+ }
+}
diff --git a/students/23K1158/23K1158-23/src/main/java/ru/mirea/practice/u23k1158/ArrayQueueModule.java b/students/23K1158/23K1158-23/src/main/java/ru/mirea/practice/u23k1158/ArrayQueueModule.java
new file mode 100644
index 000000000..5e399cac4
--- /dev/null
+++ b/students/23K1158/23K1158-23/src/main/java/ru/mirea/practice/u23k1158/ArrayQueueModule.java
@@ -0,0 +1,56 @@
+package ru.mirea.practice.u23k1158;
+
+public abstract class ArrayQueueModule {
+ private static final int DEFAULT_CAPACITY = 10;
+ private static double[] elements;
+ private static int head;
+ private static int tail;
+ private static int size;
+
+ static {
+ elements = new double[DEFAULT_CAPACITY];
+ head = 0;
+ tail = 0;
+ size = 0;
+ }
+
+ public static void enqueue(double value) {
+ if (size == elements.length) {
+ throw new IllegalStateException("Очередь переполнена");
+ }
+ elements[tail] = value;
+ tail = (tail + 1) % elements.length;
+ size++;
+ }
+
+ public static double dequeue() {
+ if (isEmpty()) {
+ throw new IllegalStateException("Очередь пуста");
+ }
+ double value = elements[head];
+ head = (head + 1) % elements.length;
+ size--;
+ return value;
+ }
+
+ public static double element() {
+ if (isEmpty()) {
+ throw new IllegalStateException("Очередь пуста");
+ }
+ return elements[head];
+ }
+
+ public static int size() {
+ return size;
+ }
+
+ public static boolean isEmpty() {
+ return size == 0;
+ }
+
+ public static void clear() {
+ head = 0;
+ tail = 0;
+ size = 0;
+ }
+}
diff --git a/students/23K1158/23K1158-23/src/main/java/ru/mirea/practice/u23k1158/ArrayQueueTest.java b/students/23K1158/23K1158-23/src/main/java/ru/mirea/practice/u23k1158/ArrayQueueTest.java
new file mode 100644
index 000000000..d49b40178
--- /dev/null
+++ b/students/23K1158/23K1158-23/src/main/java/ru/mirea/practice/u23k1158/ArrayQueueTest.java
@@ -0,0 +1,27 @@
+package ru.mirea.practice.u23k1158;
+
+public abstract class ArrayQueueTest {
+ public static void main(String[] args) {
+ ArrayQueue queue = new ArrayQueue(5);
+
+ System.out.println("Очередь пустая: " + queue.isEmpty());
+
+ queue.enqueue(1);
+ queue.enqueue(2);
+ queue.enqueue(3);
+ System.out.println("Первый элемент: " + queue.element());
+ System.out.println("Размер очереди: " + queue.size());
+
+ System.out.println("Удален элемент: " + queue.dequeue());
+ System.out.println("Пользователь после удаления: " + queue.element());
+
+ queue.clear();
+ System.out.println("Очередь пустая после очистки: " + queue.isEmpty());
+
+ try {
+ queue.dequeue();
+ } catch (IllegalStateException e) {
+ System.out.println(e.getMessage());
+ }
+ }
+}
diff --git a/students/23K1158/23K1158-23/src/main/java/ru/mirea/practice/u23k1158/LinkedQueue.java b/students/23K1158/23K1158-23/src/main/java/ru/mirea/practice/u23k1158/LinkedQueue.java
new file mode 100644
index 000000000..239bcb85f
--- /dev/null
+++ b/students/23K1158/23K1158-23/src/main/java/ru/mirea/practice/u23k1158/LinkedQueue.java
@@ -0,0 +1,48 @@
+package ru.mirea.practice.u23k1158;
+
+public class LinkedQueue extends AbstractQueue {
+ private Node head;
+ private Node tail;
+
+ public LinkedQueue() {
+ head = null;
+ tail = null;
+ size = 0;
+ }
+
+ @Override
+ public void enqueue(double value) {
+ Node newNode = new Node(value);
+ if (tail != null) {
+ tail.next = newNode;
+ }
+ tail = newNode;
+ if (head == null) {
+ head = tail;
+ }
+ size++;
+ }
+
+ @Override
+ public double dequeue() {
+ if (isEmpty()) {
+ throw new IllegalStateException("Очередь пуста");
+ }
+ final double value = head.value;
+ head = head.next;
+
+ if (head == null) {
+ tail = null;
+ }
+ size--;
+ return value;
+ }
+
+ @Override
+ public double element() {
+ if (isEmpty()) {
+ throw new IllegalStateException("Очередь пуста");
+ }
+ return head.value;
+ }
+}
diff --git a/students/23K1158/23K1158-23/src/main/java/ru/mirea/practice/u23k1158/Main.java b/students/23K1158/23K1158-23/src/main/java/ru/mirea/practice/u23k1158/Main.java
new file mode 100644
index 000000000..7765cdef4
--- /dev/null
+++ b/students/23K1158/23K1158-23/src/main/java/ru/mirea/practice/u23k1158/Main.java
@@ -0,0 +1,12 @@
+package ru.mirea.practice.u23k1158;
+
+public final class Main {
+
+ private Main() {
+
+ }
+
+ public static void main(String[] args) {
+ System.out.println("первая практическая работа!");
+ }
+}
diff --git a/students/23K1158/23K1158-23/src/main/java/ru/mirea/practice/u23k1158/Node.java b/students/23K1158/23K1158-23/src/main/java/ru/mirea/practice/u23k1158/Node.java
new file mode 100644
index 000000000..70a9bd626
--- /dev/null
+++ b/students/23K1158/23K1158-23/src/main/java/ru/mirea/practice/u23k1158/Node.java
@@ -0,0 +1,11 @@
+package ru.mirea.practice.u23k1158;
+
+public class Node {
+ double value;
+ Node next;
+
+ public Node(double value) {
+ this.value = value;
+ this.next = null;
+ }
+}
diff --git a/students/23K1158/23K1158-23/src/main/java/ru/mirea/practice/u23k1158/Queue.java b/students/23K1158/23K1158-23/src/main/java/ru/mirea/practice/u23k1158/Queue.java
new file mode 100644
index 000000000..32991ab36
--- /dev/null
+++ b/students/23K1158/23K1158-23/src/main/java/ru/mirea/practice/u23k1158/Queue.java
@@ -0,0 +1,15 @@
+package ru.mirea.practice.u23k1158;
+
+public interface Queue {
+ void enqueue(double value);
+
+ double dequeue();
+
+ double element();
+
+ int size();
+
+ boolean isEmpty();
+
+ void clear();
+}
diff --git a/students/23K1158/23K1158-24/pom.xml b/students/23K1158/23K1158-24/pom.xml
new file mode 100644
index 000000000..195892c35
--- /dev/null
+++ b/students/23K1158/23K1158-24/pom.xml
@@ -0,0 +1,13 @@
+
+
+ 4.0.0
+
+ 23K1158
+ ru.mirea.practice
+ 2024.1
+ ../pom.xml
+
+ 23K1158-24
+ 24
+
diff --git a/students/23K1158/23K1158-24/src/main/java/ru/mirea/practice/u23k1158/Chair.java b/students/23K1158/23K1158-24/src/main/java/ru/mirea/practice/u23k1158/Chair.java
new file mode 100644
index 000000000..e81d1dd90
--- /dev/null
+++ b/students/23K1158/23K1158-24/src/main/java/ru/mirea/practice/u23k1158/Chair.java
@@ -0,0 +1,5 @@
+package ru.mirea.practice.u23k1158;
+
+public interface Chair {
+ void sit();
+}
diff --git a/students/23K1158/23K1158-24/src/main/java/ru/mirea/practice/u23k1158/ChairFactory.java b/students/23K1158/23K1158-24/src/main/java/ru/mirea/practice/u23k1158/ChairFactory.java
new file mode 100644
index 000000000..6d9d71346
--- /dev/null
+++ b/students/23K1158/23K1158-24/src/main/java/ru/mirea/practice/u23k1158/ChairFactory.java
@@ -0,0 +1,5 @@
+package ru.mirea.practice.u23k1158;
+
+public interface ChairFactory {
+ Chair createChair();
+}
diff --git a/students/23K1158/23K1158-24/src/main/java/ru/mirea/practice/u23k1158/Client.java b/students/23K1158/23K1158-24/src/main/java/ru/mirea/practice/u23k1158/Client.java
new file mode 100644
index 000000000..4ac1008a5
--- /dev/null
+++ b/students/23K1158/23K1158-24/src/main/java/ru/mirea/practice/u23k1158/Client.java
@@ -0,0 +1,13 @@
+package ru.mirea.practice.u23k1158;
+
+public class Client {
+ private Chair chair;
+
+ public Client(ChairFactory factory) {
+ this.chair = factory.createChair();
+ }
+
+ public void sit() {
+ chair.sit();
+ }
+}
diff --git a/students/23K1158/23K1158-24/src/main/java/ru/mirea/practice/u23k1158/Complex.java b/students/23K1158/23K1158-24/src/main/java/ru/mirea/practice/u23k1158/Complex.java
new file mode 100644
index 000000000..fea045080
--- /dev/null
+++ b/students/23K1158/23K1158-24/src/main/java/ru/mirea/practice/u23k1158/Complex.java
@@ -0,0 +1,7 @@
+package ru.mirea.practice.u23k1158;
+
+public interface Complex {
+ double getReal();
+
+ double getImaginary();
+}
diff --git a/students/23K1158/23K1158-24/src/main/java/ru/mirea/practice/u23k1158/ComplexFactory.java b/students/23K1158/23K1158-24/src/main/java/ru/mirea/practice/u23k1158/ComplexFactory.java
new file mode 100644
index 000000000..9c589f7f7
--- /dev/null
+++ b/students/23K1158/23K1158-24/src/main/java/ru/mirea/practice/u23k1158/ComplexFactory.java
@@ -0,0 +1,7 @@
+package ru.mirea.practice.u23k1158;
+
+interface ComplexFactory {
+ Complex createComplex();
+
+ Complex createComplex(int real, int imaginary);
+}
diff --git a/students/23K1158/23K1158-24/src/main/java/ru/mirea/practice/u23k1158/ConcreteComplex.java b/students/23K1158/23K1158-24/src/main/java/ru/mirea/practice/u23k1158/ConcreteComplex.java
new file mode 100644
index 000000000..00ee6bfb5
--- /dev/null
+++ b/students/23K1158/23K1158-24/src/main/java/ru/mirea/practice/u23k1158/ConcreteComplex.java
@@ -0,0 +1,21 @@
+package ru.mirea.practice.u23k1158;
+
+public class ConcreteComplex implements Complex {
+ private int real;
+ private int imaginary;
+
+ public ConcreteComplex(int real, int imaginary) {
+ this.real = real;
+ this.imaginary = imaginary;
+ }
+
+ @Override
+ public double getReal() {
+ return real;
+ }
+
+ @Override
+ public double getImaginary() {
+ return imaginary;
+ }
+}
diff --git a/students/23K1158/23K1158-24/src/main/java/ru/mirea/practice/u23k1158/ConcreteFactory.java b/students/23K1158/23K1158-24/src/main/java/ru/mirea/practice/u23k1158/ConcreteFactory.java
new file mode 100644
index 000000000..6d6ea07e6
--- /dev/null
+++ b/students/23K1158/23K1158-24/src/main/java/ru/mirea/practice/u23k1158/ConcreteFactory.java
@@ -0,0 +1,13 @@
+package ru.mirea.practice.u23k1158;
+
+public class ConcreteFactory implements ComplexFactory {
+ @Override
+ public Complex createComplex() {
+ return new ConcreteComplex(0, 0);
+ }
+
+ @Override
+ public Complex createComplex(int real, int imaginary) {
+ return new ConcreteComplex(real, imaginary);
+ }
+}
diff --git a/students/23K1158/23K1158-24/src/main/java/ru/mirea/practice/u23k1158/MagicalChair.java b/students/23K1158/23K1158-24/src/main/java/ru/mirea/practice/u23k1158/MagicalChair.java
new file mode 100644
index 000000000..507ded7ea
--- /dev/null
+++ b/students/23K1158/23K1158-24/src/main/java/ru/mirea/practice/u23k1158/MagicalChair.java
@@ -0,0 +1,8 @@
+package ru.mirea.practice.u23k1158;
+
+public class MagicalChair implements Chair {
+ @Override
+ public void sit() {
+ System.out.println("Вы сидите на магическом стуле.");
+ }
+}
diff --git a/students/23K1158/23K1158-24/src/main/java/ru/mirea/practice/u23k1158/MagicalChairFactory.java b/students/23K1158/23K1158-24/src/main/java/ru/mirea/practice/u23k1158/MagicalChairFactory.java
new file mode 100644
index 000000000..741d7599a
--- /dev/null
+++ b/students/23K1158/23K1158-24/src/main/java/ru/mirea/practice/u23k1158/MagicalChairFactory.java
@@ -0,0 +1,8 @@
+package ru.mirea.practice.u23k1158;
+
+public class MagicalChairFactory implements ChairFactory {
+ @Override
+ public Chair createChair() {
+ return new MagicalChair();
+ }
+}
diff --git a/students/23K1158/23K1158-24/src/main/java/ru/mirea/practice/u23k1158/Main.java b/students/23K1158/23K1158-24/src/main/java/ru/mirea/practice/u23k1158/Main.java
new file mode 100644
index 000000000..7765cdef4
--- /dev/null
+++ b/students/23K1158/23K1158-24/src/main/java/ru/mirea/practice/u23k1158/Main.java
@@ -0,0 +1,12 @@
+package ru.mirea.practice.u23k1158;
+
+public final class Main {
+
+ private Main() {
+
+ }
+
+ public static void main(String[] args) {
+ System.out.println("первая практическая работа!");
+ }
+}
diff --git a/students/23K1158/23K1158-24/src/main/java/ru/mirea/practice/u23k1158/MultifunctionalChair.java b/students/23K1158/23K1158-24/src/main/java/ru/mirea/practice/u23k1158/MultifunctionalChair.java
new file mode 100644
index 000000000..875fcff27
--- /dev/null
+++ b/students/23K1158/23K1158-24/src/main/java/ru/mirea/practice/u23k1158/MultifunctionalChair.java
@@ -0,0 +1,8 @@
+package ru.mirea.practice.u23k1158;
+
+public class MultifunctionalChair implements Chair {
+ @Override
+ public void sit() {
+ System.out.println("Вы сидите на многофункциональном стуле.");
+ }
+}
diff --git a/students/23K1158/23K1158-24/src/main/java/ru/mirea/practice/u23k1158/MultifunctionalChairFactory.java b/students/23K1158/23K1158-24/src/main/java/ru/mirea/practice/u23k1158/MultifunctionalChairFactory.java
new file mode 100644
index 000000000..6ab51f40d
--- /dev/null
+++ b/students/23K1158/23K1158-24/src/main/java/ru/mirea/practice/u23k1158/MultifunctionalChairFactory.java
@@ -0,0 +1,8 @@
+package ru.mirea.practice.u23k1158;
+
+public class MultifunctionalChairFactory implements ChairFactory {
+ @Override
+ public Chair createChair() {
+ return new MultifunctionalChair();
+ }
+}
diff --git a/students/23K1158/23K1158-24/src/main/java/ru/mirea/practice/u23k1158/TestComplex.java b/students/23K1158/23K1158-24/src/main/java/ru/mirea/practice/u23k1158/TestComplex.java
new file mode 100644
index 000000000..b42c34c41
--- /dev/null
+++ b/students/23K1158/23K1158-24/src/main/java/ru/mirea/practice/u23k1158/TestComplex.java
@@ -0,0 +1,13 @@
+package ru.mirea.practice.u23k1158;
+
+public abstract class TestComplex {
+ public static void main(String[] args) {
+ ComplexFactory factory = new ConcreteFactory();
+
+ Complex complex1 = factory.createComplex();
+ System.out.println("Комплексное число: " + complex1.getReal() + " + " + complex1.getImaginary() + "i");
+
+ Complex complex2 = factory.createComplex(3, 4);
+ System.out.println("Комплексное число: " + complex2.getReal() + " + " + complex2.getImaginary() + "i");
+ }
+}
diff --git a/students/23K1158/23K1158-24/src/main/java/ru/mirea/practice/u23k1158/TestFactory.java b/students/23K1158/23K1158-24/src/main/java/ru/mirea/practice/u23k1158/TestFactory.java
new file mode 100644
index 000000000..d14f015cc
--- /dev/null
+++ b/students/23K1158/23K1158-24/src/main/java/ru/mirea/practice/u23k1158/TestFactory.java
@@ -0,0 +1,18 @@
+package ru.mirea.practice.u23k1158;
+
+public abstract class TestFactory {
+ public static void main(String[] args) {
+ ChairFactory victorianChairFactory = new VictorianChairFactory();
+ Client client1 = new Client(victorianChairFactory);
+ client1.sit();
+
+ ChairFactory multifunctionalChairFactory = new MultifunctionalChairFactory();
+
+ Client client2 = new Client(multifunctionalChairFactory);
+ client2.sit();
+
+ ChairFactory magicalChairFactory = new MagicalChairFactory();
+ Client client3 = new Client(magicalChairFactory);
+ client3.sit();
+ }
+}
diff --git a/students/23K1158/23K1158-24/src/main/java/ru/mirea/practice/u23k1158/VictorianChair.java b/students/23K1158/23K1158-24/src/main/java/ru/mirea/practice/u23k1158/VictorianChair.java
new file mode 100644
index 000000000..26ab8eae0
--- /dev/null
+++ b/students/23K1158/23K1158-24/src/main/java/ru/mirea/practice/u23k1158/VictorianChair.java
@@ -0,0 +1,8 @@
+package ru.mirea.practice.u23k1158;
+
+public class VictorianChair implements Chair {
+ @Override
+ public void sit() {
+ System.out.println("Вы сидите на викторианском стуле.");
+ }
+}
diff --git a/students/23K1158/23K1158-24/src/main/java/ru/mirea/practice/u23k1158/VictorianChairFactory.java b/students/23K1158/23K1158-24/src/main/java/ru/mirea/practice/u23k1158/VictorianChairFactory.java
new file mode 100644
index 000000000..5e6014b1f
--- /dev/null
+++ b/students/23K1158/23K1158-24/src/main/java/ru/mirea/practice/u23k1158/VictorianChairFactory.java
@@ -0,0 +1,8 @@
+package ru.mirea.practice.u23k1158;
+
+public class VictorianChairFactory implements ChairFactory {
+ @Override
+ public Chair createChair() {
+ return new VictorianChair();
+ }
+}
diff --git a/students/23K1158/README.adoc b/students/23K1158/README.adoc
new file mode 100644
index 000000000..7149b49b1
--- /dev/null
+++ b/students/23K1158/README.adoc
@@ -0,0 +1,2 @@
+Ооржак Шагдыр
+КВБО-01-23
\ No newline at end of file
diff --git a/students/23K1158/pom.xml b/students/23K1158/pom.xml
new file mode 100644
index 000000000..a83760df7
--- /dev/null
+++ b/students/23K1158/pom.xml
@@ -0,0 +1,30 @@
+
+
+ 4.0.0
+
+ algorithms-and-data-structures
+ ru.mirea.practice
+ 2024.1
+ ../../pom.xml
+
+ 23K1158
+ pom
+ Практическая работа 21-32 Ооржак
+
+
+ 23K1158-21
+ 23K1158-22
+ 23K1158-23
+ 23K1158-24
+ 23K1158-025
+ 23K1158-026
+ 23K1158-027
+ 23K1158-028
+ 23K1158-029
+ 23K1158-030_1
+ 23K1158-030_2
+ 23K1158-031
+ 23K1158-032
+
+