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