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 + +