diff --git a/pom.xml b/pom.xml index 4f74e0f3a..48f5d9b5a 100644 --- a/pom.xml +++ b/pom.xml @@ -82,6 +82,7 @@ students/23K0186 students/23K0755 students/23K1292 + students/23K0687 students/23L0908 students/23K0342 diff --git a/students/23K0687/23K0687-p21/pom.xml b/students/23K0687/23K0687-p21/pom.xml new file mode 100644 index 000000000..06b7c2c63 --- /dev/null +++ b/students/23K0687/23K0687-p21/pom.xml @@ -0,0 +1,13 @@ + + + 4.0.0 + + 23K0687 + ru.mirea.practice + 2024.1 + ../pom.xml + + 23K0687-p21 + Практическая 21 Кураев М М + diff --git a/students/23K0687/23K0687-p21/src/main/java/ru/mirea/practice/s0000001/num1/Main.java b/students/23K0687/23K0687-p21/src/main/java/ru/mirea/practice/s0000001/num1/Main.java new file mode 100644 index 000000000..de896b9c2 --- /dev/null +++ b/students/23K0687/23K0687-p21/src/main/java/ru/mirea/practice/s0000001/num1/Main.java @@ -0,0 +1,24 @@ +package ru.mirea.practice.s0000001.num1; + +import java.util.ArrayList; +import java.util.Collections; +import java.util.List; + +public final class Main { + public static void main(String[] args) { + Object[] a = {1, "hello", 2, "world"}; + List l = toList(a); + System.out.println("Конвертированный список: " + l); + } + + public static List toList(Object[] a) { + List r = new ArrayList<>(); + Collections.addAll(r, a); + return r; + } + + private Main() { + throw new UnsupportedOperationException("Этот класс не предназначен для создания экземпляров"); + } +} + diff --git a/students/23K0687/23K0687-p21/src/main/java/ru/mirea/practice/s0000001/num2/Main.java b/students/23K0687/23K0687-p21/src/main/java/ru/mirea/practice/s0000001/num2/Main.java new file mode 100644 index 000000000..1e9bf0f24 --- /dev/null +++ b/students/23K0687/23K0687-p21/src/main/java/ru/mirea/practice/s0000001/num2/Main.java @@ -0,0 +1,13 @@ +package ru.mirea.practice.s0000001.num2; + +public final class Main { + public static void main(String[] args) { + Object[] a = {1, 2L, 3.14, "hello"}; + MyArray m = new MyArray(a); + m.printArray(); + } + + private Main() { + throw new UnsupportedOperationException("Этот класс не предназначен для создания экземпляров"); + } +} diff --git a/students/23K0687/23K0687-p21/src/main/java/ru/mirea/practice/s0000001/num2/MyArray.java b/students/23K0687/23K0687-p21/src/main/java/ru/mirea/practice/s0000001/num2/MyArray.java new file mode 100644 index 000000000..40bfe223e --- /dev/null +++ b/students/23K0687/23K0687-p21/src/main/java/ru/mirea/practice/s0000001/num2/MyArray.java @@ -0,0 +1,16 @@ +package ru.mirea.practice.s0000001.num2; + +public class MyArray { + private Object[] arr; + + public MyArray(Object[] arr) { + this.arr = arr; + } + + public void printArray() { + System.out.print("Массив: "); + for (Object obj : arr) { + System.out.print(obj + " "); + } + } +} diff --git a/students/23K0687/23K0687-p21/src/main/java/ru/mirea/practice/s0000001/num3/Main.java b/students/23K0687/23K0687-p21/src/main/java/ru/mirea/practice/s0000001/num3/Main.java new file mode 100644 index 000000000..967191a91 --- /dev/null +++ b/students/23K0687/23K0687-p21/src/main/java/ru/mirea/practice/s0000001/num3/Main.java @@ -0,0 +1,17 @@ +package ru.mirea.practice.s0000001.num3; + +public final class Main { + public static void main(String[] args) { + Object[] a = {1, 2L, 3.14, "hello"}; + Object e = getElement(a, 2); + System.out.println("Элемент на индексе 2: " + e); + } + + public static Object getElement(Object[] a, int idx) { + return a[idx]; + } + + private Main() { + throw new UnsupportedOperationException("Этот класс не предназначен для создания экземпляров"); + } +} diff --git a/students/23K0687/23K0687-p21/src/main/java/ru/mirea/practice/s0000001/num4/Main.java b/students/23K0687/23K0687-p21/src/main/java/ru/mirea/practice/s0000001/num4/Main.java new file mode 100644 index 000000000..5a0a64f68 --- /dev/null +++ b/students/23K0687/23K0687-p21/src/main/java/ru/mirea/practice/s0000001/num4/Main.java @@ -0,0 +1,34 @@ +package ru.mirea.practice.s0000001.num4; + +import java.io.File; +import java.util.ArrayList; +import java.util.List; + +public final class Main { + public static void main(String[] args) { + List f = listFiles("путь_к_каталогу"); + System.out.println("Первые 5 элементов:"); + for (int i = 0; i < Math.min(5, f.size()); i++) { + System.out.println(f.get(i)); + } + } + + public static List listFiles(String path) { + File dir = new File(path); + List files = new ArrayList<>(); + if (dir.isDirectory()) { + File[] fileList = dir.listFiles(); + if (fileList != null) { + for (File file : fileList) { + files.add(file.getName()); + } + } + } + return files; + } + + private Main() { + throw new UnsupportedOperationException("Этот класс не предназначен для создания экземпляров"); + } +} + diff --git a/students/23K0687/23K0687-p22/pom.xml b/students/23K0687/23K0687-p22/pom.xml new file mode 100644 index 000000000..1cb56b63c --- /dev/null +++ b/students/23K0687/23K0687-p22/pom.xml @@ -0,0 +1,13 @@ + + + 4.0.0 + + 23K0687 + ru.mirea.practice + 2024.1 + ../pom.xml + + 23K0687-p22 + Практическая 22 Кураев М М + diff --git a/students/23K0687/23K0687-p22/src/main/java/ru/mirea/practice/s0000001/num1/Main.java b/students/23K0687/23K0687-p22/src/main/java/ru/mirea/practice/s0000001/num1/Main.java new file mode 100644 index 000000000..6619a5365 --- /dev/null +++ b/students/23K0687/23K0687-p22/src/main/java/ru/mirea/practice/s0000001/num1/Main.java @@ -0,0 +1,54 @@ +package ru.mirea.practice.s0000001.num1; + +import java.util.Stack; + +public final class Main { + public static void main(String[] args) { + String[] e = {"2", "3", "+", "5", "*"}; + double r = evaluateReversePolishNotation(e); + System.out.println("Результат: " + r); + } + + public static double evaluateReversePolishNotation(String[] e) { + Stack s = new Stack<>(); + for (String t : e) { + if (isNum(t)) { + s.push(Double.parseDouble(t)); + } else { + double b = s.pop(); + double a = s.pop(); + double res = applyOp(a, b, t); + s.push(res); + } + } + return s.pop(); + } + + public static boolean isNum(String t) { + try { + Double.parseDouble(t); + return true; + } catch (NumberFormatException ex) { + return false; + } + } + + public static double applyOp(double a, double b, String op) { + switch (op) { + case "+": + return a + b; + case "-": + return a - b; + case "*": + return a * b; + case "/": + return a / b; + default: + throw new IllegalArgumentException("Неизвестный оператор: " + op); + } + } + + private Main() { + throw new UnsupportedOperationException("Этот класс не предназначен для создания экземпляров"); + } +} diff --git a/students/23K0687/23K0687-p23.a/pom.xml b/students/23K0687/23K0687-p23.a/pom.xml new file mode 100644 index 000000000..14eeab646 --- /dev/null +++ b/students/23K0687/23K0687-p23.a/pom.xml @@ -0,0 +1,13 @@ + + + 4.0.0 + + 23K0687 + ru.mirea.practice + 2024.1 + ../pom.xml + + 23K0687-p23.a + Практическая 23 Кураев М М + diff --git a/students/23K0687/23K0687-p23.a/src/main/java/ru/mirea/practice/s0000001/num1/ArrayQueue.java b/students/23K0687/23K0687-p23.a/src/main/java/ru/mirea/practice/s0000001/num1/ArrayQueue.java new file mode 100644 index 000000000..8c27b860b --- /dev/null +++ b/students/23K0687/23K0687-p23.a/src/main/java/ru/mirea/practice/s0000001/num1/ArrayQueue.java @@ -0,0 +1,48 @@ +package ru.mirea.practice.s0000001.num1; + +public class ArrayQueue { + private int[] arr = new int[10]; + private int h = 0; + private int t = 0; + private int sz = 0; + + public void enqueue(int x) { + if (sz == arr.length) { + throw new IllegalStateException("Очередь переполнена"); + } + arr[t] = x; + t = (t + 1) % arr.length; + sz++; + } + + public int element() { + if (sz == 0) { + throw new IllegalStateException("Очередь пуста"); + } + return arr[h]; + } + + public int dequeue() { + if (sz == 0) { + throw new IllegalStateException("Очередь пуста"); + } + int res = arr[h]; + h = (h + 1) % arr.length; + sz--; + return res; + } + + public int size() { + return sz; + } + + public boolean isEmpty() { + return sz == 0; + } + + public void clear() { + h = 0; + t = 0; + sz = 0; + } +} diff --git a/students/23K0687/23K0687-p23.a/src/main/java/ru/mirea/practice/s0000001/num1/ArrayQueueAdt.java b/students/23K0687/23K0687-p23.a/src/main/java/ru/mirea/practice/s0000001/num1/ArrayQueueAdt.java new file mode 100644 index 000000000..2ba96a843 --- /dev/null +++ b/students/23K0687/23K0687-p23.a/src/main/java/ru/mirea/practice/s0000001/num1/ArrayQueueAdt.java @@ -0,0 +1,48 @@ +package ru.mirea.practice.s0000001.num1; + +public class ArrayQueueAdt { + private int[] arr = new int[10]; + private int h = 0; + private int t = 0; + private int sz = 0; + + public void enqueue(int x) { + if (sz == arr.length) { + throw new IllegalStateException("Очередь переполнена"); + } + arr[t] = x; + t = (t + 1) % arr.length; + sz++; + } + + public int element() { + if (sz == 0) { + throw new IllegalStateException("Очередь пуста"); + } + return arr[h]; + } + + public int dequeue() { + if (sz == 0) { + throw new IllegalStateException("Очередь пуста"); + } + int res = arr[h]; + h = (h + 1) % arr.length; + sz--; + return res; + } + + public int size() { + return sz; + } + + public boolean isEmpty() { + return sz == 0; + } + + public void clear() { + h = 0; + t = 0; + sz = 0; + } +} diff --git a/students/23K0687/23K0687-p23.a/src/main/java/ru/mirea/practice/s0000001/num1/ArrayQueueModule.java b/students/23K0687/23K0687-p23.a/src/main/java/ru/mirea/practice/s0000001/num1/ArrayQueueModule.java new file mode 100644 index 000000000..f70c3a851 --- /dev/null +++ b/students/23K0687/23K0687-p23.a/src/main/java/ru/mirea/practice/s0000001/num1/ArrayQueueModule.java @@ -0,0 +1,29 @@ +package ru.mirea.practice.s0000001.num1; + +public final class ArrayQueueModule { + private ArrayQueueModule() {} + + public static void enqueue(int x) { + // Реализация + } + + public static int element() { + return 0; + } + + public static int dequeue() { + return 0; + } + + public static int size() { + return 0; + } + + public static boolean isEmpty() { + return false; + } + + public static void clear() { + // Метод пока не реализован + } +} diff --git a/students/23K0687/23K0687-p23.a/src/main/java/ru/mirea/practice/s0000001/num1/Main.java b/students/23K0687/23K0687-p23.a/src/main/java/ru/mirea/practice/s0000001/num1/Main.java new file mode 100644 index 000000000..6314e9881 --- /dev/null +++ b/students/23K0687/23K0687-p23.a/src/main/java/ru/mirea/practice/s0000001/num1/Main.java @@ -0,0 +1,9 @@ +package ru.mirea.practice.s0000001.num1; + +public final class Main { + private Main() {} + + public static void main(String[] args) { + // Логика программы + } +} diff --git a/students/23K0687/23K0687-p23.a/src/main/java/ru/mirea/practice/s0000001/num2/AbstractQueue.java b/students/23K0687/23K0687-p23.a/src/main/java/ru/mirea/practice/s0000001/num2/AbstractQueue.java new file mode 100644 index 000000000..fbba925fb --- /dev/null +++ b/students/23K0687/23K0687-p23.a/src/main/java/ru/mirea/practice/s0000001/num2/AbstractQueue.java @@ -0,0 +1,17 @@ +package ru.mirea.practice.s0000001.num2; + +public abstract class AbstractQueue implements Queue { + protected int sz = 0; + + public int size() { + return sz; + } + + public boolean isEmpty() { + return sz == 0; + } + + public void clear() { + sz = 0; + } +} diff --git a/students/23K0687/23K0687-p23.a/src/main/java/ru/mirea/practice/s0000001/num2/ArrayQueue.java b/students/23K0687/23K0687-p23.a/src/main/java/ru/mirea/practice/s0000001/num2/ArrayQueue.java new file mode 100644 index 000000000..8083d9674 --- /dev/null +++ b/students/23K0687/23K0687-p23.a/src/main/java/ru/mirea/practice/s0000001/num2/ArrayQueue.java @@ -0,0 +1,33 @@ +package ru.mirea.practice.s0000001.num2; + +public class ArrayQueue extends AbstractQueue { + private int[] arr = new int[10]; + private int head = 0; + private int tail = 0; + + public void enqueue(int x) { + if (sz == arr.length) { + throw new IllegalStateException("Очередь переполнена"); + } + arr[tail] = x; + tail = (tail + 1) % arr.length; + sz++; + } + + public int element() { + if (isEmpty()) { + throw new IllegalStateException("Очередь пуста"); + } + return arr[head]; + } + + public int dequeue() { + if (isEmpty()) { + throw new IllegalStateException("Очередь пуста"); + } + int res = arr[head]; + head = (head + 1) % arr.length; + sz--; + return res; + } +} diff --git a/students/23K0687/23K0687-p23.a/src/main/java/ru/mirea/practice/s0000001/num2/LinkedQueue.java b/students/23K0687/23K0687-p23.a/src/main/java/ru/mirea/practice/s0000001/num2/LinkedQueue.java new file mode 100644 index 000000000..4ad20366e --- /dev/null +++ b/students/23K0687/23K0687-p23.a/src/main/java/ru/mirea/practice/s0000001/num2/LinkedQueue.java @@ -0,0 +1,46 @@ +package ru.mirea.practice.s0000001.num2; + +public class LinkedQueue extends AbstractQueue { + private Node head; + private Node tail; + + private static class Node { + int data; + Node next; + + Node(int x) { + data = x; + } + } + + public void enqueue(int x) { + Node newNode = new Node(x); + if (tail == null) { + head = tail = newNode; + } else { + tail.next = newNode; + tail = newNode; + } + sz++; + } + + public int element() { + if (isEmpty()) { + throw new IllegalStateException("Очередь пуста"); + } + return head.data; + } + + public int dequeue() { + if (isEmpty()) { + throw new IllegalStateException("Очередь пуста"); + } + final int res = head.data; // Сделаем переменную final и используем сразу + head = head.next; + if (head == null) { + tail = null; + } + sz--; + return res; + } +} diff --git a/students/23K0687/23K0687-p23.a/src/main/java/ru/mirea/practice/s0000001/num2/Main.java b/students/23K0687/23K0687-p23.a/src/main/java/ru/mirea/practice/s0000001/num2/Main.java new file mode 100644 index 000000000..6e7da0142 --- /dev/null +++ b/students/23K0687/23K0687-p23.a/src/main/java/ru/mirea/practice/s0000001/num2/Main.java @@ -0,0 +1,16 @@ +package ru.mirea.practice.s0000001.num2; + +public final class Main { + private Main() {} + + public static void main(String[] args) { + Queue queue = new LinkedQueue(); + queue.enqueue(10); + queue.enqueue(20); + System.out.println("Элемент в очереди: " + queue.element()); + System.out.println("Удалён элемент: " + queue.dequeue()); + System.out.println("Размер очереди: " + queue.size()); + queue.clear(); + System.out.println("Очередь очищена. Пустая? " + queue.isEmpty()); + } +} diff --git a/students/23K0687/23K0687-p23.a/src/main/java/ru/mirea/practice/s0000001/num2/Queue.java b/students/23K0687/23K0687-p23.a/src/main/java/ru/mirea/practice/s0000001/num2/Queue.java new file mode 100644 index 000000000..f5c625ade --- /dev/null +++ b/students/23K0687/23K0687-p23.a/src/main/java/ru/mirea/practice/s0000001/num2/Queue.java @@ -0,0 +1,15 @@ +package ru.mirea.practice.s0000001.num2; + +public interface Queue { + void enqueue(int x); + + int element(); + + int dequeue(); + + int size(); + + boolean isEmpty(); + + void clear(); +} diff --git a/students/23K0687/23K0687-p24/pom.xml b/students/23K0687/23K0687-p24/pom.xml new file mode 100644 index 000000000..5410f9930 --- /dev/null +++ b/students/23K0687/23K0687-p24/pom.xml @@ -0,0 +1,13 @@ + + + 4.0.0 + + 23K0687 + ru.mirea.practice + 2024.1 + ../pom.xml + + 23K0687-p24 + Практическая 24 Кураев М М + diff --git a/students/23K0687/23K0687-p24/src/main/java/ru/mirea/practice/s0000001/num1/CreateTextDocument.java b/students/23K0687/23K0687-p24/src/main/java/ru/mirea/practice/s0000001/num1/CreateTextDocument.java new file mode 100644 index 000000000..f51a9d712 --- /dev/null +++ b/students/23K0687/23K0687-p24/src/main/java/ru/mirea/practice/s0000001/num1/CreateTextDocument.java @@ -0,0 +1,11 @@ +package ru.mirea.practice.s0000001.num1; + +public class CreateTextDocument implements ICreateDocument { + public IDocument createNew() { + return new TextDocument(); + } + + public IDocument createOpen() { + return new TextDocument(); + } +} diff --git a/students/23K0687/23K0687-p24/src/main/java/ru/mirea/practice/s0000001/num1/EditorFrame.java b/students/23K0687/23K0687-p24/src/main/java/ru/mirea/practice/s0000001/num1/EditorFrame.java new file mode 100644 index 000000000..0a8a86335 --- /dev/null +++ b/students/23K0687/23K0687-p24/src/main/java/ru/mirea/practice/s0000001/num1/EditorFrame.java @@ -0,0 +1,47 @@ +package ru.mirea.practice.s0000001.num1; + +import javax.swing.JFrame; +import javax.swing.JMenu; +import javax.swing.JMenuBar; +import javax.swing.JMenuItem; + +public class EditorFrame extends JFrame { + + public EditorFrame(ICreateDocument factory) { + setTitle("Text Editor"); + setSize(400, 300); + setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); + + JMenuBar menuBar = new JMenuBar(); + setJMenuBar(menuBar); + + JMenu fileMenu = new JMenu("File"); + menuBar.add(fileMenu); + + JMenuItem newItem = new JMenuItem("New"); + fileMenu.add(newItem); + + JMenuItem openItem = new JMenuItem("Open"); + fileMenu.add(openItem); + + JMenuItem saveItem = new JMenuItem("Save"); + fileMenu.add(saveItem); + + JMenuItem exitItem = new JMenuItem("Exit"); + fileMenu.add(exitItem); + + newItem.addActionListener(e -> { + factory.createNew(); + System.out.println("New document created"); + }); + + openItem.addActionListener(e -> { + factory.createOpen(); + System.out.println("Document opened"); + }); + + saveItem.addActionListener(e -> System.out.println("Document saved")); + + exitItem.addActionListener(e -> System.exit(0)); + } +} diff --git a/students/23K0687/23K0687-p24/src/main/java/ru/mirea/practice/s0000001/num1/ICreateDocument.java b/students/23K0687/23K0687-p24/src/main/java/ru/mirea/practice/s0000001/num1/ICreateDocument.java new file mode 100644 index 000000000..e219ba0f4 --- /dev/null +++ b/students/23K0687/23K0687-p24/src/main/java/ru/mirea/practice/s0000001/num1/ICreateDocument.java @@ -0,0 +1,7 @@ +package ru.mirea.practice.s0000001.num1; + +public interface ICreateDocument { + IDocument createNew(); + + IDocument createOpen(); +} diff --git a/students/23K0687/23K0687-p24/src/main/java/ru/mirea/practice/s0000001/num1/IDocument.java b/students/23K0687/23K0687-p24/src/main/java/ru/mirea/practice/s0000001/num1/IDocument.java new file mode 100644 index 000000000..a5908fa5d --- /dev/null +++ b/students/23K0687/23K0687-p24/src/main/java/ru/mirea/practice/s0000001/num1/IDocument.java @@ -0,0 +1,7 @@ +package ru.mirea.practice.s0000001.num1; + +public interface IDocument { + void open(); + + void save(); +} diff --git a/students/23K0687/23K0687-p24/src/main/java/ru/mirea/practice/s0000001/num1/Main.java b/students/23K0687/23K0687-p24/src/main/java/ru/mirea/practice/s0000001/num1/Main.java new file mode 100644 index 000000000..632e1321c --- /dev/null +++ b/students/23K0687/23K0687-p24/src/main/java/ru/mirea/practice/s0000001/num1/Main.java @@ -0,0 +1,13 @@ +package ru.mirea.practice.s0000001.num1; + +public final class Main { + private Main() { + throw new UnsupportedOperationException("Этот класс не предназначен для создания экземпляров"); + } + + public static void main(String[] args) { + ICreateDocument factory = new CreateTextDocument(); + EditorFrame editorFrame = new EditorFrame(factory); + editorFrame.setVisible(true); + } +} diff --git a/students/23K0687/23K0687-p24/src/main/java/ru/mirea/practice/s0000001/num1/TextDocument.java b/students/23K0687/23K0687-p24/src/main/java/ru/mirea/practice/s0000001/num1/TextDocument.java new file mode 100644 index 000000000..660379937 --- /dev/null +++ b/students/23K0687/23K0687-p24/src/main/java/ru/mirea/practice/s0000001/num1/TextDocument.java @@ -0,0 +1,11 @@ +package ru.mirea.practice.s0000001.num1; + +public class TextDocument implements IDocument { + public void open() { + System.out.println("Открыт текстовый документ"); + } + + public void save() { + System.out.println("Текстовый документ сохранен"); + } +} diff --git a/students/23K0687/23K0687-p24/src/main/java/ru/mirea/practice/s0000001/num2/Chair.java b/students/23K0687/23K0687-p24/src/main/java/ru/mirea/practice/s0000001/num2/Chair.java new file mode 100644 index 000000000..8ffd50a33 --- /dev/null +++ b/students/23K0687/23K0687-p24/src/main/java/ru/mirea/practice/s0000001/num2/Chair.java @@ -0,0 +1,5 @@ +package ru.mirea.practice.s0000001.num2; + +public interface Chair { + void sit(); +} diff --git a/students/23K0687/23K0687-p24/src/main/java/ru/mirea/practice/s0000001/num2/ChairFactory.java b/students/23K0687/23K0687-p24/src/main/java/ru/mirea/practice/s0000001/num2/ChairFactory.java new file mode 100644 index 000000000..2e7733cfd --- /dev/null +++ b/students/23K0687/23K0687-p24/src/main/java/ru/mirea/practice/s0000001/num2/ChairFactory.java @@ -0,0 +1,5 @@ +package ru.mirea.practice.s0000001.num2; + +public interface ChairFactory { + Chair createChair(); +} diff --git a/students/23K0687/23K0687-p24/src/main/java/ru/mirea/practice/s0000001/num2/Client.java b/students/23K0687/23K0687-p24/src/main/java/ru/mirea/practice/s0000001/num2/Client.java new file mode 100644 index 000000000..a5bf8e171 --- /dev/null +++ b/students/23K0687/23K0687-p24/src/main/java/ru/mirea/practice/s0000001/num2/Client.java @@ -0,0 +1,7 @@ +package ru.mirea.practice.s0000001.num2; + +public class Client { + public void sit(Chair chair) { + chair.sit(); + } +} diff --git a/students/23K0687/23K0687-p24/src/main/java/ru/mirea/practice/s0000001/num2/MagicalChair.java b/students/23K0687/23K0687-p24/src/main/java/ru/mirea/practice/s0000001/num2/MagicalChair.java new file mode 100644 index 000000000..e04cb1e15 --- /dev/null +++ b/students/23K0687/23K0687-p24/src/main/java/ru/mirea/practice/s0000001/num2/MagicalChair.java @@ -0,0 +1,7 @@ +package ru.mirea.practice.s0000001.num2; + +public class MagicalChair implements Chair { + public void sit() { + System.out.println("Сидите на магическом стуле"); + } +} diff --git a/students/23K0687/23K0687-p24/src/main/java/ru/mirea/practice/s0000001/num2/MagicalChairFactory.java b/students/23K0687/23K0687-p24/src/main/java/ru/mirea/practice/s0000001/num2/MagicalChairFactory.java new file mode 100644 index 000000000..9925abab7 --- /dev/null +++ b/students/23K0687/23K0687-p24/src/main/java/ru/mirea/practice/s0000001/num2/MagicalChairFactory.java @@ -0,0 +1,7 @@ +package ru.mirea.practice.s0000001.num2; + +public class MagicalChairFactory implements ChairFactory { + public Chair createChair() { + return new MagicalChair(); + } +} diff --git a/students/23K0687/23K0687-p24/src/main/java/ru/mirea/practice/s0000001/num2/Main.java b/students/23K0687/23K0687-p24/src/main/java/ru/mirea/practice/s0000001/num2/Main.java new file mode 100644 index 000000000..16d015c87 --- /dev/null +++ b/students/23K0687/23K0687-p24/src/main/java/ru/mirea/practice/s0000001/num2/Main.java @@ -0,0 +1,19 @@ +package ru.mirea.practice.s0000001.num2; + +public abstract class Main { + + public static void main(String[] args) { + ChairFactory factory = new VictorianChairFactory(); + Chair chair = factory.createChair(); + Client client = new Client(); + client.sit(chair); + + factory = new MultifunctionalChairFactory(); + chair = factory.createChair(); + client.sit(chair); + + factory = new MagicalChairFactory(); + chair = factory.createChair(); + client.sit(chair); + } +} diff --git a/students/23K0687/23K0687-p24/src/main/java/ru/mirea/practice/s0000001/num2/MultifunctionalChair.java b/students/23K0687/23K0687-p24/src/main/java/ru/mirea/practice/s0000001/num2/MultifunctionalChair.java new file mode 100644 index 000000000..a6aa38eb4 --- /dev/null +++ b/students/23K0687/23K0687-p24/src/main/java/ru/mirea/practice/s0000001/num2/MultifunctionalChair.java @@ -0,0 +1,7 @@ +package ru.mirea.practice.s0000001.num2; + +public class MultifunctionalChair implements Chair { + public void sit() { + System.out.println("Сидите на многофункциональном стуле"); + } +} diff --git a/students/23K0687/23K0687-p24/src/main/java/ru/mirea/practice/s0000001/num2/MultifunctionalChairFactory.java b/students/23K0687/23K0687-p24/src/main/java/ru/mirea/practice/s0000001/num2/MultifunctionalChairFactory.java new file mode 100644 index 000000000..f4feb7657 --- /dev/null +++ b/students/23K0687/23K0687-p24/src/main/java/ru/mirea/practice/s0000001/num2/MultifunctionalChairFactory.java @@ -0,0 +1,7 @@ +package ru.mirea.practice.s0000001.num2; + +public class MultifunctionalChairFactory implements ChairFactory { + public Chair createChair() { + return new MultifunctionalChair(); + } +} diff --git a/students/23K0687/23K0687-p24/src/main/java/ru/mirea/practice/s0000001/num2/VictorianChair.java b/students/23K0687/23K0687-p24/src/main/java/ru/mirea/practice/s0000001/num2/VictorianChair.java new file mode 100644 index 000000000..d6f02b986 --- /dev/null +++ b/students/23K0687/23K0687-p24/src/main/java/ru/mirea/practice/s0000001/num2/VictorianChair.java @@ -0,0 +1,7 @@ +package ru.mirea.practice.s0000001.num2; + +public class VictorianChair implements Chair { + public void sit() { + System.out.println("Сидите на викторианском стуле"); + } +} diff --git a/students/23K0687/23K0687-p24/src/main/java/ru/mirea/practice/s0000001/num2/VictorianChairFactory.java b/students/23K0687/23K0687-p24/src/main/java/ru/mirea/practice/s0000001/num2/VictorianChairFactory.java new file mode 100644 index 000000000..3b9eeecb3 --- /dev/null +++ b/students/23K0687/23K0687-p24/src/main/java/ru/mirea/practice/s0000001/num2/VictorianChairFactory.java @@ -0,0 +1,7 @@ +package ru.mirea.practice.s0000001.num2; + +public class VictorianChairFactory implements ChairFactory { + public Chair createChair() { + return new VictorianChair(); + } +} diff --git a/students/23K0687/23K0687-p25/pom.xml b/students/23K0687/23K0687-p25/pom.xml new file mode 100644 index 000000000..2a84de2a5 --- /dev/null +++ b/students/23K0687/23K0687-p25/pom.xml @@ -0,0 +1,13 @@ + + + 4.0.0 + + 23K0687 + ru.mirea.practice + 2024.1 + ../pom.xml + + 23K0687-p25 + Практическая 25 Кураев М М + diff --git a/students/23K0687/23K0687-p25/src/main/java/ru/mirea/practice/s0000001/num1/Main.java b/students/23K0687/23K0687-p25/src/main/java/ru/mirea/practice/s0000001/num1/Main.java new file mode 100644 index 000000000..21424f1fb --- /dev/null +++ b/students/23K0687/23K0687-p25/src/main/java/ru/mirea/practice/s0000001/num1/Main.java @@ -0,0 +1,26 @@ +package ru.mirea.practice.s0000001.num1; + +import java.util.Scanner; + +public final class Main { + public static void main(String[] args) { + try (Scanner sc = new Scanner(System.in)) { + System.out.println("Введите строку:"); + String input = sc.nextLine(); + + System.out.println("Введите регулярное выражение для разделителя:"); + String regex = sc.nextLine(); + + String[] parts = input.split(regex); + + System.out.println("Результат разделения:"); + for (String part : parts) { + System.out.println(part); + } + } + } + + private Main() { + throw new UnsupportedOperationException("Этот класс не предназначен для создания экземпляров"); + } +} diff --git a/students/23K0687/23K0687-p25/src/main/java/ru/mirea/practice/s0000001/num2/Main.java b/students/23K0687/23K0687-p25/src/main/java/ru/mirea/practice/s0000001/num2/Main.java new file mode 100644 index 000000000..0ba511e0b --- /dev/null +++ b/students/23K0687/23K0687-p25/src/main/java/ru/mirea/practice/s0000001/num2/Main.java @@ -0,0 +1,20 @@ +package ru.mirea.practice.s0000001.num2; + +import java.util.regex.Pattern; + +public final class Main { + private Main() { + throw new UnsupportedOperationException("Этот класс не предназначен для создания экземпляров"); + } + + public static void main(String[] args) { + String regex = "^[a-z]{24}18340$"; + String input = "abcdefghijklmnopqrstuv18340"; + + if (Pattern.matches(regex, input)) { + System.out.println("Строка корректна"); + } else { + System.out.println("Строка некорректна"); + } + } +} diff --git a/students/23K0687/23K0687-p25/src/main/java/ru/mirea/practice/s0000001/num3/Main.java b/students/23K0687/23K0687-p25/src/main/java/ru/mirea/practice/s0000001/num3/Main.java new file mode 100644 index 000000000..e2debb449 --- /dev/null +++ b/students/23K0687/23K0687-p25/src/main/java/ru/mirea/practice/s0000001/num3/Main.java @@ -0,0 +1,20 @@ +package ru.mirea.practice.s0000001.num3; + +import java.util.regex.Pattern; + +public final class Main { + private Main() { + throw new UnsupportedOperationException("Этот класс не предназначен для создания экземпляров"); + } + + public static void main(String[] args) { + String regex = "^(0[1-9]|[12][0-9]|3[01])/(0[1-9]|1[0-2])/(19|20)\\d\\d$"; + String input = "29/02/2000"; + + if (Pattern.matches(regex, input)) { + System.out.println("Дата корректна"); + } else { + System.out.println("Дата некорректна"); + } + } +} diff --git a/students/23K0687/23K0687-p26.a/pom.xml b/students/23K0687/23K0687-p26.a/pom.xml new file mode 100644 index 000000000..eaf5333a4 --- /dev/null +++ b/students/23K0687/23K0687-p26.a/pom.xml @@ -0,0 +1,13 @@ + + + 4.0.0 + + 23K0687 + ru.mirea.practice + 2024.1 + ../pom.xml + + 23K0687-p26.a + Практическая 26 Кураев М М + diff --git a/students/23K0687/23K0687-p26.a/src/main/java/ru/mirea/practice/s0000001/num1/Main.java b/students/23K0687/23K0687-p26.a/src/main/java/ru/mirea/practice/s0000001/num1/Main.java new file mode 100644 index 000000000..bfe80f124 --- /dev/null +++ b/students/23K0687/23K0687-p26.a/src/main/java/ru/mirea/practice/s0000001/num1/Main.java @@ -0,0 +1,33 @@ +package ru.mirea.practice.s0000001.num1; + +import java.util.Stack; + +public final class Main { + public static void main(String[] args) { + int[] arr = {1, 2, 3, 4, 5}; + invertArray(arr); + + for (int num : arr) { + System.out.print(num + " "); + } + } + + public static void invertArray(int[] arr) { + Stack stack = new Stack<>(); + + for (int num : arr) { + stack.push(num); + } + + for (int i = 0; i < arr.length; i++) { + arr[i] = stack.pop(); + } + + System.out.println("Массив после инверсии:"); + } + + private Main() { + throw new UnsupportedOperationException("Этот класс не предназначен для создания экземпляров"); + } +} + diff --git a/students/23K0687/23K0687-p26.a/src/main/java/ru/mirea/practice/s0000001/num2/Main.java b/students/23K0687/23K0687-p26.a/src/main/java/ru/mirea/practice/s0000001/num2/Main.java new file mode 100644 index 000000000..aa83adcb2 --- /dev/null +++ b/students/23K0687/23K0687-p26.a/src/main/java/ru/mirea/practice/s0000001/num2/Main.java @@ -0,0 +1,20 @@ +package ru.mirea.practice.s0000001.num2; + +public final class Main { + private Main() { + throw new UnsupportedOperationException("Этот класс не предназначен для создания экземпляров"); + } + + public static void main(String[] args) { + MyList l = new MyArrayList<>(); + l.add(1); + l.add(2); + l.add(3); + + MyIterator it = l.iter(); + + while (it.hasNext()) { + System.out.println("Элемент: " + it.next()); + } + } +} diff --git a/students/23K0687/23K0687-p26.a/src/main/java/ru/mirea/practice/s0000001/num2/MyArrayList.java b/students/23K0687/23K0687-p26.a/src/main/java/ru/mirea/practice/s0000001/num2/MyArrayList.java new file mode 100644 index 000000000..3b5370afc --- /dev/null +++ b/students/23K0687/23K0687-p26.a/src/main/java/ru/mirea/practice/s0000001/num2/MyArrayList.java @@ -0,0 +1,32 @@ +package ru.mirea.practice.s0000001.num2; + +public class MyArrayList implements MyList { + private Object[] e = new Object[10]; + private int s = 0; + + public void add(T v) { + if (s == e.length) { + e = java.util.Arrays.copyOf(e, s * 2); + } + e[s++] = v; + } + + public MyIterator iter() { + return new MyIteratorImpl(); + } + + private class MyIteratorImpl implements MyIterator { + private int i = 0; + + public boolean hasNext() { + return i < s; + } + + public T next() { + if (!hasNext()) { + throw new java.util.NoSuchElementException(); + } + return (T) e[i++]; + } + } +} diff --git a/students/23K0687/23K0687-p26.a/src/main/java/ru/mirea/practice/s0000001/num2/MyIterator.java b/students/23K0687/23K0687-p26.a/src/main/java/ru/mirea/practice/s0000001/num2/MyIterator.java new file mode 100644 index 000000000..ef9ef3409 --- /dev/null +++ b/students/23K0687/23K0687-p26.a/src/main/java/ru/mirea/practice/s0000001/num2/MyIterator.java @@ -0,0 +1,7 @@ +package ru.mirea.practice.s0000001.num2; + +public interface MyIterator { + boolean hasNext(); + + T next(); +} diff --git a/students/23K0687/23K0687-p26.a/src/main/java/ru/mirea/practice/s0000001/num2/MyList.java b/students/23K0687/23K0687-p26.a/src/main/java/ru/mirea/practice/s0000001/num2/MyList.java new file mode 100644 index 000000000..a2590963c --- /dev/null +++ b/students/23K0687/23K0687-p26.a/src/main/java/ru/mirea/practice/s0000001/num2/MyList.java @@ -0,0 +1,7 @@ +package ru.mirea.practice.s0000001.num2; + +public interface MyList { + void add(T v); + + MyIterator iter(); +} diff --git a/students/23K0687/23K0687-p26.a/src/main/java/ru/mirea/practice/s0000001/num3/Main.java b/students/23K0687/23K0687-p26.a/src/main/java/ru/mirea/practice/s0000001/num3/Main.java new file mode 100644 index 000000000..640013a0b --- /dev/null +++ b/students/23K0687/23K0687-p26.a/src/main/java/ru/mirea/practice/s0000001/num3/Main.java @@ -0,0 +1,18 @@ +package ru.mirea.practice.s0000001.num3; + +public final class Main { + private Main() { + throw new UnsupportedOperationException("Этот класс не предназначен для создания экземпляров"); + } + + public static void main(String[] args) { + MyList list = new MyList<>(); + list.add(1); + list.add(2); + list.add(3); + + for (Integer i : list) { + System.out.println("Элемент: " + i); + } + } +} diff --git a/students/23K0687/23K0687-p26.a/src/main/java/ru/mirea/practice/s0000001/num3/MyIterator.java b/students/23K0687/23K0687-p26.a/src/main/java/ru/mirea/practice/s0000001/num3/MyIterator.java new file mode 100644 index 000000000..9d91c0102 --- /dev/null +++ b/students/23K0687/23K0687-p26.a/src/main/java/ru/mirea/practice/s0000001/num3/MyIterator.java @@ -0,0 +1,28 @@ +package ru.mirea.practice.s0000001.num3; + +import java.util.Iterator; + +public class MyIterator implements Iterator { + private Object[] data; + private int size; + private int index; + + public MyIterator(Object[] data, int size) { + this.data = data; + this.size = size; + this.index = 0; + } + + @Override + public boolean hasNext() { + return index < size; + } + + @Override + public T next() { + if (!hasNext()) { + throw new IllegalStateException("Нет следующего элемента"); + } + return (T) data[index++]; + } +} diff --git a/students/23K0687/23K0687-p26.a/src/main/java/ru/mirea/practice/s0000001/num3/MyList.java b/students/23K0687/23K0687-p26.a/src/main/java/ru/mirea/practice/s0000001/num3/MyList.java new file mode 100644 index 000000000..e81738dc9 --- /dev/null +++ b/students/23K0687/23K0687-p26.a/src/main/java/ru/mirea/practice/s0000001/num3/MyList.java @@ -0,0 +1,29 @@ +package ru.mirea.practice.s0000001.num3; + +import java.util.Arrays; + +public class MyList implements Iterable { + private Object[] data; + private int size; + + public MyList() { + data = new Object[10]; + size = 0; + } + + public void add(T item) { + if (size == data.length) { + data = Arrays.copyOf(data, data.length * 2); + } + data[size++] = item; + } + + public int size() { + return size; + } + + @Override + public MyIterator iterator() { + return new MyIterator<>(data, size); + } +} diff --git a/students/23K0687/23K0687-p27/pom.xml b/students/23K0687/23K0687-p27/pom.xml new file mode 100644 index 000000000..e209f18d2 --- /dev/null +++ b/students/23K0687/23K0687-p27/pom.xml @@ -0,0 +1,13 @@ + + + 4.0.0 + + 23K0687 + ru.mirea.practice + 2024.1 + ../pom.xml + + 23K0687-p27 + Практическая 27 Кураев М М + diff --git a/students/23K0687/23K0687-p27/src/main/java/ru/mirea/practice/s0000001/num1/Main.java b/students/23K0687/23K0687-p27/src/main/java/ru/mirea/practice/s0000001/num1/Main.java new file mode 100644 index 000000000..a91f5419b --- /dev/null +++ b/students/23K0687/23K0687-p27/src/main/java/ru/mirea/practice/s0000001/num1/Main.java @@ -0,0 +1,44 @@ +package ru.mirea.practice.s0000001.num1; + +import java.util.HashMap; +import java.util.Map; + +public final class Main { + private Main() { + throw new UnsupportedOperationException("Этот класс не предназначен для создания экземпляров"); + } + + public static void main(String[] args) { + Map dict = new HashMap<>(); + + dict.put("key1", "value1"); + dict.put("key2", "value2"); + dict.put("key3", "value3"); + dict.put("key4", "value4"); + dict.put("key5", "value5"); + dict.put("key6", "value6"); + dict.put("key7", "value7"); + dict.put("key8", "value8"); + dict.put("key9", "value9"); + dict.put("key10", "value10"); + + System.out.println("Размер словаря: " + dict.size()); + + for (Map.Entry entry : dict.entrySet()) { + System.out.println("Ключ: " + entry.getKey() + ", Значение: " + entry.getValue()); + } + + String key = "key5"; + if (dict.containsKey(key)) { + System.out.println("Значение для " + key + ": " + dict.get(key)); + } else { + System.out.println("Ключ " + key + " не найден в словаре."); + } + + dict.remove("key10"); + System.out.println("После удаления key10:"); + for (Map.Entry entry : dict.entrySet()) { + System.out.println("Ключ: " + entry.getKey() + ", Значение: " + entry.getValue()); + } + } +} diff --git a/students/23K0687/23K0687-p27/src/main/java/ru/mirea/practice/s0000001/num2/Main.java b/students/23K0687/23K0687-p27/src/main/java/ru/mirea/practice/s0000001/num2/Main.java new file mode 100644 index 000000000..31a618ae2 --- /dev/null +++ b/students/23K0687/23K0687-p27/src/main/java/ru/mirea/practice/s0000001/num2/Main.java @@ -0,0 +1,39 @@ +package ru.mirea.practice.s0000001.num2; + +import java.util.HashMap; +import java.util.Map; + +public final class Main { + private Main() { + throw new UnsupportedOperationException("Этот класс не предназначен для создания экземпляров"); + } + + public static void main(String[] args) { + Map dict = new HashMap<>(); + + dict.put("key1", "value1"); + dict.put("key2", "value2"); + dict.put("key3", "value3"); + dict.put("key4", "value4"); + + String searchKey = "key2"; + if (dict.containsKey(searchKey)) { + System.out.println("Найдено значение для ключа " + searchKey + ": " + dict.get(searchKey)); + } else { + System.out.println("Ключ " + searchKey + " не найден."); + } + + String removeKey = "key3"; + if (dict.containsKey(removeKey)) { + dict.remove(removeKey); + System.out.println("Ключ " + removeKey + " был удален."); + } else { + System.out.println("Ключ " + removeKey + " не найден для удаления."); + } + + System.out.println("Обновленный словарь:"); + for (Map.Entry entry : dict.entrySet()) { + System.out.println("Ключ: " + entry.getKey() + ", Значение: " + entry.getValue()); + } + } +} diff --git a/students/23K0687/23K0687-p27/src/main/java/ru/mirea/practice/s0000001/num3/Main.java b/students/23K0687/23K0687-p27/src/main/java/ru/mirea/practice/s0000001/num3/Main.java new file mode 100644 index 000000000..c80a44d1c --- /dev/null +++ b/students/23K0687/23K0687-p27/src/main/java/ru/mirea/practice/s0000001/num3/Main.java @@ -0,0 +1,21 @@ +package ru.mirea.practice.s0000001.num3; + +import java.util.PriorityQueue; + +public final class Main { + private Main() { + } + + public static void main(String[] args) { + PriorityQueue pq = new PriorityQueue<>(); + + for (int i = 10; i > 0; i--) { + pq.add(i); + } + + System.out.println("Извлекаем несколько элементов:"); + for (int i = 0; i < 5; i++) { + System.out.println(pq.poll()); + } + } +} diff --git a/students/23K0687/23K0687-p28/pom.xml b/students/23K0687/23K0687-p28/pom.xml new file mode 100644 index 000000000..47764dc03 --- /dev/null +++ b/students/23K0687/23K0687-p28/pom.xml @@ -0,0 +1,13 @@ + + + 4.0.0 + + 23K0687 + ru.mirea.practice + 2024.1 + ../pom.xml + + 23K0687-p28 + Практическая 28 Кураев М М + diff --git a/students/23K0687/23K0687-p28/src/main/java/ru/mirea/practice/s0000001/num1/Main.java b/students/23K0687/23K0687-p28/src/main/java/ru/mirea/practice/s0000001/num1/Main.java new file mode 100644 index 000000000..8419b00f1 --- /dev/null +++ b/students/23K0687/23K0687-p28/src/main/java/ru/mirea/practice/s0000001/num1/Main.java @@ -0,0 +1,23 @@ +package ru.mirea.practice.s0000001.num1; + +import java.util.HashSet; +import java.util.TreeSet; + +public final class Main { + private Main() { + } + + public static void main(String[] args) { + HashSet hs = new HashSet<>(); + for (int i = 10; i > 0; i--) { + hs.add(i); + } + + TreeSet ts = new TreeSet<>(hs); + + System.out.println("Элементы после преобразования в TreeSet:"); + for (int val : ts) { + System.out.println(val); + } + } +} diff --git a/students/23K0687/23K0687-p28/src/main/java/ru/mirea/practice/s0000001/num2/Main.java b/students/23K0687/23K0687-p28/src/main/java/ru/mirea/practice/s0000001/num2/Main.java new file mode 100644 index 000000000..28e1bd9d4 --- /dev/null +++ b/students/23K0687/23K0687-p28/src/main/java/ru/mirea/practice/s0000001/num2/Main.java @@ -0,0 +1,60 @@ +package ru.mirea.practice.s0000001.num2; + +import java.util.HashMap; +import java.util.Map; + +public final class Main { + + private Main() { + // Приватный конструктор, чтобы не позволить создавать экземпляры класса + } + + public static void main(String[] args) { + Map m = createMap(); + System.out.println(getSameFirstNameCount(m)); + System.out.println(getSameLastNameCount(m)); + } + + public static Map createMap() { + Map m = new HashMap<>(); + m.put("Иванов", "Алексей"); + m.put("Петров", "Иван"); + m.put("Смирнов", "Алексей"); + m.put("Кузнецов", "Петр"); + m.put("Васильев", "Алексей"); + m.put("Михайлов", "Дмитрий"); + m.put("Новиков", "Иван"); + m.put("Фёдоров", "Игорь"); + m.put("Егоров", "Дмитрий"); + m.put("Сидоров", "Иван"); + return m; + } + + public static int getSameFirstNameCount(Map m) { + Map c = new HashMap<>(); + for (String n : m.values()) { + c.put(n, c.getOrDefault(n, 0) + 1); + } + int cnt = 0; + for (int v : c.values()) { + if (v > 1) { + cnt++; + } + } + return cnt; + } + + public static int getSameLastNameCount(Map m) { + Map c = new HashMap<>(); + for (String ln : m.keySet()) { + c.put(ln, c.getOrDefault(ln, 0) + 1); + } + int cnt = 0; + for (int v : c.values()) { + if (v > 1) { + cnt++; + } + } + return cnt; + } +} diff --git a/students/23K0687/23K0687-p28/src/main/java/ru/mirea/practice/s0000001/num3/Main.java b/students/23K0687/23K0687-p28/src/main/java/ru/mirea/practice/s0000001/num3/Main.java new file mode 100644 index 000000000..5747d3d4e --- /dev/null +++ b/students/23K0687/23K0687-p28/src/main/java/ru/mirea/practice/s0000001/num3/Main.java @@ -0,0 +1,70 @@ +package ru.mirea.practice.s0000001.num3; + +public final class Main { + private Main() { + } + + private static class HashTable { + private static class Node { + double key; + String value; + Node next; + + Node(double k, String v) { + key = k; + value = v; + next = null; + } + } + + private Node[] table; + private int size; + + public HashTable(int size) { + this.size = size; + table = new Node[size]; + } + + private int hash(double key) { + long bits = Double.doubleToLongBits(key); + return (int)(bits ^ (bits >>> 32)) % size; + } + + public void put(double key, String value) { + int index = hash(key); + Node newNode = new Node(key, value); + if (table[index] == null) { + table[index] = newNode; + } else { + Node current = table[index]; + while (current.next != null) { + current = current.next; + } + current.next = newNode; + } + } + + public String get(double key) { + int index = hash(key); + Node current = table[index]; + while (current != null) { + if (current.key == key) { + return current.value; + } + current = current.next; + } + return null; + } + } + + public static void main(String[] args) { + HashTable ht = new HashTable(10); + ht.put(3.14, "Pi"); + ht.put(2.71, "e"); + ht.put(1.62, "Golden Ratio"); + + System.out.println("Значение для 3.14: " + ht.get(3.14)); + System.out.println("Значение для 2.71: " + ht.get(2.71)); + System.out.println("Значение для 1.62: " + ht.get(1.62)); + } +} diff --git a/students/23K0687/23K0687-p29/pom.xml b/students/23K0687/23K0687-p29/pom.xml new file mode 100644 index 000000000..db531f5bd --- /dev/null +++ b/students/23K0687/23K0687-p29/pom.xml @@ -0,0 +1,13 @@ + + + 4.0.0 + + 23K0687 + ru.mirea.practice + 2024.1 + ../pom.xml + + 23K0687-p29 + Практическая 29 Кураев М М + diff --git a/students/23K0687/23K0687-p29/src/main/java/ru/mirea/practice/s0000001/num1/Main.java b/students/23K0687/23K0687-p29/src/main/java/ru/mirea/practice/s0000001/num1/Main.java new file mode 100644 index 000000000..a2de8745e --- /dev/null +++ b/students/23K0687/23K0687-p29/src/main/java/ru/mirea/practice/s0000001/num1/Main.java @@ -0,0 +1,28 @@ +package ru.mirea.practice.s0000001.num1; + +import java.util.Scanner; + +public final class Main { + + private Main() { + throw new UnsupportedOperationException("Этот класс нельзя инстанцировать."); + } + + public static void main(String[] args) { + try (Scanner sc = new Scanner(System.in)) { + int n = sc.nextInt(); + int[][] mat = new int[n][n]; + int roads = 0; + + for (int i = 0; i < n; i++) { + for (int j = 0; j < n; j++) { + mat[i][j] = sc.nextInt(); + if (mat[i][j] == 1 && i < j) { + roads++; + } + } + } + System.out.println(roads); + } + } +} diff --git a/students/23K0687/23K0687-p30.pr2/pom.xml b/students/23K0687/23K0687-p30.pr2/pom.xml new file mode 100644 index 000000000..0cd09bff4 --- /dev/null +++ b/students/23K0687/23K0687-p30.pr2/pom.xml @@ -0,0 +1,13 @@ + + + 4.0.0 + + 23K0687 + ru.mirea.practice + 2024.1 + ../pom.xml + + 23K0687-p30.pr2 + Практическая 30.pr2 Кураев М М + diff --git a/students/23K0687/23K0687-p30.pr2/src/main/java/ru/mirea/practice/s0000001/num1/Main.java b/students/23K0687/23K0687-p30.pr2/src/main/java/ru/mirea/practice/s0000001/num1/Main.java new file mode 100644 index 000000000..c49ea3304 --- /dev/null +++ b/students/23K0687/23K0687-p30.pr2/src/main/java/ru/mirea/practice/s0000001/num1/Main.java @@ -0,0 +1,112 @@ +package ru.mirea.practice.s0000001.num1; + +final class Main { + private Main() { } // Приватный конструктор, чтобы предотвратить создание экземпляров + + static class Node { + int val; + Node left; + Node right; + + Node(int val) { + this.val = val; + this.left = null; + this.right = null; + } + } + + static class BinarySearchTree { + Node root; + + BinarySearchTree() { + this.root = null; + } + + static void insert(BinarySearchTree tree, int val) { + tree.root = insertRec(tree.root, val); + } + + static Node insertRec(Node root, int val) { + if (root == null) { + return new Node(val); + } + if (val < root.val) { + root.left = insertRec(root.left, val); + } else if (val > root.val) { + root.right = insertRec(root.right, val); + } + return root; + } + + static void delete(BinarySearchTree tree, int val) { + tree.root = deleteRec(tree.root, val); + } + + static Node deleteRec(Node root, int val) { + if (root == null) { + return root; + } + + if (val < root.val) { + root.left = deleteRec(root.left, val); + } else if (val > root.val) { + root.right = deleteRec(root.right, val); + } else { + if (root.left == null) { + return root.right; + } else if (root.right == null) { + return root.left; + } + + root.val = minValue(root.right); + root.right = deleteRec(root.right, root.val); + } + return root; + } + + static int minValue(Node root) { + int minVal = root.val; + while (root.left != null) { + minVal = root.left.val; + root = root.left; + } + return minVal; + } + + static void inorder(BinarySearchTree tree) { + inorderRec(tree.root); + System.out.println(); + } + + static void inorderRec(Node root) { + if (root != null) { + inorderRec(root.left); + System.out.print(root.val + " "); + inorderRec(root.right); + } + } + + static void deleteTree(BinarySearchTree tree) { + tree.root = null; + } + } + + public static void main(String[] args) { + BinarySearchTree tree = new BinarySearchTree(); + + int[] values = {50, 30, 20, 40, 70, 60, 80, 10, 25, 35}; + for (int val : values) { + BinarySearchTree.insert(tree, val); + } + + System.out.println("Дерево после вставки узлов:"); + BinarySearchTree.inorder(tree); + + BinarySearchTree.delete(tree, 20); + System.out.println("Дерево после удаления узла 20:"); + BinarySearchTree.inorder(tree); + + BinarySearchTree.deleteTree(tree); + System.out.println("Дерево удалено."); + } +} diff --git a/students/23K0687/23K0687-p30/pom.xml b/students/23K0687/23K0687-p30/pom.xml new file mode 100644 index 000000000..20d4bd5e4 --- /dev/null +++ b/students/23K0687/23K0687-p30/pom.xml @@ -0,0 +1,13 @@ + + + 4.0.0 + + 23K0687 + ru.mirea.practice + 2024.1 + ../pom.xml + + 23K0687-p30 + Практическая 30 Кураев М М + diff --git a/students/23K0687/23K0687-p30/src/main/java/ru/mirea/practice/s0000001/num1/Main.java b/students/23K0687/23K0687-p30/src/main/java/ru/mirea/practice/s0000001/num1/Main.java new file mode 100644 index 000000000..a13397642 --- /dev/null +++ b/students/23K0687/23K0687-p30/src/main/java/ru/mirea/practice/s0000001/num1/Main.java @@ -0,0 +1,124 @@ +package ru.mirea.practice.s0000001.num1; + +import java.util.PriorityQueue; +import java.util.HashMap; +import java.util.Map; +import java.util.LinkedList; +import java.util.Queue; + +public final class Main { + + private Main() { + } + + static Node root; + + static int height(Node node) { + if (node == null) { + return 0; + } + return 1 + Math.max(height(node.left), height(node.right)); + } + + static int width(Node node) { + if (node == null) { + return 0; + } + Queue queue = new LinkedList<>(); + queue.add(node); + int maxWidth = 0; + while (!queue.isEmpty()) { + int size = queue.size(); + maxWidth = Math.max(maxWidth, size); + for (int i = 0; i < size; i++) { + Node current = queue.poll(); + if (current.left != null) { + queue.add(current.left); + } + if (current.right != null) { + queue.add(current.right); + } + } + } + return maxWidth; + } + + static void mirror(Node node) { + if (node == null) { + return; + } + Node temp = node.left; + node.left = node.right; + node.right = temp; + mirror(node.left); + mirror(node.right); + } + + static boolean search(Node node, char key) { + if (node == null) { + return false; + } + if (node.ch == key) { + return true; + } + return search(node.left, key) || search(node.right, key); + } + + static void printHuffmanCode(Map codes) { + for (Map.Entry entry : codes.entrySet()) { + System.out.println(entry.getKey() + ": " + entry.getValue()); + } + } + + static Node buildHuffmanTree(Map freqMap) { + PriorityQueue pq = new PriorityQueue<>((a, b) -> Integer.compare(a.freq, b.freq)); + for (Map.Entry entry : freqMap.entrySet()) { + pq.add(new Node(entry.getKey(), entry.getValue())); + } + while (pq.size() > 1) { + Node left = pq.poll(); + Node right = pq.poll(); + Node newNode = new Node('\0', left.freq + right.freq); + newNode.left = left; + newNode.right = right; + pq.add(newNode); + } + return pq.poll(); + } + + static void generateHuffmanCodes(Node node, String code, Map codes) { + if (node == null) { + return; + } + if (node.ch != '\0') { + codes.put(node.ch, code); + } + generateHuffmanCodes(node.left, code + "0", codes); + generateHuffmanCodes(node.right, code + "1", codes); + } + + public static void main(String[] args) { + root = new Node('A', 5); + root.left = new Node('B', 3); + root.right = new Node('C', 2); + + System.out.println("Высота дерева: " + height(root)); + System.out.println("Ширина дерева: " + width(root)); + mirror(root); + System.out.println("Дерево после отражения:"); + + System.out.println("Поиск элемента 'B': " + search(root, 'B')); + + Map freqMap = new HashMap<>(); + freqMap.put('A', 5); + freqMap.put('B', 3); + freqMap.put('C', 2); + + Node huffmanRoot = buildHuffmanTree(freqMap); + Map codes = new HashMap<>(); + generateHuffmanCodes(huffmanRoot, "", codes); + System.out.println("Коды Хаффмана:"); + printHuffmanCode(codes); + } +} + diff --git a/students/23K0687/23K0687-p30/src/main/java/ru/mirea/practice/s0000001/num1/Node.java b/students/23K0687/23K0687-p30/src/main/java/ru/mirea/practice/s0000001/num1/Node.java new file mode 100644 index 000000000..2f8426913 --- /dev/null +++ b/students/23K0687/23K0687-p30/src/main/java/ru/mirea/practice/s0000001/num1/Node.java @@ -0,0 +1,15 @@ +package ru.mirea.practice.s0000001.num1; + +public class Node { + char ch; + int freq; + Node left; + Node right; + + public Node(char ch, int freq) { + this.ch = ch; + this.freq = freq; + this.left = null; + this.right = null; + } +} diff --git a/students/23K0687/23K0687-p30/src/main/java/ru/mirea/practice/s0000001/num2/Main.java b/students/23K0687/23K0687-p30/src/main/java/ru/mirea/practice/s0000001/num2/Main.java new file mode 100644 index 000000000..b8d927171 --- /dev/null +++ b/students/23K0687/23K0687-p30/src/main/java/ru/mirea/practice/s0000001/num2/Main.java @@ -0,0 +1,70 @@ +package ru.mirea.practice.s0000001.num2; + +import java.util.PriorityQueue; +import java.util.Map; +import java.util.HashMap; + +final class Main { + private Main() { } + + static final class Huffman { + private Huffman() { } + + public static void buildHuffmanTree(String text) { + Map freqMap = new HashMap<>(); + for (char c : text.toCharArray()) { + freqMap.put(c, freqMap.getOrDefault(c, 0) + 1); + } + + PriorityQueue pq = new PriorityQueue<>((a, b) -> a.freq - b.freq); + for (Map.Entry entry : freqMap.entrySet()) { + Node node = new Node(entry.getKey(), entry.getValue()); + pq.add(node); + } + + while (pq.size() > 1) { + Node left = pq.poll(); + Node right = pq.poll(); + Node node = new Node('\0', left.freq + right.freq); + node.left = left; + node.right = right; + pq.add(node); + } + + Node root = pq.poll(); + printCodes(root, ""); + } + + private static void printCodes(Node root, String code) { + if (root == null) { + return; + } + if (root.c != '\0') { + System.out.println(root.c + ": " + code); + } + printCodes(root.left, code + "0"); + printCodes(root.right, code + "1"); + } + } + + static class Node { + char c; + int freq; + Node left; + Node right; + + Node(char c, int freq) { + this.c = c; + this.freq = freq; + left = null; + right = null; + } + } + + public static void main(String[] args) { + String text = "привет"; + System.out.println("Коды Хаффмана для строки \"" + text + "\":"); + Huffman.buildHuffmanTree(text); + } +} + diff --git a/students/23K0687/23K0687-p31/pom.xml b/students/23K0687/23K0687-p31/pom.xml new file mode 100644 index 000000000..4a09f1c48 --- /dev/null +++ b/students/23K0687/23K0687-p31/pom.xml @@ -0,0 +1,13 @@ + + + 4.0.0 + + 23K0687 + ru.mirea.practice + 2024.1 + ../pom.xml + + 23K0687-p31 + Практическая 31 Кураев М М + diff --git a/students/23K0687/23K0687-p31/src/main/java/ru/mirea/practice/s0000001/num1/Main.java b/students/23K0687/23K0687-p31/src/main/java/ru/mirea/practice/s0000001/num1/Main.java new file mode 100644 index 000000000..ece243a87 --- /dev/null +++ b/students/23K0687/23K0687-p31/src/main/java/ru/mirea/practice/s0000001/num1/Main.java @@ -0,0 +1,71 @@ +package ru.mirea.practice.s0000001.num1; + +public final class Main { + + private Main() { + } + + static class Node { + int data; + Node left; + Node right; + + Node(int data) { + this.data = data; + left = null; + right = null; + } + } + + public static void printTreeByLevels(Node root) { + int depth = getDepth(root); + for (int i = 0; i < depth; i++) { + printLevel(root, i, 0); + System.out.println(); + } + } + + private static int getDepth(Node node) { + if (node == null) { + return 0; + } + int leftDepth = getDepth(node.left); + int rightDepth = getDepth(node.right); + return Math.max(leftDepth, rightDepth) + 1; + } + + private static void printLevel(Node node, int level, int currentLevel) { + if (node == null) { + return; + } + + if (currentLevel == level) { + System.out.print(node.data + " "); + return; + } + + printLevel(node.left, level, currentLevel + 1); + printLevel(node.right, level, currentLevel + 1); + } + + public static void main(String[] args) { + Node root = new Node(10); + Node left = new Node(20); + Node right = new Node(30); + root.left = left; + root.right = right; + + Node leftLeft = new Node(40); + Node leftRight = new Node(50); + left.left = leftLeft; + left.right = leftRight; + + Node rightLeft = new Node(60); + Node rightRight = new Node(70); + right.left = rightLeft; + right.right = rightRight; + + System.out.println("Tree by levels:"); + printTreeByLevels(root); + } +} diff --git a/students/23K0687/23K0687-p32/pom.xml b/students/23K0687/23K0687-p32/pom.xml new file mode 100644 index 000000000..8c530c6b4 --- /dev/null +++ b/students/23K0687/23K0687-p32/pom.xml @@ -0,0 +1,13 @@ + + + 4.0.0 + + 23K0687 + ru.mirea.practice + 2024.1 + ../pom.xml + + 23K0687-p32 + Практическая 32 Кураев М М + diff --git a/students/23K0687/23K0687-p32/src/main/java/ru/mirea/practice/s0000001/num1/Main.java b/students/23K0687/23K0687-p32/src/main/java/ru/mirea/practice/s0000001/num1/Main.java new file mode 100644 index 000000000..7953403c5 --- /dev/null +++ b/students/23K0687/23K0687-p32/src/main/java/ru/mirea/practice/s0000001/num1/Main.java @@ -0,0 +1,54 @@ +package ru.mirea.practice.s0000001.num1; + +public final class Main { + private Main() { + throw new UnsupportedOperationException("Utility class"); + } + + static void printPermutation(int[] perm) { + for (int p : perm) { + System.out.print(p + " "); + } + System.out.println(); + } + + static void johnsonTrotter(int n) { + int[] perm = new int[n]; + int[] dir = new int[n]; + for (int i = 0; i < n; i++) { + perm[i] = i + 1; + dir[i] = -1; + } + printPermutation(perm); + + boolean finished = false; + while (!finished) { + int largest = -1; + for (int i = 0; i < n; i++) { + if (dir[i] == -1 && i > 0 && perm[i] > perm[i - 1]) { + largest = i; + break; + } else if (dir[i] == 1 && i < n - 1 && perm[i] > perm[i + 1]) { + largest = i; + break; + } + } + + if (largest == -1) { + finished = true; + } else { + dir[largest] = -dir[largest]; + int temp = perm[largest]; + perm[largest] = perm[largest + dir[largest]]; + perm[largest + dir[largest]] = temp; + + printPermutation(perm); + } + } + } + + public static void main(String[] args) { + int n = 3; + johnsonTrotter(n); + } +} diff --git a/students/23K0687/README.adoc b/students/23K0687/README.adoc new file mode 100644 index 000000000..033669b8c --- /dev/null +++ b/students/23K0687/README.adoc @@ -0,0 +1,2 @@ +Кураев Михаил +КАБО-02-23 diff --git a/students/23K0687/pom.xml b/students/23K0687/pom.xml new file mode 100644 index 000000000..94f9a5d42 --- /dev/null +++ b/students/23K0687/pom.xml @@ -0,0 +1,30 @@ + + + 4.0.0 + + algorithms-and-data-structures + ru.mirea.practice + 2024.1 + ../../pom.xml + + 23K0687 + pom + Практическая работа Пети + + + 23K0687-p21 + 23K0687-p22 + 23K0687-p23.a + 23K0687-p24 + 23K0687-p25 + 23K0687-p26.a + 23K0687-p27 + 23K0687-p28 + 23K0687-p29 + 23K0687-p30 + 23K0687-p30.pr2 + 23K0687-p31 + 23K0687-p32 + +