diff --git a/students/23K0623/23K0623-p011/pom.xml b/students/23K0623/23K0623-p011/pom.xml
new file mode 100644
index 000000000..3a7af81c7
--- /dev/null
+++ b/students/23K0623/23K0623-p011/pom.xml
@@ -0,0 +1,13 @@
+
+
+ 4.0.0
+
+ 23K0623
+ ru.mirea.practice
+ 2024.1
+ ../pom.xml
+
+ 23K0623-p011
+ Массивы
+
diff --git a/students/23K0623/23K0623-p011/src/main/java/ru/mirea/practice/s23k0623/DateComparison.java b/students/23K0623/23K0623-p011/src/main/java/ru/mirea/practice/s23k0623/DateComparison.java
new file mode 100644
index 000000000..b1e5222f0
--- /dev/null
+++ b/students/23K0623/23K0623-p011/src/main/java/ru/mirea/practice/s23k0623/DateComparison.java
@@ -0,0 +1,45 @@
+package ru.mirea.practice.s23k0623;
+
+import java.time.LocalDate;
+import java.time.LocalTime;
+import java.time.format.DateTimeFormatter;
+import java.time.format.DateTimeParseException;
+import java.util.Scanner;
+
+public final class DateComparison {
+
+ private DateComparison() {
+
+ }
+
+ public static void main(String[] args) {
+ try (Scanner scanner = new Scanner(System.in)) {
+ DateTimeFormatter dateFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
+ System.out.println("Введите дату в формате yyyy-MM-dd:");
+ String userInput = scanner.nextLine();
+
+ try {
+ LocalDate userDate = LocalDate.parse(userInput, dateFormatter);
+
+ LocalDate currentDate = LocalDate.now();
+
+ if (userDate.isBefore(currentDate)) {
+ System.out.println("Введенная дата раньше текущей даты.");
+ } else if (userDate.isAfter(currentDate)) {
+ System.out.println("Введенная дата позже текущей даты.");
+ } else {
+ System.out.println("Введенная дата совпадает с текущей датой.");
+ }
+
+ LocalTime currentTime = LocalTime.now();
+ System.out.println("Текущее системное время: " + currentTime);
+
+ } catch (DateTimeParseException e) {
+ System.out.println("Неверный формат даты. Пожалуйста, введите дату в формате yyyy-MM-dd.");
+ } finally {
+ scanner.close();
+ }
+ }
+ }
+
+}
diff --git a/students/23K0623/23K0623-p011/src/main/java/ru/mirea/practice/s23k0623/Developer.java b/students/23K0623/23K0623-p011/src/main/java/ru/mirea/practice/s23k0623/Developer.java
new file mode 100644
index 000000000..89ea53f27
--- /dev/null
+++ b/students/23K0623/23K0623-p011/src/main/java/ru/mirea/practice/s23k0623/Developer.java
@@ -0,0 +1,21 @@
+package ru.mirea.practice.s23k0623;
+
+import java.util.Date;
+
+public final class Developer {
+
+ private Developer() {
+
+ }
+
+ public static void main(String[] args) {
+ String developerLastName = "Иванов";
+ String assignmentReceivedDate = "2024-09-24 10:00:00";
+ Date currentDate = new Date();
+ System.out.println("Фамилия разработчика: " + developerLastName);
+ System.out.println("Дата и время получения задания: " + assignmentReceivedDate);
+ System.out.println("Дата и время сдачи задания: " + currentDate);
+ }
+
+
+}
diff --git a/students/23K0623/23K0623-p012/pom.xml b/students/23K0623/23K0623-p012/pom.xml
new file mode 100644
index 000000000..ec306221d
--- /dev/null
+++ b/students/23K0623/23K0623-p012/pom.xml
@@ -0,0 +1,13 @@
+
+
+ 4.0.0
+
+ 23K0623
+ ru.mirea.practice
+ 2024.1
+ ../pom.xml
+
+ 23K0623-p012
+ Массивы
+
diff --git a/students/23K0623/23K0623-p012/src/main/java/ru/mirea/practice/s23k0623/Circle.java b/students/23K0623/23K0623-p012/src/main/java/ru/mirea/practice/s23k0623/Circle.java
new file mode 100644
index 000000000..b7aba18f7
--- /dev/null
+++ b/students/23K0623/23K0623-p012/src/main/java/ru/mirea/practice/s23k0623/Circle.java
@@ -0,0 +1,13 @@
+package ru.mirea.practice.s23k0623;
+
+public class Circle extends Shape {
+
+ public Circle(double x, double y, String color) {
+ super(x, y, color);
+ }
+
+ @Override
+ public String toString() {
+ return "Square{" + super.toString() + "}";
+ }
+}
diff --git a/students/23K0623/23K0623-p012/src/main/java/ru/mirea/practice/s23k0623/Shape.java b/students/23K0623/23K0623-p012/src/main/java/ru/mirea/practice/s23k0623/Shape.java
new file mode 100644
index 000000000..20ba1ec79
--- /dev/null
+++ b/students/23K0623/23K0623-p012/src/main/java/ru/mirea/practice/s23k0623/Shape.java
@@ -0,0 +1,35 @@
+package ru.mirea.practice.s23k0623;
+
+public abstract class Shape {
+
+ private double x;
+ private double y;
+ private String color;
+
+ public Shape(double x, double y, String color) {
+ this.x = x;
+ this.y = y;
+ this.color = color;
+ }
+
+ public double getX() {
+ return x;
+ }
+
+ public double getY() {
+ return y;
+ }
+
+ public String getColor() {
+ return color;
+ }
+
+ @Override
+ public String toString() {
+ return "Shape{"
+ + "x='" + x + '\''
+ + ", y='" + y + '\''
+ + ", color='" + color + '\''
+ + '}';
+ }
+}
diff --git a/students/23K0623/23K0623-p012/src/main/java/ru/mirea/practice/s23k0623/Square.java b/students/23K0623/23K0623-p012/src/main/java/ru/mirea/practice/s23k0623/Square.java
new file mode 100644
index 000000000..2bd102021
--- /dev/null
+++ b/students/23K0623/23K0623-p012/src/main/java/ru/mirea/practice/s23k0623/Square.java
@@ -0,0 +1,13 @@
+package ru.mirea.practice.s23k0623;
+
+public class Square extends Shape {
+
+ public Square(double x, double y, String color) {
+ super(x, y, color);
+ }
+
+ @Override
+ public String toString() {
+ return "Square{" + super.toString() + "}";
+ }
+}
diff --git a/students/23K0623/23K0623-p012/src/main/java/ru/mirea/practice/s23k0623/Twotask.java b/students/23K0623/23K0623-p012/src/main/java/ru/mirea/practice/s23k0623/Twotask.java
new file mode 100644
index 000000000..55b9a1f89
--- /dev/null
+++ b/students/23K0623/23K0623-p012/src/main/java/ru/mirea/practice/s23k0623/Twotask.java
@@ -0,0 +1,14 @@
+package ru.mirea.practice.s23k0623;
+
+public final class Twotask {
+
+ private Twotask() {
+ }
+
+ public static void main(String[] args) {
+ Square square = new Square(1.0, 2.0, "red");
+ Square circle = new Square(1.0, 2.0, "blue");
+ System.out.println(square);
+ System.out.println(circle);
+ }
+}
diff --git a/students/23K0623/23K0623-p013/pom.xml b/students/23K0623/23K0623-p013/pom.xml
new file mode 100644
index 000000000..903a109ce
--- /dev/null
+++ b/students/23K0623/23K0623-p013/pom.xml
@@ -0,0 +1,13 @@
+
+
+ 4.0.0
+
+ 23K0623
+ ru.mirea.practice
+ 2024.1
+ ../pom.xml
+
+ 23K0623-p013
+ Массивы
+
diff --git a/students/23K0623/23K0623-p013/src/main/java/ru/mirea/practice/s23k0623/Address.java b/students/23K0623/23K0623-p013/src/main/java/ru/mirea/practice/s23k0623/Address.java
new file mode 100644
index 000000000..769ee1e07
--- /dev/null
+++ b/students/23K0623/23K0623-p013/src/main/java/ru/mirea/practice/s23k0623/Address.java
@@ -0,0 +1,26 @@
+package ru.mirea.practice.s23k0623;
+
+public class Address {
+ private String country;
+ private String region;
+ private String city;
+ private String street;
+ private String house;
+ private String building;
+ private String apartment;
+
+ public Address(String country, String region, String city, String street, String house, String building, String apartment) {
+ this.country = country;
+ this.region = region;
+ this.city = city;
+ this.street = street;
+ this.house = house;
+ this.building = building;
+ this.apartment = apartment;
+ }
+
+ @Override
+ public String toString() {
+ return String.join(", ", country, region, city, street, house, building, apartment);
+ }
+}
diff --git a/students/23K0623/23K0623-p013/src/main/java/ru/mirea/practice/s23k0623/First.java b/students/23K0623/23K0623-p013/src/main/java/ru/mirea/practice/s23k0623/First.java
new file mode 100644
index 000000000..708e90011
--- /dev/null
+++ b/students/23K0623/23K0623-p013/src/main/java/ru/mirea/practice/s23k0623/First.java
@@ -0,0 +1,83 @@
+package ru.mirea.practice.s23k0623;
+
+import java.util.Locale;
+
+public final class First {
+
+ private First() {
+
+ }
+
+ public static void main(String[] args) {
+ String input = "I like Java!!!";
+ printLastCharacter(input);
+ endsWithMarks(input);
+ startsWithILike(input);
+ containsJava(input);
+ findSubstringPosition(input);
+ System.out.println(replaceAWithO(input));
+ System.out.println(convertToUpperCase(input));
+ System.out.println(convertToLowerCase(input));
+ System.out.println(cutOutSubstring(input));
+ }
+
+ public static void printLastCharacter(String str) {
+ if (str != null && str.length() > 0) {
+ char lastChar = str.charAt(str.length() - 1);
+ System.out.println("Последний символ строки: " + lastChar);
+ } else {
+ System.out.println("Строка пуста или null.");
+ }
+ }
+
+ public static void endsWithMarks(String str) {
+ if (str.endsWith("!!!")) {
+ System.out.println("Строка заканчивается на \"!!!\"");
+ } else {
+ System.out.println("Строка не заканчивается на \"!!!\"");
+ }
+ }
+
+ public static void startsWithILike(String str) {
+ if (str.startsWith("I like")) {
+ System.out.println("Строка начинается с \"I like!\"");
+ } else {
+ System.out.println("Строка не начинается с \"I like!\"");
+ }
+ }
+
+ public static void containsJava(String str) {
+ if (str.contains("Java")) {
+ System.out.println("Строка содержит \"Java\"");
+ } else {
+ System.out.println("Строка не содержит \"Java\"");
+ }
+ }
+
+ public static void findSubstringPosition(String str) {
+ if (str.indexOf("Java") != -1) {
+ System.out.println("Подстрока \"Java\" найдена на позиции: " + str.indexOf("Java"));
+ } else {
+ System.out.println("Подстрока \"Java\" не найдена.");
+ }
+ }
+
+ public static String replaceAWithO(String str) {
+ return str.replace('a', 'o');
+ }
+
+ public static String convertToUpperCase(String str) {
+ return str.toUpperCase(Locale.US);
+ }
+
+ public static String convertToLowerCase(String str) {
+ return str.toLowerCase(Locale.US);
+ }
+
+ public static String cutOutSubstring(String str) {
+ int startIndex = str.indexOf("Java");
+ int endIndex = startIndex + "Java".length();
+ return str.substring(startIndex, endIndex);
+ }
+}
+
diff --git a/students/23K0623/23K0623-p013/src/main/java/ru/mirea/practice/s23k0623/Person.java b/students/23K0623/23K0623-p013/src/main/java/ru/mirea/practice/s23k0623/Person.java
new file mode 100644
index 000000000..7479cfebe
--- /dev/null
+++ b/students/23K0623/23K0623-p013/src/main/java/ru/mirea/practice/s23k0623/Person.java
@@ -0,0 +1,52 @@
+package ru.mirea.practice.s23k0623;
+
+public class Person {
+ private String lastName;
+ private String firstName;
+ private String middleName;
+
+
+ public Person(String lastName, String firstName, String middleName) {
+ this.lastName = lastName;
+ this.firstName = firstName;
+ this.middleName = middleName;
+ }
+
+
+ public String getFullName() {
+ StringBuilder fullName = new StringBuilder(lastName);
+ if (firstName != null && !firstName.isEmpty()) {
+ fullName.append(" ").append(firstName.charAt(0)).append(".");
+ }
+ if (middleName != null && !middleName.isEmpty()) {
+ fullName.append(" ").append(middleName.charAt(0)).append(".");
+ }
+
+ return fullName.toString();
+ }
+
+ public String getLastName() {
+ return lastName;
+ }
+
+ public void setLastName(String lastName) {
+ this.lastName = lastName;
+ }
+
+ public String getFirstName() {
+ return firstName;
+ }
+
+ public void setFirstName(String firstName) {
+ this.firstName = firstName;
+ }
+
+ public String getMiddleName() {
+ return middleName;
+ }
+
+ public void setMiddleName(String middleName) {
+ this.middleName = middleName;
+ }
+
+}
\ No newline at end of file
diff --git a/students/23K0623/23K0623-p013/src/main/java/ru/mirea/practice/s23k0623/Three.java b/students/23K0623/23K0623-p013/src/main/java/ru/mirea/practice/s23k0623/Three.java
new file mode 100644
index 000000000..6aacb3db8
--- /dev/null
+++ b/students/23K0623/23K0623-p013/src/main/java/ru/mirea/practice/s23k0623/Three.java
@@ -0,0 +1,66 @@
+package ru.mirea.practice.s23k0623;
+
+import java.util.StringTokenizer;
+
+public final class Three {
+
+ private Three() {
+
+ }
+
+ public static Address parseAddressWithSplit(String address) {
+ String[] parts = address.split(",");
+ if (parts.length < 6) {
+ throw new IllegalArgumentException("Недостаточно частей адреса.");
+ }
+ return new Address(
+ parts[0].trim(),
+ parts[1].trim(),
+ parts[2].trim(),
+ parts[3].trim(),
+ parts[4].trim(),
+ parts.length > 5 ? parts[5].trim() : null,
+ parts.length > 6 ? parts[6].trim() : null
+ );
+ }
+
+ public static Address parseAddressWithTokenizer(String address) {
+ StringTokenizer tokenizer = new StringTokenizer(address, ",.;");
+ String[] parts = new String[7];
+ int i = 0;
+ while (tokenizer.hasMoreTokens() && i < parts.length) {
+ parts[i++] = tokenizer.nextToken().trim();
+ }
+
+ if (i < 6) {
+ throw new IllegalArgumentException("Недостаточно частей адреса.");
+ }
+
+ return new Address(
+ parts[0],
+ parts[1],
+ parts[2],
+ parts[3],
+ parts[4],
+ i > 5 ? parts[5] : null,
+ i > 6 ? parts[6] : null
+ );
+ }
+
+ public static void main(String[] args) {
+
+ String address1 = "Россия, Москва, Москва, Арбат, 12, 1, 34";
+ String address2 = "США, Калифорния, Лос-Анджелес, Беверли Хиллз, 1234, 5, 67";
+ String address3 = "Франция, Иль-де-Франс, Париж, Елисейские поля, 8, 2, 88";
+ String address4 = "Германия, Бавария, Мюнхен, Штутгартская, 45; 3; 9";
+
+
+ System.out.println("Разбор адреса с использованием split():");
+ System.out.println(parseAddressWithSplit(address1));
+ System.out.println(parseAddressWithSplit(address2));
+ System.out.println(parseAddressWithSplit(address3));
+
+ System.out.println("\nРазбор адреса с использованием StringTokenizer:");
+ System.out.println(parseAddressWithTokenizer(address4));
+ }
+}
diff --git a/students/23K0623/23K0623-p013/src/main/java/ru/mirea/practice/s23k0623/Two.java b/students/23K0623/23K0623-p013/src/main/java/ru/mirea/practice/s23k0623/Two.java
new file mode 100644
index 000000000..adcdef232
--- /dev/null
+++ b/students/23K0623/23K0623-p013/src/main/java/ru/mirea/practice/s23k0623/Two.java
@@ -0,0 +1,19 @@
+package ru.mirea.practice.s23k0623;
+
+public final class Two {
+ private Two() {
+
+ }
+
+ public static void main(String[] args) {
+ Person person1 = new Person("Иванов", "Иван", "Иванович");
+ Person person2 = new Person("Петров", "Петр", null);
+ Person person3 = new Person("Сидоров", null, "Сидорович");
+ Person person4 = new Person("Кузнецов", null, null);
+
+ System.out.println(person1.getFullName());
+ System.out.println(person2.getFullName());
+ System.out.println(person3.getFullName());
+ System.out.println(person4.getFullName());
+ }
+}
diff --git a/students/23K0623/23K0623-p014/pom.xml b/students/23K0623/23K0623-p014/pom.xml
new file mode 100644
index 000000000..3362ad0c7
--- /dev/null
+++ b/students/23K0623/23K0623-p014/pom.xml
@@ -0,0 +1,13 @@
+
+
+ 4.0.0
+
+ 23K0623
+ ru.mirea.practice
+ 2024.1
+ ../pom.xml
+
+ 23K0623-p014
+ Массивы
+
diff --git a/students/23K0623/23K0623-p014/src/main/java/ru/mirea/practice/s23k0623/Three.java b/students/23K0623/23K0623-p014/src/main/java/ru/mirea/practice/s23k0623/Three.java
new file mode 100644
index 000000000..b80310852
--- /dev/null
+++ b/students/23K0623/23K0623-p014/src/main/java/ru/mirea/practice/s23k0623/Three.java
@@ -0,0 +1,24 @@
+package ru.mirea.practice.s23k0623;
+
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+
+public final class Three {
+ private Three() {
+
+ }
+
+ public static void main(String[] args) {
+ String text = "Here are some prices: 25.98 USD, 44 ERR, 0.004 EU, 123.45 RUR, 67.89 EUR, 100 USD, 200.50 RUB.";
+ extractPrices(text);
+ }
+
+ public static void extractPrices(String text) {
+ String regex = "\\b\\d+(\\.\\d{1,2})?\\s(USD|RUB|RUR|EUR)\\b";
+ Pattern pattern = Pattern.compile(regex);
+ Matcher matcher = pattern.matcher(text);
+ while (matcher.find()) {
+ System.out.println(matcher.group());
+ }
+ }
+}
diff --git a/students/23K0623/23K0623-p014/src/main/java/ru/mirea/practice/s23k0623/Two.java b/students/23K0623/23K0623-p014/src/main/java/ru/mirea/practice/s23k0623/Two.java
new file mode 100644
index 000000000..7521b0a65
--- /dev/null
+++ b/students/23K0623/23K0623-p014/src/main/java/ru/mirea/practice/s23k0623/Two.java
@@ -0,0 +1,30 @@
+package ru.mirea.practice.s23k0623;
+
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+
+public final class Two {
+ private Two() {
+
+ }
+
+ public static void main(String[] args) {
+ String regex = "^abcdefghijklmnopqrstuv18340$";
+ String[] testStrings = {
+ "abcdefghijklmnopqrstuv18340",
+ "abcdefghijklmnoasdfasdpqrstuv18340",
+ "abcdefghijklmnopqrstuv183401",
+ "abcdefghijklmnopqrstuv1834"
+ };
+
+ for (String test : testStrings) {
+ Matcher matcher = Pattern.compile(regex).matcher(test);
+ if (matcher.matches()) {
+ System.out.println(test + " - совпадает");
+ } else {
+ System.out.println(test + " - не совпадает");
+ }
+ }
+ }
+}
+
diff --git a/students/23K0623/23K0623-p015/pom.xml b/students/23K0623/23K0623-p015/pom.xml
new file mode 100644
index 000000000..f990fc957
--- /dev/null
+++ b/students/23K0623/23K0623-p015/pom.xml
@@ -0,0 +1,13 @@
+
+
+ 4.0.0
+
+ 23K0623
+ ru.mirea.practice
+ 2024.1
+ ../pom.xml
+
+ 23K0623-p015
+ Массивы
+
diff --git a/students/23K0623/23K0623-p015/src/main/java/ru/mirea/practice/s23k0623/Calculator.java b/students/23K0623/23K0623-p015/src/main/java/ru/mirea/practice/s23k0623/Calculator.java
new file mode 100644
index 000000000..fff8c0165
--- /dev/null
+++ b/students/23K0623/23K0623-p015/src/main/java/ru/mirea/practice/s23k0623/Calculator.java
@@ -0,0 +1,75 @@
+package ru.mirea.practice.s23k0164.t1;
+
+import java.util.Scanner;
+import java.util.InputMismatchException;
+
+public final class Calculator {
+
+ private Calculator() {
+
+ }
+
+ public static void main(String[] args) {
+ try (Scanner scanner = new Scanner(System.in)) {
+ boolean validInput = false;
+ int size = 0;
+ while (!validInput) {
+ System.out.println("Добро пожаловать в калькулятор, введите первое число:");
+ try {
+ size = scanner.nextInt();
+ validInput = true;
+ } catch (InputMismatchException e) {
+ System.out.println("Ошибка ввода. Пожалуйста, введите целое число.");
+ scanner.next();
+ }
+ }
+ validInput = false;
+ int size2 = 0;
+ while (!validInput) {
+ System.out.println("Введите первое число:");
+
+ try {
+ size2 = scanner.nextInt();
+ validInput = true;
+ } catch (InputMismatchException e) {
+ System.out.println("Ошибка ввода. Пожалуйста, введите целое число.");
+ scanner.next();
+ }
+ }
+
+ System.out.println("Выберите операцию:");
+ System.out.println("1. Сложение");
+ System.out.println("2. Вычитание");
+ System.out.println("3. Умножение");
+ System.out.println("4. Деление");
+
+ int choice = scanner.nextInt();
+ double result;
+ switch (choice) {
+ case 1:
+ result = size + size2;
+ System.out.println("Результат: " + result);
+ break;
+ case 2:
+ result = size - size2;
+ System.out.println("Результат: " + result);
+ break;
+ case 3:
+ result = size * size2;
+ System.out.println("Результат: " + result);
+ break;
+ case 4:
+ if (size2 != 0) {
+ result = size / size2;
+ System.out.println("Результат: " + result);
+ } else {
+ System.out.println("Ошибка: Деление на ноль невозможно.");
+ }
+ break;
+ default:
+ System.out.println("Неверный выбор операции.");
+ break;
+ }
+ }
+ }
+}
diff --git a/students/23K0623/23K0623-p016/pom.xml b/students/23K0623/23K0623-p016/pom.xml
new file mode 100644
index 000000000..810b6a933
--- /dev/null
+++ b/students/23K0623/23K0623-p016/pom.xml
@@ -0,0 +1,13 @@
+
+
+ 4.0.0
+
+ 23K0623
+ ru.mirea.practice
+ 2024.1
+ ../pom.xml
+
+ 23K0623-p016
+ Массивы
+
diff --git a/students/23K0623/23K0623-p016/src/main/java/ru/mirea/practice/s23k0623/GuessingGame.java b/students/23K0623/23K0623-p016/src/main/java/ru/mirea/practice/s23k0623/GuessingGame.java
new file mode 100644
index 000000000..d18dc2dbb
--- /dev/null
+++ b/students/23K0623/23K0623-p016/src/main/java/ru/mirea/practice/s23k0623/GuessingGame.java
@@ -0,0 +1,47 @@
+package ru.mirea.practice.s23k0623;
+
+import java.util.Random;
+import java.util.Scanner;
+
+public final class GuessingGame {
+ private GuessingGame() {
+
+ }
+
+ public static void main(String[] args) {
+ Random random = new Random();
+ int randomNumber = random.nextInt(21) + 1;
+ int count = 3;
+ System.out.println("Угадай число от 1 до 21, у тебя три попытки, я принимаю на вход целые числа");
+ try (Scanner scanner = new Scanner(System.in)) {
+ while (count > 0) {
+ int userNumber = 0;
+ boolean isValid = false;
+ while (!isValid) {
+ System.out.print("Введите число: ");
+ if (scanner.hasNextInt()) {
+ userNumber = scanner.nextInt();
+ isValid = true;
+ } else {
+ System.out.println("Неправильный ввод. Пожалуйста, введите целое число.");
+ scanner.next();
+ }
+ }
+
+ count -= 1;
+ if (userNumber > randomNumber) {
+ System.out.println("Введённое число больше загаданного, у вас осталось" + count + "попыток");
+ } else if (userNumber < randomNumber) {
+ System.out.println("Введённое число меньше загаданного" + count + "попыток");
+ } else {
+ System.out.println("Введённое число равно " + randomNumber);
+ break;
+ }
+
+ if (count == 0) {
+ System.out.println("К сожалению, вы не угадали. Загаданное число было " + randomNumber);
+ }
+ }
+ }
+ }
+}
diff --git a/students/23K0623/23K0623-p017/pom.xml b/students/23K0623/23K0623-p017/pom.xml
new file mode 100644
index 000000000..0fdb0231d
--- /dev/null
+++ b/students/23K0623/23K0623-p017/pom.xml
@@ -0,0 +1,13 @@
+
+
+ 4.0.0
+
+ 23K0623
+ ru.mirea.practice
+ 2024.1
+ ../pom.xml
+
+ 23K0623-p017
+ Массивы
+
diff --git a/students/23K0623/23K0623-p017/src/main/java/ru/mirea/practice/s23k0623/CyclicDoublyLinkedList.java b/students/23K0623/23K0623-p017/src/main/java/ru/mirea/practice/s23k0623/CyclicDoublyLinkedList.java
new file mode 100644
index 000000000..5420dc6e7
--- /dev/null
+++ b/students/23K0623/23K0623-p017/src/main/java/ru/mirea/practice/s23k0623/CyclicDoublyLinkedList.java
@@ -0,0 +1,69 @@
+
+package ru.mirea.practice.s23k0623;
+
+public class CyclicDoublyLinkedList {
+ private Node head;
+
+ private static class Node {
+ int data;
+ Node prev;
+ Node next;
+
+ public Node(int data) {
+ this.data = data;
+ }
+ }
+
+ public void insert(int data) {
+ Node newNode = new Node(data);
+ if (head == null) {
+ head = newNode;
+ newNode.next = newNode;
+ newNode.prev = newNode;
+ } else {
+ Node last = head.prev;
+ newNode.next = head;
+ newNode.prev = last;
+ head.prev = newNode;
+ last.next = newNode;
+ }
+ }
+
+ public void removeFirst() {
+ if (head == null) {
+ return;
+ } else if (head.next == head) {
+ head = null;
+ } else {
+ Node last = head.prev;
+ last.next = head.next;
+ head.next.prev = last;
+ head = head.next;
+ }
+ }
+
+ public CyclicDoublyLinkedList excludeAndCreateNew(int excludeData) {
+ CyclicDoublyLinkedList newList = new CyclicDoublyLinkedList();
+ Node current = head;
+ do {
+ if (current.data != excludeData) {
+ newList.insert(current.data);
+ }
+ current = current.next;
+ } while (current != head);
+ return newList;
+ }
+
+ public void printList() {
+ if (head == null) {
+ System.out.println("Список пуст");
+ return;
+ }
+ Node current = head;
+ do {
+ System.out.print(current.data + " ");
+ current = current.next;
+ } while (current != head);
+ System.out.println();
+ }
+}
diff --git a/students/23K0623/23K0623-p017/src/main/java/ru/mirea/practice/s23k0623/Tester.java b/students/23K0623/23K0623-p017/src/main/java/ru/mirea/practice/s23k0623/Tester.java
new file mode 100644
index 000000000..73321750e
--- /dev/null
+++ b/students/23K0623/23K0623-p017/src/main/java/ru/mirea/practice/s23k0623/Tester.java
@@ -0,0 +1,26 @@
+
+package ru.mirea.practice.s23k0623;
+
+public abstract class Tester {
+ public static void main(String[] args) {
+ CyclicDoublyLinkedList list = new CyclicDoublyLinkedList();
+ list.insert(1);
+ list.insert(2);
+ list.insert(3);
+ list.insert(4);
+ list.insert(5);
+
+ System.out.println("Исходный список:");
+ list.printList();
+
+ list.removeFirst();
+
+ System.out.println("Список после удаления первого элемента:");
+ list.printList();
+
+ CyclicDoublyLinkedList newList = list.excludeAndCreateNew(3);
+
+ System.out.println("Новый список без элемента 3:");
+ newList.printList();
+ }
+}
diff --git a/students/23K0623/23K0623-p018/pom.xml b/students/23K0623/23K0623-p018/pom.xml
new file mode 100644
index 000000000..33c94a467
--- /dev/null
+++ b/students/23K0623/23K0623-p018/pom.xml
@@ -0,0 +1,13 @@
+
+
+ 4.0.0
+
+ 23K0623
+ ru.mirea.practice
+ 2024.1
+ ../pom.xml
+
+ 23K0623-p018
+ Массивы
+
diff --git a/students/23K0623/23K0623-p018/src/main/java/ru/mirea/practice/s23k0623/Exception3.java b/students/23K0623/23K0623-p018/src/main/java/ru/mirea/practice/s23k0623/Exception3.java
new file mode 100644
index 000000000..2e808ecc6
--- /dev/null
+++ b/students/23K0623/23K0623-p018/src/main/java/ru/mirea/practice/s23k0623/Exception3.java
@@ -0,0 +1,32 @@
+package ru.mirea.practice.s23k0623;
+
+import java.util.Scanner;
+
+public final class Exception3 {
+
+ private Exception3() {
+
+ }
+
+ public static void exceptionDemo() {
+ try (Scanner myScanner = new Scanner(System.in)) {
+ boolean validInput = false;
+ while (!validInput) {
+ System.out.print("Enter an integer: ");
+ String intString = myScanner.next();
+ try {
+ int i = Integer.parseInt(intString);
+ System.out.println(2 / i);
+ validInput = true;
+ } catch (NumberFormatException e) {
+ System.out.println("Input error. Please enter a valid integer.");
+ } catch (ArithmeticException e) {
+ System.out.println("Cannot divide by zero. Please enter a non-zero integer.");
+ } finally {
+ System.out.println("Attempt completed.");
+ }
+
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/students/23K0623/23K0623-p018/src/main/java/ru/mirea/practice/s23k0623/Four.java b/students/23K0623/23K0623-p018/src/main/java/ru/mirea/practice/s23k0623/Four.java
new file mode 100644
index 000000000..a96ae1307
--- /dev/null
+++ b/students/23K0623/23K0623-p018/src/main/java/ru/mirea/practice/s23k0623/Four.java
@@ -0,0 +1,12 @@
+package ru.mirea.practice.s23k0623;
+
+
+public final class Four {
+ private Four() {
+
+ }
+
+ public static void main(String[] args) {
+ Exception3.exceptionDemo();
+ }
+}
\ No newline at end of file
diff --git a/students/23K0623/23K0623-p018/src/main/java/ru/mirea/practice/s23k0623/ThrowsDemo.java b/students/23K0623/23K0623-p018/src/main/java/ru/mirea/practice/s23k0623/ThrowsDemo.java
new file mode 100644
index 000000000..3866922d2
--- /dev/null
+++ b/students/23K0623/23K0623-p018/src/main/java/ru/mirea/practice/s23k0623/ThrowsDemo.java
@@ -0,0 +1,20 @@
+package ru.mirea.practice.s23k0623;
+
+public final class ThrowsDemo {
+
+ private ThrowsDemo() {
+
+ }
+
+ public void getDetails(String key) {
+ if (key == null) {
+ throw new NullPointerException("null key in getDetails");
+ }
+ System.out.println("Details for key: " + key);
+ }
+
+ public static void main(String[] args) {
+ ThrowsDemo demo = new ThrowsDemo();
+ demo.getDetails(null);
+ }
+}
\ No newline at end of file
diff --git a/students/23K0623/23K0623-p019/pom.xml b/students/23K0623/23K0623-p019/pom.xml
new file mode 100644
index 000000000..afd5b6ead
--- /dev/null
+++ b/students/23K0623/23K0623-p019/pom.xml
@@ -0,0 +1,13 @@
+
+
+ 4.0.0
+
+ 23K0623
+ ru.mirea.practice
+ 2024.1
+ ../pom.xml
+
+ 23K0623-p019
+ Массивы
+
diff --git a/students/23K0623/23K0623-p019/src/main/java/ru/mirea/practice/s23k0623/Customer.java b/students/23K0623/23K0623-p019/src/main/java/ru/mirea/practice/s23k0623/Customer.java
new file mode 100644
index 000000000..c54fc1250
--- /dev/null
+++ b/students/23K0623/23K0623-p019/src/main/java/ru/mirea/practice/s23k0623/Customer.java
@@ -0,0 +1,26 @@
+package ru.mirea.practice.s23k0623;
+
+class Customer {
+ private final String fullName;
+ private final String inn;
+
+ public Customer(String fullName, String inn) {
+ this.fullName = fullName;
+ this.inn = inn;
+ }
+
+ public String getFullName() {
+ return fullName;
+ }
+
+ public String getInn() {
+ return inn;
+ }
+
+ // Проверка ИНН на корректность
+ public void validateInn() throws InvalidinnException {
+ if (inn.length() != 10 || !inn.matches("\\d+")) {
+ throw new InvalidinnException("Недействительный ИНН: " + inn);
+ }
+ }
+}
\ No newline at end of file
diff --git a/students/23K0623/23K0623-p019/src/main/java/ru/mirea/practice/s23k0623/InvalidinnException.java b/students/23K0623/23K0623-p019/src/main/java/ru/mirea/practice/s23k0623/InvalidinnException.java
new file mode 100644
index 000000000..c0f389da0
--- /dev/null
+++ b/students/23K0623/23K0623-p019/src/main/java/ru/mirea/practice/s23k0623/InvalidinnException.java
@@ -0,0 +1,7 @@
+package ru.mirea.practice.s23k0623;
+
+class InvalidinnException extends Exception {
+ public InvalidinnException(String message) {
+ super(message);
+ }
+}
\ No newline at end of file
diff --git a/students/23K0623/23K0623-p019/src/main/java/ru/mirea/practice/s23k0623/OnlinePurchase.java b/students/23K0623/23K0623-p019/src/main/java/ru/mirea/practice/s23k0623/OnlinePurchase.java
new file mode 100644
index 000000000..373abbc52
--- /dev/null
+++ b/students/23K0623/23K0623-p019/src/main/java/ru/mirea/practice/s23k0623/OnlinePurchase.java
@@ -0,0 +1,24 @@
+package ru.mirea.practice.s23k0623;
+
+import java.util.Scanner;
+
+public abstract class OnlinePurchase {
+ public static void main(String[] args) {
+
+ try (Scanner scanner = new Scanner(System.in)) {
+ System.out.println("Введите ФИО:");
+ String fullName = scanner.nextLine();
+
+ System.out.println("Введите ИНН:");
+ String inn = scanner.nextLine();
+
+ Customer customer = new Customer(fullName, inn);
+ customer.validateInn(); // Проверка ИНН
+
+ System.out.println("Покупка завершена для клиента: " + customer.getFullName());
+
+ } catch (InvalidinnException e) {
+ System.err.println("Ошибка: " + e.getMessage());
+ }
+ }
+}
\ No newline at end of file
diff --git a/students/23K0623/23K0623-p020/pom.xml b/students/23K0623/23K0623-p020/pom.xml
new file mode 100644
index 000000000..92ec39bdd
--- /dev/null
+++ b/students/23K0623/23K0623-p020/pom.xml
@@ -0,0 +1,13 @@
+
+
+ 4.0.0
+
+ 23K0623
+ ru.mirea.practice
+ 2024.1
+ ../pom.xml
+
+ 23K0623-p020
+ Массивы
+
diff --git a/students/23K0623/23K0623-p020/src/main/java/ru/mirea/practice/s23k0623/Main.java b/students/23K0623/23K0623-p020/src/main/java/ru/mirea/practice/s23k0623/Main.java
new file mode 100644
index 000000000..b0c395478
--- /dev/null
+++ b/students/23K0623/23K0623-p020/src/main/java/ru/mirea/practice/s23k0623/Main.java
@@ -0,0 +1,17 @@
+package ru.mirea.practice.s23k0623;
+
+public abstract class Main {
+ public static void main(String[] args) {
+ // Пример использования с разными типами данных
+ Trio trio = new Trio<>("Hello", 42, 3.14);
+
+ System.out.println(trio); // Выводит: Trio{first=Hello, second=42, third=3.14}
+
+ System.out.println(trio); // Выводит тип данных
+
+ // Доступ к отдельным значениям
+ System.out.println("First: " + trio.getFirst()); // Hello
+ System.out.println("Second: " + trio.getSecond()); // 42
+ System.out.println("Third: " + trio.getThird()); // 3.14
+ }
+}
\ No newline at end of file
diff --git a/students/23K0623/23K0623-p020/src/main/java/ru/mirea/practice/s23k0623/Trio.java b/students/23K0623/23K0623-p020/src/main/java/ru/mirea/practice/s23k0623/Trio.java
new file mode 100644
index 000000000..25b217f7e
--- /dev/null
+++ b/students/23K0623/23K0623-p020/src/main/java/ru/mirea/practice/s23k0623/Trio.java
@@ -0,0 +1,47 @@
+
+package ru.mirea.practice.s23k0623;
+
+public class Trio {
+ private T first;
+ private V second;
+ private K third;
+
+ public Trio(T first, V second, K third) {
+ this.first = first;
+ this.second = second;
+ this.third = third;
+ }
+
+ public T getFirst() {
+ return first;
+ }
+
+ public void setFirst(T first) {
+ this.first = first;
+ }
+
+ public V getSecond() {
+ return second;
+ }
+
+ public void setSecond(V second) {
+ this.second = second;
+ }
+
+ public K getThird() {
+ return third;
+ }
+
+ public void setThird(K third) {
+ this.third = third;
+ }
+
+ @Override
+ public String toString() {
+ return "Trio{"
+ + "first=" + first
+ + ", second=" + second
+ + ", third=" + third
+ + '}';
+ }
+}
diff --git a/students/23K0623/23K0623-p021/pom.xml b/students/23K0623/23K0623-p021/pom.xml
new file mode 100644
index 000000000..0757738a6
--- /dev/null
+++ b/students/23K0623/23K0623-p021/pom.xml
@@ -0,0 +1,13 @@
+
+
+ 4.0.0
+
+ 23K0623
+ ru.mirea.practice
+ 2024.1
+ ../pom.xml
+
+ 23K0623-p021
+ Массивы
+
diff --git a/students/23K0623/23K0623-p021/src/main/java/ru/mirea/practice/s23k0623/prog1/Main.java b/students/23K0623/23K0623-p021/src/main/java/ru/mirea/practice/s23k0623/prog1/Main.java
new file mode 100644
index 000000000..8aee10548
--- /dev/null
+++ b/students/23K0623/23K0623-p021/src/main/java/ru/mirea/practice/s23k0623/prog1/Main.java
@@ -0,0 +1,26 @@
+package ru.mirea.practice.s23k0623.prog1;
+
+import java.util.Arrays;
+import java.util.List;
+
+public abstract class Main {
+ public static List convertArrayToList(String[] array) {
+ return Arrays.asList(array);
+ }
+
+ // Метод для конвертации массива чисел в список
+ public static List convertArrayToList(Integer[] array) {
+ return Arrays.asList(array);
+ }
+
+ public static void main(String[] args) {
+ String[] stringArray = {"apple", "banana", "cherry"};
+ Integer[] intArray = {1, 2, 3, 4, 5};
+
+ List stringList = convertArrayToList(stringArray);
+ List intList = convertArrayToList(intArray);
+
+ System.out.println("Список строк: " + stringList);
+ System.out.println("Список чисел: " + intList);
+ }
+}
diff --git a/students/23K0623/23K0623-p021/src/main/java/ru/mirea/practice/s23k0623/prog2/AllType.java b/students/23K0623/23K0623-p021/src/main/java/ru/mirea/practice/s23k0623/prog2/AllType.java
new file mode 100644
index 000000000..d5b02cb71
--- /dev/null
+++ b/students/23K0623/23K0623-p021/src/main/java/ru/mirea/practice/s23k0623/prog2/AllType.java
@@ -0,0 +1,16 @@
+package ru.mirea.practice.s23k0623.prog2;
+
+import java.util.Arrays;
+
+public class AllType {
+ private final Object[] array;
+
+ public AllType(Object[] array) {
+ this.array = array;
+ }
+
+ @Override
+ public String toString() {
+ return Arrays.toString(array);
+ }
+}
diff --git a/students/23K0623/23K0623-p021/src/main/java/ru/mirea/practice/s23k0623/prog2/Main.java b/students/23K0623/23K0623-p021/src/main/java/ru/mirea/practice/s23k0623/prog2/Main.java
new file mode 100644
index 000000000..9f31eae32
--- /dev/null
+++ b/students/23K0623/23K0623-p021/src/main/java/ru/mirea/practice/s23k0623/prog2/Main.java
@@ -0,0 +1,9 @@
+package ru.mirea.practice.s23k0623.prog2;
+
+public abstract class Main {
+ public static void main(String[] args) {
+ Integer[] mas1 = {1, 2, 3, 4};
+ AllType intmas1 = new AllType(mas1);
+ System.out.println("Integer array: " + intmas1);
+ }
+}
diff --git a/students/23K0623/23K0623-p021/src/main/java/ru/mirea/practice/s23k0623/prog3/AllType.java b/students/23K0623/23K0623-p021/src/main/java/ru/mirea/practice/s23k0623/prog3/AllType.java
new file mode 100644
index 000000000..a4b2d48b9
--- /dev/null
+++ b/students/23K0623/23K0623-p021/src/main/java/ru/mirea/practice/s23k0623/prog3/AllType.java
@@ -0,0 +1,24 @@
+package ru.mirea.practice.s23k0623.prog3;
+
+import java.util.Arrays;
+
+public class AllType {
+ private T[] array;
+
+ public AllType(T[] array) {
+ this.array = array;
+ }
+
+ public T getElement(int index) {
+ if (index >= 0 && index < array.length) {
+ return array[index];
+ } else {
+ throw new IndexOutOfBoundsException("Index is out of bounds");
+ }
+ }
+
+ @Override
+ public String toString() {
+ return Arrays.toString(array);
+ }
+}
diff --git a/students/23K0623/23K0623-p021/src/main/java/ru/mirea/practice/s23k0623/prog3/Main.java b/students/23K0623/23K0623-p021/src/main/java/ru/mirea/practice/s23k0623/prog3/Main.java
new file mode 100644
index 000000000..a06c41005
--- /dev/null
+++ b/students/23K0623/23K0623-p021/src/main/java/ru/mirea/practice/s23k0623/prog3/Main.java
@@ -0,0 +1,11 @@
+package ru.mirea.practice.s23k0623.prog3;
+
+public abstract class Main {
+ public static void main(String[] args) {
+ AllType intAllType = new AllType<>(new Integer[]{1, 2, 3, 4, 5});
+ System.out.println("Integer array: " + intAllType);
+
+ AllType stringAllType = new AllType<>(new String[]{"apple", "banana", "cherry"});
+ System.out.println("String array: " + stringAllType);
+ }
+}
diff --git a/students/23K0623/23K0623-p022/pom.xml b/students/23K0623/23K0623-p022/pom.xml
new file mode 100644
index 000000000..9346ccc42
--- /dev/null
+++ b/students/23K0623/23K0623-p022/pom.xml
@@ -0,0 +1,13 @@
+
+
+ 4.0.0
+
+ 23K0623
+ ru.mirea.practice
+ 2024.1
+ ../pom.xml
+
+ 23K0623-p022
+ Массивы
+
diff --git a/students/23K0623/23K0623-p022/src/main/java/ru/mirea/practice/s23k0623/Main.java b/students/23K0623/23K0623-p022/src/main/java/ru/mirea/practice/s23k0623/Main.java
new file mode 100644
index 000000000..1547e24fe
--- /dev/null
+++ b/students/23K0623/23K0623-p022/src/main/java/ru/mirea/practice/s23k0623/Main.java
@@ -0,0 +1,51 @@
+package ru.mirea.practice.s23k0623;
+
+import java.util.Stack;
+
+public abstract class Main {
+ public static double evaluateRpn(String expression) {
+ Stack stack = new Stack<>();
+ String[] tokens = expression.split("\\s+"); // Разделяем выражение по пробелам
+
+ for (String token : tokens) {
+ switch (token) {
+ case "+":
+ stack.push(stack.pop() + stack.pop());
+ break;
+ case "-":
+ double subtrahend = stack.pop();
+ stack.push(stack.pop() - subtrahend);
+ break;
+ case "*":
+ stack.push(stack.pop() * stack.pop());
+ break;
+ case "/":
+ double divisor = stack.pop();
+ if (divisor == 0) {
+ throw new ArithmeticException("Деление на ноль.");
+ }
+ stack.push(stack.pop() / divisor);
+ break;
+ default:
+ stack.push(Double.parseDouble(token));
+ break;
+ }
+ }
+
+ if (stack.size() != 1) {
+ throw new IllegalArgumentException("Некорректное выражение.");
+ }
+
+ return stack.pop();
+ }
+
+ public static void main(String[] args) {
+ String expression = "3 4 + 2 * 7 /";
+ try {
+ double result = evaluateRpn(expression);
+ System.out.println("Результат: " + result);
+ } catch (Exception e) {
+ System.out.println("Ошибка: " + e.getMessage());
+ }
+ }
+}
diff --git a/students/23K0623/23K0623-p022/src/main/java/ru/mirea/practice/s23k0623/prog2/CalculatorController.java b/students/23K0623/23K0623-p022/src/main/java/ru/mirea/practice/s23k0623/prog2/CalculatorController.java
new file mode 100644
index 000000000..9014da33d
--- /dev/null
+++ b/students/23K0623/23K0623-p022/src/main/java/ru/mirea/practice/s23k0623/prog2/CalculatorController.java
@@ -0,0 +1,22 @@
+package ru.mirea.practice.s23k0623.prog2;
+
+import java.awt.event.ActionEvent;
+import java.awt.event.ActionListener;
+
+// Controller
+class CalculatorController implements ActionListener {
+ private CalculatorView view;
+ private CalculatorModel model;
+
+ public CalculatorController(CalculatorView view, CalculatorModel model) {
+ this.view = view;
+ this.model = model;
+ }
+
+ @Override
+ public void actionPerformed(ActionEvent e) {
+ String expression = view.getInputExpression();
+ String result = model.evaluateRpn(expression);
+ view.setResult(result);
+ }
+}
diff --git a/students/23K0623/23K0623-p022/src/main/java/ru/mirea/practice/s23k0623/prog2/CalculatorModel.java b/students/23K0623/23K0623-p022/src/main/java/ru/mirea/practice/s23k0623/prog2/CalculatorModel.java
new file mode 100644
index 000000000..3ed07326a
--- /dev/null
+++ b/students/23K0623/23K0623-p022/src/main/java/ru/mirea/practice/s23k0623/prog2/CalculatorModel.java
@@ -0,0 +1,44 @@
+package ru.mirea.practice.s23k0623.prog2;
+
+import java.util.Stack;
+
+// Model
+class CalculatorModel {
+ public String evaluateRpn(String expression) {
+ Stack stack = new Stack<>();
+ String[] tokens = expression.split("\\s+");
+
+ try {
+ for (String token : tokens) {
+ switch (token) {
+ case "+":
+ stack.push(stack.pop() + stack.pop());
+ break;
+ case "-":
+ double subtrahend = stack.pop();
+ stack.push(stack.pop() - subtrahend);
+ break;
+ case "*":
+ stack.push(stack.pop() * stack.pop());
+ break;
+ case "/":
+ double divisor = stack.pop();
+ if (divisor == 0) {
+ return "Ошибка: деление на ноль.";
+ }
+ stack.push(stack.pop() / divisor);
+ break;
+ default:
+ stack.push(Double.parseDouble(token));
+ break;
+ }
+ }
+ if (stack.size() != 1) {
+ return "Ошибка: неверное выражение.";
+ }
+ return "Результат: " + stack.pop();
+ } catch (Exception e) {
+ return "Ошибка: неверное выражение или операция для пустого стека.";
+ }
+ }
+}
diff --git a/students/23K0623/23K0623-p022/src/main/java/ru/mirea/practice/s23k0623/prog2/CalculatorView.java b/students/23K0623/23K0623-p022/src/main/java/ru/mirea/practice/s23k0623/prog2/CalculatorView.java
new file mode 100644
index 000000000..718f6d853
--- /dev/null
+++ b/students/23K0623/23K0623-p022/src/main/java/ru/mirea/practice/s23k0623/prog2/CalculatorView.java
@@ -0,0 +1,52 @@
+package ru.mirea.practice.s23k0623.prog2;
+
+import javax.swing.JButton;
+import javax.swing.JFrame;
+import javax.swing.JLabel;
+import javax.swing.JPanel;
+import javax.swing.JScrollPane;
+import javax.swing.JTextArea;
+import javax.swing.JTextField;
+import java.awt.BorderLayout;
+
+// View
+class CalculatorView {
+ private JTextField inputField;
+ private JTextArea resultArea;
+ @SuppressWarnings("PMD.SingularField")
+ private JButton calculateButton;
+
+
+ public CalculatorView() {
+ inputField = new JTextField(20);
+ resultArea = new JTextArea(5, 20);
+ resultArea.setEditable(false);
+ calculateButton = new JButton("Вычислить");
+
+ JFrame frame = new JFrame("RPN Calculator");
+ frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
+
+ JPanel panel = new JPanel();
+ panel.setLayout(new BorderLayout());
+ panel.add(new JLabel("Введите выражение в ОПН:"), BorderLayout.NORTH);
+ panel.add(inputField, BorderLayout.CENTER);
+ panel.add(calculateButton, BorderLayout.EAST);
+ panel.add(new JScrollPane(resultArea), BorderLayout.SOUTH);
+
+ frame.getContentPane().add(panel);
+ frame.pack();
+ frame.setLocationRelativeTo(null);
+ frame.setVisible(true);
+
+ CalculatorController controller = new CalculatorController(this, new CalculatorModel()); // Создаём controller локально
+ calculateButton.addActionListener(controller);
+ }
+
+ public String getInputExpression() {
+ return inputField.getText();
+ }
+
+ public void setResult(String result) {
+ resultArea.setText(result);
+ }
+}
diff --git a/students/23K0623/23K0623-p022/src/main/java/ru/mirea/practice/s23k0623/prog2/Main.java b/students/23K0623/23K0623-p022/src/main/java/ru/mirea/practice/s23k0623/prog2/Main.java
new file mode 100644
index 000000000..c965b1dae
--- /dev/null
+++ b/students/23K0623/23K0623-p022/src/main/java/ru/mirea/practice/s23k0623/prog2/Main.java
@@ -0,0 +1,9 @@
+package ru.mirea.practice.s23k0623.prog2;
+
+import javax.swing.SwingUtilities;
+
+public abstract class Main {
+ public static void main(String[] args) {
+ SwingUtilities.invokeLater(CalculatorView::new);
+ }
+}
diff --git a/students/23K0623/23K0623-p022/src/main/java/ru/mirea/practice/s23k0623/prog2/Tests.java b/students/23K0623/23K0623-p022/src/main/java/ru/mirea/practice/s23k0623/prog2/Tests.java
new file mode 100644
index 000000000..75558a656
--- /dev/null
+++ b/students/23K0623/23K0623-p022/src/main/java/ru/mirea/practice/s23k0623/prog2/Tests.java
@@ -0,0 +1,18 @@
+package ru.mirea.practice.s23k0623.prog2;
+
+public abstract class Tests {
+ public static void main(String[] args) {
+ CalculatorModel model = new CalculatorModel();
+
+ assert "Результат: 7.0".equals(model.evaluateRpn("3 4 +"));
+ assert "Результат: 14.0".equals(model.evaluateRpn("5 1 2 + 4 * + 3 -"));
+
+ assert "Ошибка: неверное выражение.".equals(model.evaluateRpn("3 +"));
+
+ assert "Ошибка: деление на ноль.".equals(model.evaluateRpn("4 0 /"));
+
+ assert "Ошибка: неверное выражение или операция для пустого стека.".equals(model.evaluateRpn("1 2 + *"));
+
+ System.out.println("Все тесты пройдены.");
+ }
+}
diff --git a/students/23K0623/23K0623-p023/pom.xml b/students/23K0623/23K0623-p023/pom.xml
new file mode 100644
index 000000000..b75206d2b
--- /dev/null
+++ b/students/23K0623/23K0623-p023/pom.xml
@@ -0,0 +1,13 @@
+
+
+ 4.0.0
+
+ 23K0623
+ ru.mirea.practice
+ 2024.1
+ ../pom.xml
+
+ 23K0623-p023
+ Массивы
+
diff --git a/students/23K0623/23K0623-p023/src/main/java/ru/mirea/practice/s23k0623/prog2/AbstractQueue.java b/students/23K0623/23K0623-p023/src/main/java/ru/mirea/practice/s23k0623/prog2/AbstractQueue.java
new file mode 100644
index 000000000..03279adf0
--- /dev/null
+++ b/students/23K0623/23K0623-p023/src/main/java/ru/mirea/practice/s23k0623/prog2/AbstractQueue.java
@@ -0,0 +1,29 @@
+package ru.mirea.practice.s23k0623.prog2;
+
+public abstract class AbstractQueue implements Queue {
+ protected int size = 0;
+
+ @Override
+ public int size() {
+ return size;
+ }
+
+ @Override
+ public boolean isEmpty() {
+ return size == 0;
+ }
+
+ @Override
+ public void clear() {
+ size = 0;
+ }
+
+ @Override
+ public abstract void enqueue(T element);
+
+ @Override
+ public abstract T dequeue();
+
+ @Override
+ public abstract T element();
+}
diff --git a/students/23K0623/23K0623-p023/src/main/java/ru/mirea/practice/s23k0623/prog2/ArrayQueue.java b/students/23K0623/23K0623-p023/src/main/java/ru/mirea/practice/s23k0623/prog2/ArrayQueue.java
new file mode 100644
index 000000000..10e15a918
--- /dev/null
+++ b/students/23K0623/23K0623-p023/src/main/java/ru/mirea/practice/s23k0623/prog2/ArrayQueue.java
@@ -0,0 +1,56 @@
+package ru.mirea.practice.s23k0623.prog2;
+
+public class ArrayQueue extends AbstractQueue {
+ private T[] array;
+ private int head = 0;
+ private int tail = 0;
+
+ @SuppressWarnings("unchecked")
+ public ArrayQueue() {
+ array = (T[]) new Object[10];
+ }
+
+ @Override
+ public void enqueue(T element) {
+ if (element == null) {
+ throw new IllegalArgumentException("Element cannot be null");
+ }
+ ensureCapacity();
+ array[tail] = element;
+ tail = (tail + 1) % array.length;
+ size++;
+ }
+
+ @Override
+ public T element() {
+ if (isEmpty()) {
+ throw new IllegalStateException("Queue is empty");
+ }
+ return array[head];
+ }
+
+ @Override
+ public T dequeue() {
+ if (isEmpty()) {
+ throw new IllegalStateException("Queue is empty");
+ }
+ final T result = array[head];
+ array[head] = null;
+ head = (head + 1) % array.length;
+ size--;
+ return result;
+ }
+
+ @SuppressWarnings("unchecked")
+ private void ensureCapacity() {
+ if (size == array.length) {
+ T[] newArray = (T[]) new Object[array.length * 2];
+ for (int i = 0; i < size; i++) {
+ newArray[i] = array[(head + i) % array.length];
+ }
+ array = newArray;
+ head = 0;
+ tail = size;
+ }
+ }
+}
diff --git a/students/23K0623/23K0623-p023/src/main/java/ru/mirea/practice/s23k0623/prog2/LinkedQueue.java b/students/23K0623/23K0623-p023/src/main/java/ru/mirea/practice/s23k0623/prog2/LinkedQueue.java
new file mode 100644
index 000000000..1a5bb8996
--- /dev/null
+++ b/students/23K0623/23K0623-p023/src/main/java/ru/mirea/practice/s23k0623/prog2/LinkedQueue.java
@@ -0,0 +1,71 @@
+package ru.mirea.practice.s23k0623.prog2;
+
+public class LinkedQueue implements Queue {
+ private static class Node {
+ T data;
+ Node next;
+
+ Node(T data) {
+ this.data = data;
+ }
+ }
+
+ private Node head;
+ private Node tail;
+ private int size = 0;
+
+ @Override
+ public void enqueue(T element) {
+ if (element == null) {
+ throw new NullPointerException("Element cannot be null");
+ }
+ Node newNode = new Node<>(element);
+ if (tail != null) {
+ tail.next = newNode;
+ }
+ tail = newNode;
+ if (head == null) {
+ head = tail;
+ }
+ size++;
+ }
+
+ @Override
+ public T element() {
+ if (isEmpty()) {
+ throw new IllegalStateException("Queue is empty");
+ }
+ return head.data;
+ }
+
+ @Override
+ public T dequeue() {
+ if (isEmpty()) {
+ throw new IllegalStateException("Queue is empty");
+ }
+ final T result = head.data;
+ head = head.next;
+ if (head == null) {
+ tail = null;
+ }
+ size--;
+ return result;
+ }
+
+ @Override
+ public int size() {
+ return size;
+ }
+
+ @Override
+ public boolean isEmpty() {
+ return size == 0;
+ }
+
+ @Override
+ public void clear() {
+ head = null;
+ tail = null;
+ size = 0;
+ }
+}
diff --git a/students/23K0623/23K0623-p023/src/main/java/ru/mirea/practice/s23k0623/prog2/Queue.java b/students/23K0623/23K0623-p023/src/main/java/ru/mirea/practice/s23k0623/prog2/Queue.java
new file mode 100644
index 000000000..0c7a940d0
--- /dev/null
+++ b/students/23K0623/23K0623-p023/src/main/java/ru/mirea/practice/s23k0623/prog2/Queue.java
@@ -0,0 +1,15 @@
+package ru.mirea.practice.s23k0623.prog2;
+
+public interface Queue {
+ void enqueue(T element);
+
+ T element();
+
+ T dequeue();
+
+ int size();
+
+ boolean isEmpty();
+
+ void clear();
+}
diff --git a/students/23K0623/23K0623-p023/src/main/java/ru/mirea/practice/s23k0623/prog2/Test.java b/students/23K0623/23K0623-p023/src/main/java/ru/mirea/practice/s23k0623/prog2/Test.java
new file mode 100644
index 000000000..186bbe7a0
--- /dev/null
+++ b/students/23K0623/23K0623-p023/src/main/java/ru/mirea/practice/s23k0623/prog2/Test.java
@@ -0,0 +1,27 @@
+package ru.mirea.practice.s23k0623.prog2;
+
+
+public abstract class Test {
+ public static void main(String[] args) {
+ arrayQueueTest();
+ }
+
+ static void arrayQueueTest() {
+ ArrayQueue queue = new ArrayQueue();
+ queue.enqueue(1);
+ queue.enqueue(2);
+ System.out.println(queue.dequeue()); // 1
+ System.out.println(queue.size()); // 1
+ System.out.println(queue.isEmpty()); // false
+ queue.clear();
+ System.out.println(queue.isEmpty()); // true
+ }
+
+ static void testLinkesQueue() {
+ LinkedQueue queue = new LinkedQueue();
+ queue.enqueue(1);
+ queue.enqueue(2);
+ System.out.println(queue.dequeue()); // 1
+ System.out.println(queue.size()); // 1
+ }
+}
diff --git a/students/23K0623/23K0623-p023/src/main/java/ru/mirea/practice/s23k0623/prog3/Add.java b/students/23K0623/23K0623-p023/src/main/java/ru/mirea/practice/s23k0623/prog3/Add.java
new file mode 100644
index 000000000..7a62140d8
--- /dev/null
+++ b/students/23K0623/23K0623-p023/src/main/java/ru/mirea/practice/s23k0623/prog3/Add.java
@@ -0,0 +1,12 @@
+package ru.mirea.practice.s23k0623.prog3;
+
+class Add extends BinaryOperation {
+ public Add(Expression left, Expression right) {
+ super(left, right);
+ }
+
+ @Override
+ public double evaluate(double x) {
+ return left.evaluate(x) + right.evaluate(x);
+ }
+}
diff --git a/students/23K0623/23K0623-p023/src/main/java/ru/mirea/practice/s23k0623/prog3/BinaryOperation.java b/students/23K0623/23K0623-p023/src/main/java/ru/mirea/practice/s23k0623/prog3/BinaryOperation.java
new file mode 100644
index 000000000..3561423fb
--- /dev/null
+++ b/students/23K0623/23K0623-p023/src/main/java/ru/mirea/practice/s23k0623/prog3/BinaryOperation.java
@@ -0,0 +1,11 @@
+package ru.mirea.practice.s23k0623.prog3;
+
+abstract class BinaryOperation implements Expression {
+ protected final Expression left;
+ protected final Expression right;
+
+ public BinaryOperation(Expression left, Expression right) {
+ this.left = left;
+ this.right = right;
+ }
+}
diff --git a/students/23K0623/23K0623-p023/src/main/java/ru/mirea/practice/s23k0623/prog3/Const.java b/students/23K0623/23K0623-p023/src/main/java/ru/mirea/practice/s23k0623/prog3/Const.java
new file mode 100644
index 000000000..93c9fef79
--- /dev/null
+++ b/students/23K0623/23K0623-p023/src/main/java/ru/mirea/practice/s23k0623/prog3/Const.java
@@ -0,0 +1,14 @@
+package ru.mirea.practice.s23k0623.prog3;
+
+class Const implements Expression {
+ private final double value;
+
+ public Const(double value) {
+ this.value = value;
+ }
+
+ @Override
+ public double evaluate(double x) {
+ return value;
+ }
+}
diff --git a/students/23K0623/23K0623-p023/src/main/java/ru/mirea/practice/s23k0623/prog3/Divide.java b/students/23K0623/23K0623-p023/src/main/java/ru/mirea/practice/s23k0623/prog3/Divide.java
new file mode 100644
index 000000000..7ad256e9c
--- /dev/null
+++ b/students/23K0623/23K0623-p023/src/main/java/ru/mirea/practice/s23k0623/prog3/Divide.java
@@ -0,0 +1,12 @@
+package ru.mirea.practice.s23k0623.prog3;
+
+class Divide extends BinaryOperation {
+ public Divide(Expression left, Expression right) {
+ super(left, right);
+ }
+
+ @Override
+ public double evaluate(double x) {
+ return left.evaluate(x) / right.evaluate(x);
+ }
+}
diff --git a/students/23K0623/23K0623-p023/src/main/java/ru/mirea/practice/s23k0623/prog3/Expression.java b/students/23K0623/23K0623-p023/src/main/java/ru/mirea/practice/s23k0623/prog3/Expression.java
new file mode 100644
index 000000000..eb3193879
--- /dev/null
+++ b/students/23K0623/23K0623-p023/src/main/java/ru/mirea/practice/s23k0623/prog3/Expression.java
@@ -0,0 +1,5 @@
+package ru.mirea.practice.s23k0623.prog3;
+
+interface Expression {
+ double evaluate(double x);
+}
diff --git a/students/23K0623/23K0623-p023/src/main/java/ru/mirea/practice/s23k0623/prog3/Main.java b/students/23K0623/23K0623-p023/src/main/java/ru/mirea/practice/s23k0623/prog3/Main.java
new file mode 100644
index 000000000..b201092a6
--- /dev/null
+++ b/students/23K0623/23K0623-p023/src/main/java/ru/mirea/practice/s23k0623/prog3/Main.java
@@ -0,0 +1,31 @@
+package ru.mirea.practice.s23k0623.prog3;
+
+public abstract class Main {
+ public static void main(String[] args) {
+ if (args.length < 1) {
+ System.out.println("Введите значение x, значение по умолчанию х = 1");
+
+ }
+
+ try {
+ double x;
+ if (args.length < 1) {
+ x = 1;
+ } else {
+ x = Double.parseDouble(args[0]);
+ }
+ Expression expr = new Add(
+ new Subtract(
+ new Multiply(new Variable("x"), new Variable("x")),
+ new Multiply(new Const(2), new Variable("x"))
+ ),
+ new Const(1)
+ );
+
+ double result = expr.evaluate(x);
+ System.out.println("Результат: " + result);
+ } catch (NumberFormatException e) {
+ System.out.println("Некорректный ввод: введите числовое значение для x.");
+ }
+ }
+}
diff --git a/students/23K0623/23K0623-p023/src/main/java/ru/mirea/practice/s23k0623/prog3/Multiply.java b/students/23K0623/23K0623-p023/src/main/java/ru/mirea/practice/s23k0623/prog3/Multiply.java
new file mode 100644
index 000000000..c0d7a4c97
--- /dev/null
+++ b/students/23K0623/23K0623-p023/src/main/java/ru/mirea/practice/s23k0623/prog3/Multiply.java
@@ -0,0 +1,12 @@
+package ru.mirea.practice.s23k0623.prog3;
+
+class Multiply extends BinaryOperation {
+ public Multiply(Expression left, Expression right) {
+ super(left, right);
+ }
+
+ @Override
+ public double evaluate(double x) {
+ return left.evaluate(x) * right.evaluate(x);
+ }
+}
diff --git a/students/23K0623/23K0623-p023/src/main/java/ru/mirea/practice/s23k0623/prog3/Subtract.java b/students/23K0623/23K0623-p023/src/main/java/ru/mirea/practice/s23k0623/prog3/Subtract.java
new file mode 100644
index 000000000..b5ad283dc
--- /dev/null
+++ b/students/23K0623/23K0623-p023/src/main/java/ru/mirea/practice/s23k0623/prog3/Subtract.java
@@ -0,0 +1,12 @@
+package ru.mirea.practice.s23k0623.prog3;
+
+class Subtract extends BinaryOperation {
+ public Subtract(Expression left, Expression right) {
+ super(left, right);
+ }
+
+ @Override
+ public double evaluate(double x) {
+ return left.evaluate(x) - right.evaluate(x);
+ }
+}
diff --git a/students/23K0623/23K0623-p023/src/main/java/ru/mirea/practice/s23k0623/prog3/Variable.java b/students/23K0623/23K0623-p023/src/main/java/ru/mirea/practice/s23k0623/prog3/Variable.java
new file mode 100644
index 000000000..12a2a7719
--- /dev/null
+++ b/students/23K0623/23K0623-p023/src/main/java/ru/mirea/practice/s23k0623/prog3/Variable.java
@@ -0,0 +1,15 @@
+package ru.mirea.practice.s23k0623.prog3;
+
+class Variable implements Expression {
+ @SuppressWarnings("PMD.SingularField")
+ private final String name;
+
+ public Variable(String name) {
+ this.name = name;
+ }
+
+ @Override
+ public double evaluate(double x) {
+ return x;
+ }
+}
diff --git a/students/23K0623/23K0623-p023/src/main/java/ru/mirea/practice/s23k0623/prog4/Add.java b/students/23K0623/23K0623-p023/src/main/java/ru/mirea/practice/s23k0623/prog4/Add.java
new file mode 100644
index 000000000..c88e82f8a
--- /dev/null
+++ b/students/23K0623/23K0623-p023/src/main/java/ru/mirea/practice/s23k0623/prog4/Add.java
@@ -0,0 +1,18 @@
+package ru.mirea.practice.s23k0623.prog4;
+
+class Add extends BinaryOperation {
+ public Add(TripleExpression left, TripleExpression right) {
+ super(left, right);
+ }
+
+ @Override
+ public int evaluate(int x, int y, int z) throws EvaluationException {
+ int leftValue = left.evaluate(x, y, z);
+ int rightValue = right.evaluate(x, y, z);
+ if (rightValue > 0 && leftValue > Integer.MAX_VALUE - rightValue
+ || rightValue < 0 && leftValue < Integer.MIN_VALUE - rightValue) {
+ throw new EvaluationException("overflow");
+ }
+ return leftValue + rightValue;
+ }
+}
diff --git a/students/23K0623/23K0623-p023/src/main/java/ru/mirea/practice/s23k0623/prog4/BinaryOperation.java b/students/23K0623/23K0623-p023/src/main/java/ru/mirea/practice/s23k0623/prog4/BinaryOperation.java
new file mode 100644
index 000000000..82c4be3b7
--- /dev/null
+++ b/students/23K0623/23K0623-p023/src/main/java/ru/mirea/practice/s23k0623/prog4/BinaryOperation.java
@@ -0,0 +1,11 @@
+package ru.mirea.practice.s23k0623.prog4;
+
+abstract class BinaryOperation implements TripleExpression {
+ protected final TripleExpression left;
+ protected final TripleExpression right;
+
+ public BinaryOperation(TripleExpression left, TripleExpression right) {
+ this.left = left;
+ this.right = right;
+ }
+}
diff --git a/students/23K0623/23K0623-p023/src/main/java/ru/mirea/practice/s23k0623/prog4/Const.java b/students/23K0623/23K0623-p023/src/main/java/ru/mirea/practice/s23k0623/prog4/Const.java
new file mode 100644
index 000000000..97592ce59
--- /dev/null
+++ b/students/23K0623/23K0623-p023/src/main/java/ru/mirea/practice/s23k0623/prog4/Const.java
@@ -0,0 +1,14 @@
+package ru.mirea.practice.s23k0623.prog4;
+
+class Const implements TripleExpression {
+ private final int value;
+
+ public Const(int value) {
+ this.value = value;
+ }
+
+ @Override
+ public int evaluate(int x, int y, int z) {
+ return value;
+ }
+}
diff --git a/students/23K0623/23K0623-p023/src/main/java/ru/mirea/practice/s23k0623/prog4/Divide.java b/students/23K0623/23K0623-p023/src/main/java/ru/mirea/practice/s23k0623/prog4/Divide.java
new file mode 100644
index 000000000..718eb5e59
--- /dev/null
+++ b/students/23K0623/23K0623-p023/src/main/java/ru/mirea/practice/s23k0623/prog4/Divide.java
@@ -0,0 +1,20 @@
+package ru.mirea.practice.s23k0623.prog4;
+
+class Divide extends BinaryOperation {
+ public Divide(TripleExpression left, TripleExpression right) {
+ super(left, right);
+ }
+
+ @Override
+ public int evaluate(int x, int y, int z) throws EvaluationException {
+ int leftValue = left.evaluate(x, y, z);
+ int rightValue = right.evaluate(x, y, z);
+ if (rightValue == 0) {
+ throw new EvaluationException("division by zero");
+ }
+ if (leftValue == Integer.MIN_VALUE && rightValue == -1) {
+ throw new EvaluationException("overflow");
+ }
+ return leftValue / rightValue;
+ }
+}
diff --git a/students/23K0623/23K0623-p023/src/main/java/ru/mirea/practice/s23k0623/prog4/EvaluationException.java b/students/23K0623/23K0623-p023/src/main/java/ru/mirea/practice/s23k0623/prog4/EvaluationException.java
new file mode 100644
index 000000000..d0b13aab3
--- /dev/null
+++ b/students/23K0623/23K0623-p023/src/main/java/ru/mirea/practice/s23k0623/prog4/EvaluationException.java
@@ -0,0 +1,7 @@
+package ru.mirea.practice.s23k0623.prog4;
+
+class EvaluationException extends Exception {
+ public EvaluationException(String message) {
+ super(message);
+ }
+}
diff --git a/students/23K0623/23K0623-p023/src/main/java/ru/mirea/practice/s23k0623/prog4/ExpressionParser.java b/students/23K0623/23K0623-p023/src/main/java/ru/mirea/practice/s23k0623/prog4/ExpressionParser.java
new file mode 100644
index 000000000..5c730c0c4
--- /dev/null
+++ b/students/23K0623/23K0623-p023/src/main/java/ru/mirea/practice/s23k0623/prog4/ExpressionParser.java
@@ -0,0 +1,73 @@
+package ru.mirea.practice.s23k0623.prog4;
+
+class ExpressionParser {
+ private String expression;
+ private int index;
+
+ public TripleExpression parse(String expression) {
+ this.expression = expression.replaceAll("\\s+", "");
+ this.index = 0;
+ return parseExpression();
+ }
+
+ private TripleExpression parseExpression() {
+ TripleExpression result = parseTerm();
+ while (index < expression.length()) {
+ char operator = expression.charAt(index);
+ if (operator == '+' || operator == '-') {
+ index++;
+ TripleExpression right = parseTerm();
+ result = (operator == '+') ? new Add(result, right) : new Subtract(result, right);
+ } else {
+ break;
+ }
+ }
+ return result;
+ }
+
+ private TripleExpression parseTerm() {
+ TripleExpression result = parseFactor();
+ while (index < expression.length()) {
+ char operator = expression.charAt(index);
+ if (operator == '*' || operator == '/') {
+ index++;
+ TripleExpression right = parseFactor();
+ result = (operator == '*') ? new Multiply(result, right) : new Divide(result, right);
+ } else {
+ break;
+ }
+ }
+ return result;
+ }
+
+ private TripleExpression parseFactor() {
+ if (expression.charAt(index) == '-') {
+ index++;
+ return new Negate(parseFactor());
+ } else if (expression.charAt(index) == '(') {
+ index++;
+ TripleExpression result = parseExpression();
+ if (expression.charAt(index) == ')') {
+ index++;
+ } else {
+ throw new IllegalArgumentException("Expected closing parenthesis");
+ }
+ return result;
+ } else if (Character.isDigit(expression.charAt(index))) {
+ int start = index;
+ while (index < expression.length() && Character.isDigit(expression.charAt(index))) {
+ index++;
+ }
+ int value = Integer.parseInt(expression.substring(start, index));
+ return new Const(value);
+ } else if (Character.isLetter(expression.charAt(index))) {
+ StringBuilder varName = new StringBuilder();
+ while (index < expression.length() && Character.isLetter(expression.charAt(index))) {
+ varName.append(expression.charAt(index++));
+ }
+ return new Variable(varName.toString());
+ } else {
+ throw new IllegalArgumentException("Unexpected character: " + expression.charAt(index));
+ }
+ }
+}
diff --git a/students/23K0623/23K0623-p023/src/main/java/ru/mirea/practice/s23k0623/prog4/Main.java b/students/23K0623/23K0623-p023/src/main/java/ru/mirea/practice/s23k0623/prog4/Main.java
new file mode 100644
index 000000000..0d9cf6005
--- /dev/null
+++ b/students/23K0623/23K0623-p023/src/main/java/ru/mirea/practice/s23k0623/prog4/Main.java
@@ -0,0 +1,17 @@
+package ru.mirea.practice.s23k0623.prog4;
+
+public abstract class Main {
+ public static void main(String[] args) {
+ ExpressionParser parser = new ExpressionParser();
+ TripleExpression expression = parser.parse("1000000 * x * x * x * x * x / (x - 1)");
+
+ for (int x = 0; x <= 10; x++) {
+ try {
+ int result = expression.evaluate(x, 0, 0);
+ System.out.println(x + " " + result);
+ } catch (EvaluationException e) {
+ System.out.println(x + " " + e.getMessage());
+ }
+ }
+ }
+}
diff --git a/students/23K0623/23K0623-p023/src/main/java/ru/mirea/practice/s23k0623/prog4/Multiply.java b/students/23K0623/23K0623-p023/src/main/java/ru/mirea/practice/s23k0623/prog4/Multiply.java
new file mode 100644
index 000000000..f2dd343f8
--- /dev/null
+++ b/students/23K0623/23K0623-p023/src/main/java/ru/mirea/practice/s23k0623/prog4/Multiply.java
@@ -0,0 +1,20 @@
+package ru.mirea.practice.s23k0623.prog4;
+
+class Multiply extends BinaryOperation {
+ public Multiply(TripleExpression left, TripleExpression right) {
+ super(left, right);
+ }
+
+ @Override
+ public int evaluate(int x, int y, int z) throws EvaluationException {
+ int leftValue = left.evaluate(x, y, z);
+ int rightValue = right.evaluate(x, y, z);
+ if (leftValue > 0 && rightValue > 0 && leftValue > Integer.MAX_VALUE / rightValue
+ || leftValue > 0 && rightValue < 0 && rightValue < Integer.MIN_VALUE / leftValue
+ || leftValue < 0 && rightValue > 0 && leftValue < Integer.MIN_VALUE / rightValue
+ || leftValue < 0 && rightValue < 0 && leftValue < Integer.MAX_VALUE / rightValue) {
+ throw new EvaluationException("overflow");
+ }
+ return leftValue * rightValue;
+ }
+}
diff --git a/students/23K0623/23K0623-p023/src/main/java/ru/mirea/practice/s23k0623/prog4/Negate.java b/students/23K0623/23K0623-p023/src/main/java/ru/mirea/practice/s23k0623/prog4/Negate.java
new file mode 100644
index 000000000..f857b46f0
--- /dev/null
+++ b/students/23K0623/23K0623-p023/src/main/java/ru/mirea/practice/s23k0623/prog4/Negate.java
@@ -0,0 +1,18 @@
+package ru.mirea.practice.s23k0623.prog4;
+
+class Negate implements TripleExpression {
+ private final TripleExpression expression;
+
+ public Negate(TripleExpression expression) {
+ this.expression = expression;
+ }
+
+ @Override
+ public int evaluate(int x, int y, int z) throws EvaluationException {
+ int value = expression.evaluate(x, y, z);
+ if (value == Integer.MIN_VALUE) {
+ throw new EvaluationException("overflow");
+ }
+ return -value;
+ }
+}
diff --git a/students/23K0623/23K0623-p023/src/main/java/ru/mirea/practice/s23k0623/prog4/Subtract.java b/students/23K0623/23K0623-p023/src/main/java/ru/mirea/practice/s23k0623/prog4/Subtract.java
new file mode 100644
index 000000000..9c800a7b3
--- /dev/null
+++ b/students/23K0623/23K0623-p023/src/main/java/ru/mirea/practice/s23k0623/prog4/Subtract.java
@@ -0,0 +1,18 @@
+package ru.mirea.practice.s23k0623.prog4;
+
+class Subtract extends BinaryOperation {
+ public Subtract(TripleExpression left, TripleExpression right) {
+ super(left, right);
+ }
+
+ @Override
+ public int evaluate(int x, int y, int z) throws EvaluationException {
+ int leftValue = left.evaluate(x, y, z);
+ int rightValue = right.evaluate(x, y, z);
+ if (rightValue < 0 && leftValue > Integer.MAX_VALUE + rightValue
+ || rightValue > 0 && leftValue < Integer.MIN_VALUE + rightValue) {
+ throw new EvaluationException("overflow");
+ }
+ return leftValue - rightValue;
+ }
+}
diff --git a/students/23K0623/23K0623-p023/src/main/java/ru/mirea/practice/s23k0623/prog4/TripleExpression.java b/students/23K0623/23K0623-p023/src/main/java/ru/mirea/practice/s23k0623/prog4/TripleExpression.java
new file mode 100644
index 000000000..12eb14d1a
--- /dev/null
+++ b/students/23K0623/23K0623-p023/src/main/java/ru/mirea/practice/s23k0623/prog4/TripleExpression.java
@@ -0,0 +1,5 @@
+package ru.mirea.practice.s23k0623.prog4;
+
+interface TripleExpression {
+ int evaluate(int x, int y, int z) throws EvaluationException;
+}
diff --git a/students/23K0623/23K0623-p023/src/main/java/ru/mirea/practice/s23k0623/prog4/Variable.java b/students/23K0623/23K0623-p023/src/main/java/ru/mirea/practice/s23k0623/prog4/Variable.java
new file mode 100644
index 000000000..f7b4df34c
--- /dev/null
+++ b/students/23K0623/23K0623-p023/src/main/java/ru/mirea/practice/s23k0623/prog4/Variable.java
@@ -0,0 +1,28 @@
+package ru.mirea.practice.s23k0623.prog4;
+
+class Variable implements TripleExpression {
+ private final String name;
+
+ public Variable(String name) {
+ this.name = name;
+ }
+
+ @Override
+ public int evaluate(int x, int y, int z) {
+ int result;
+ switch (name) {
+ case "x":
+ result = x;
+ break;
+ case "y":
+ result = y;
+ break;
+ case "z":
+ result = z;
+ break;
+ default:
+ throw new IllegalArgumentException("Unknown variable: " + name);
+ }
+ return result;
+ }
+}
diff --git a/students/23K0623/23K0623-p024/pom.xml b/students/23K0623/23K0623-p024/pom.xml
new file mode 100644
index 000000000..5e3f332b8
--- /dev/null
+++ b/students/23K0623/23K0623-p024/pom.xml
@@ -0,0 +1,13 @@
+
+
+ 4.0.0
+
+ 23K0623
+ ru.mirea.practice
+ 2024.1
+ ../pom.xml
+
+ 23K0623-p024
+ Массивы
+
diff --git a/students/23K0623/23K0623-p024/src/main/java/ru/mirea/practice/s23k0623/Complex.java b/students/23K0623/23K0623-p024/src/main/java/ru/mirea/practice/s23k0623/Complex.java
new file mode 100644
index 000000000..1c4045eab
--- /dev/null
+++ b/students/23K0623/23K0623-p024/src/main/java/ru/mirea/practice/s23k0623/Complex.java
@@ -0,0 +1,25 @@
+package ru.mirea.practice.s23k0623;
+
+public class Complex {
+ private int real;
+ private int imaginary;
+
+ public Complex(int real, int imaginary) {
+ this.real = real;
+ this.imaginary = imaginary;
+ }
+
+ public int getReal() {
+ return real;
+ }
+
+ public int getImaginary() {
+ return imaginary;
+ }
+
+ @Override
+ public String toString() {
+ return real + " + " + imaginary + "i";
+ }
+}
+
diff --git a/students/23K0623/23K0623-p024/src/main/java/ru/mirea/practice/s23k0623/ComplexAbstractFactory.java b/students/23K0623/23K0623-p024/src/main/java/ru/mirea/practice/s23k0623/ComplexAbstractFactory.java
new file mode 100644
index 000000000..0f0d9ce2f
--- /dev/null
+++ b/students/23K0623/23K0623-p024/src/main/java/ru/mirea/practice/s23k0623/ComplexAbstractFactory.java
@@ -0,0 +1,9 @@
+package ru.mirea.practice.s23k0623;
+
+public interface ComplexAbstractFactory {
+
+ Complex createComplex();
+
+ Complex createComplex(int real, int imaginary);
+}
+
diff --git a/students/23K0623/23K0623-p024/src/main/java/ru/mirea/practice/s23k0623/ConcreteFactory.java b/students/23K0623/23K0623-p024/src/main/java/ru/mirea/practice/s23k0623/ConcreteFactory.java
new file mode 100644
index 000000000..65b536bfa
--- /dev/null
+++ b/students/23K0623/23K0623-p024/src/main/java/ru/mirea/practice/s23k0623/ConcreteFactory.java
@@ -0,0 +1,14 @@
+package ru.mirea.practice.s23k0623;
+
+public class ConcreteFactory implements ComplexAbstractFactory {
+
+ @Override
+ public Complex createComplex() {
+ return new Complex(0, 0);
+ }
+
+ @Override
+ public Complex createComplex(int real, int imaginary) {
+ return new Complex(real, imaginary);
+ }
+}
diff --git a/students/23K0623/23K0623-p024/src/main/java/ru/mirea/practice/s23k0623/Test.java b/students/23K0623/23K0623-p024/src/main/java/ru/mirea/practice/s23k0623/Test.java
new file mode 100644
index 000000000..3a9ede092
--- /dev/null
+++ b/students/23K0623/23K0623-p024/src/main/java/ru/mirea/practice/s23k0623/Test.java
@@ -0,0 +1,14 @@
+package ru.mirea.practice.s23k0623;
+
+public abstract class Test {
+ public static void main(String[] args) {
+ ComplexAbstractFactory factory = new ConcreteFactory();
+
+ Complex defaultComplex = factory.createComplex();
+ System.out.println("Default complex number: " + defaultComplex);
+
+ Complex customComplex = factory.createComplex(7, 2);
+ System.out.println("Custom complex number: " + customComplex);
+ }
+}
+
diff --git a/students/23K0623/23K0623-p025/pom.xml b/students/23K0623/23K0623-p025/pom.xml
new file mode 100644
index 000000000..ab8eff802
--- /dev/null
+++ b/students/23K0623/23K0623-p025/pom.xml
@@ -0,0 +1,13 @@
+
+
+ 4.0.0
+
+ 23K0623
+ ru.mirea.practice
+ 2024.1
+ ../pom.xml
+
+ 23K0623-p025
+ Массивы
+
diff --git a/students/23K0623/23K0623-p025/src/main/java/ru/mirea/practice/s23k0623/Main.java b/students/23K0623/23K0623-p025/src/main/java/ru/mirea/practice/s23k0623/Main.java
new file mode 100644
index 000000000..2efbaad67
--- /dev/null
+++ b/students/23K0623/23K0623-p025/src/main/java/ru/mirea/practice/s23k0623/Main.java
@@ -0,0 +1,12 @@
+package ru.mirea.practice.s23k0623;
+
+public final class Main {
+
+ private Main() {
+
+ }
+
+ public static void main(String[] args) {
+ System.out.println("Двадцать пятая практическая работа!");
+ }
+}
diff --git a/students/23K0623/23K0623-p025/src/main/java/ru/mirea/practice/s23k0623/task4/Main.java b/students/23K0623/23K0623-p025/src/main/java/ru/mirea/practice/s23k0623/task4/Main.java
new file mode 100644
index 000000000..63d032c82
--- /dev/null
+++ b/students/23K0623/23K0623-p025/src/main/java/ru/mirea/practice/s23k0623/task4/Main.java
@@ -0,0 +1,17 @@
+package ru.mirea.practice.s23k0623.task4;
+
+import java.util.Scanner;
+import java.util.regex.Pattern;
+
+public abstract class Main {
+ public static void main(String[] args) {
+ Pattern pattern = Pattern.compile("([a-zA-Z.\\d])+@(([a-z]+\\.[a-z]+)|[a-z]+)");
+ String input;
+ try (Scanner scanner = new Scanner(System.in)) {
+ input = scanner.nextLine();
+ }
+ if (pattern.matcher(input).matches()) {
+ System.out.println("Input string is a valid email address");
+ }
+ }
+}
diff --git a/students/23K0623/23K0623-p025/src/main/java/ru/mirea/practice/s23k0623/task5/Main.java b/students/23K0623/23K0623-p025/src/main/java/ru/mirea/practice/s23k0623/task5/Main.java
new file mode 100644
index 000000000..d6ff29159
--- /dev/null
+++ b/students/23K0623/23K0623-p025/src/main/java/ru/mirea/practice/s23k0623/task5/Main.java
@@ -0,0 +1,17 @@
+package ru.mirea.practice.s23k0623.task5;
+
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+
+public abstract class Main {
+ public static void main(String[] args) {
+ String text = "Цены: 25.98 USD, 44 ERR, 0.004 EU, 10.00 RUB, 99.95 EUR";
+ Pattern pattern = Pattern.compile("\\b\\d{1,3}(\\.\\d{1,2})? (USD|RUB|EUR)\\b");
+ Matcher matcher = pattern.matcher(text);
+
+ System.out.println("Цены в USD, RUB, EUR:");
+ while (matcher.find()) {
+ System.out.println(matcher.group());
+ }
+ }
+}
diff --git a/students/23K0623/23K0623-p026/pom.xml b/students/23K0623/23K0623-p026/pom.xml
new file mode 100644
index 000000000..22c39e3cc
--- /dev/null
+++ b/students/23K0623/23K0623-p026/pom.xml
@@ -0,0 +1,13 @@
+
+
+ 4.0.0
+
+ 23K0623
+ ru.mirea.practice
+ 2024.1
+ ../pom.xml
+
+ 23K0623-p026
+ Массивы
+
diff --git a/students/23K0623/23K0623-p026/src/main/java/ru/mirea/practice/s23k0623/Main.java b/students/23K0623/23K0623-p026/src/main/java/ru/mirea/practice/s23k0623/Main.java
new file mode 100644
index 000000000..941b40f62
--- /dev/null
+++ b/students/23K0623/23K0623-p026/src/main/java/ru/mirea/practice/s23k0623/Main.java
@@ -0,0 +1,12 @@
+package ru.mirea.practice.s23k0623;
+
+public final class Main {
+
+ private Main() {
+
+ }
+
+ public static void main(String[] args) {
+ System.out.println("Двадцать шестая практическая работа!");
+ }
+}
diff --git a/students/23K0623/23K0623-p026/src/main/java/ru/mirea/practice/s23k0623/task1/Main.java b/students/23K0623/23K0623-p026/src/main/java/ru/mirea/practice/s23k0623/task1/Main.java
new file mode 100644
index 000000000..cb720c22a
--- /dev/null
+++ b/students/23K0623/23K0623-p026/src/main/java/ru/mirea/practice/s23k0623/task1/Main.java
@@ -0,0 +1,27 @@
+package ru.mirea.practice.s23k0623.task1;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Stack;
+
+public abstract class Main {
+ public static List reverse(List list) {
+ Stack stack = new Stack<>();
+ int i = 0;
+ while (i < list.size() / 2) {
+ stack.push(list.get(i));
+ stack.push(list.get(list.size() - i - 1));
+ list.set(i, stack.pop());
+ list.set(list.size() - i - 1, stack.pop());
+ i++;
+ }
+ return list;
+ }
+
+ public static void main(String[] args) {
+ ArrayList integers = new ArrayList<>(List.of(new Integer[]{1, 2, 3, 4, 5, 6}));
+ System.out.println(integers);
+ reverse(integers);
+ System.out.println(integers);
+ }
+}
diff --git a/students/23K0623/23K0623-p026/src/main/java/ru/mirea/practice/s23k0623/task2/CustomIterator.java b/students/23K0623/23K0623-p026/src/main/java/ru/mirea/practice/s23k0623/task2/CustomIterator.java
new file mode 100644
index 000000000..1422635e9
--- /dev/null
+++ b/students/23K0623/23K0623-p026/src/main/java/ru/mirea/practice/s23k0623/task2/CustomIterator.java
@@ -0,0 +1,20 @@
+package ru.mirea.practice.s23k0623.task2;
+
+import java.util.Iterator;
+
+public class CustomIterator implements Iterator {
+ Node cursor;
+
+ CustomIterator(CustomList list) {
+ cursor = list.getFirst();
+ }
+
+ public boolean hasNext() {
+ return cursor.getNext() != null;
+ }
+
+ public T next() {
+ cursor = cursor.getNext();
+ return cursor.getData();
+ }
+}
diff --git a/students/23K0623/23K0623-p026/src/main/java/ru/mirea/practice/s23k0623/task2/CustomList.java b/students/23K0623/23K0623-p026/src/main/java/ru/mirea/practice/s23k0623/task2/CustomList.java
new file mode 100644
index 000000000..f05c4f41a
--- /dev/null
+++ b/students/23K0623/23K0623-p026/src/main/java/ru/mirea/practice/s23k0623/task2/CustomList.java
@@ -0,0 +1,39 @@
+package ru.mirea.practice.s23k0623.task2;
+
+import java.util.Iterator;
+
+public class CustomList implements Iterable {
+ private Node first;
+ private final int size;
+
+ public CustomList() {
+ first = null;
+ size = 0;
+ }
+
+ public int getSize() {
+ return size;
+ }
+
+ public Node getFirst() {
+ return first;
+ }
+
+ public void add(T elem) {
+ Node node = new Node<>(elem);
+ if (first == null) {
+ first = node;
+ } else {
+ Node curr = first;
+ while (curr.getNext() != null) {
+ curr = curr.getNext();
+ }
+ curr.setNext(node);
+ }
+ }
+
+ @Override
+ public Iterator iterator() {
+ return new CustomIterator<>(this);
+ }
+}
diff --git a/students/23K0623/23K0623-p026/src/main/java/ru/mirea/practice/s23k0623/task2/Node.java b/students/23K0623/23K0623-p026/src/main/java/ru/mirea/practice/s23k0623/task2/Node.java
new file mode 100644
index 000000000..e944ba433
--- /dev/null
+++ b/students/23K0623/23K0623-p026/src/main/java/ru/mirea/practice/s23k0623/task2/Node.java
@@ -0,0 +1,32 @@
+package ru.mirea.practice.s23k0623.task2;
+
+public class Node {
+ private T data;
+ private Node next;
+
+ public Node(T data) {
+ this.data = data;
+ next = null;
+ }
+
+ public T getData() {
+ return data;
+ }
+
+ public void setData(T data) {
+ this.data = data;
+ }
+
+ public Node getNext() {
+ return next;
+ }
+
+ public void setNext(Node next) {
+ this.next = next;
+ }
+
+ @Override
+ public String toString() {
+ return data.toString();
+ }
+}
diff --git a/students/23K0623/23K0623-p027/pom.xml b/students/23K0623/23K0623-p027/pom.xml
new file mode 100644
index 000000000..304282c1b
--- /dev/null
+++ b/students/23K0623/23K0623-p027/pom.xml
@@ -0,0 +1,13 @@
+
+
+ 4.0.0
+
+ 23K0623
+ ru.mirea.practice
+ 2024.1
+ ../pom.xml
+
+ 23K0623-p027
+ Массивы
+
diff --git a/students/23K0623/23K0623-p027/src/main/java/ru/mirea/practice/s23k0623/Main.java b/students/23K0623/23K0623-p027/src/main/java/ru/mirea/practice/s23k0623/Main.java
new file mode 100644
index 000000000..ada29ad5c
--- /dev/null
+++ b/students/23K0623/23K0623-p027/src/main/java/ru/mirea/practice/s23k0623/Main.java
@@ -0,0 +1,12 @@
+package ru.mirea.practice.s23k0623;
+
+public final class Main {
+
+ private Main() {
+
+ }
+
+ public static void main(String[] args) {
+ System.out.println("Двадцать седьмая практическая работа!");
+ }
+}
diff --git a/students/23K0623/23K0623-p027/src/main/java/ru/mirea/practice/s23k0623/task1/Hashtable.java b/students/23K0623/23K0623-p027/src/main/java/ru/mirea/practice/s23k0623/task1/Hashtable.java
new file mode 100644
index 000000000..a920fd8d3
--- /dev/null
+++ b/students/23K0623/23K0623-p027/src/main/java/ru/mirea/practice/s23k0623/task1/Hashtable.java
@@ -0,0 +1,70 @@
+package ru.mirea.practice.s23k0623.task1;
+
+import java.util.LinkedList;
+
+class Hashtable {
+ 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 Hashtable(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/23K0623/23K0623-p027/src/main/java/ru/mirea/practice/s23k0623/task1/Test.java b/students/23K0623/23K0623-p027/src/main/java/ru/mirea/practice/s23k0623/task1/Test.java
new file mode 100644
index 000000000..857aec0d3
--- /dev/null
+++ b/students/23K0623/23K0623-p027/src/main/java/ru/mirea/practice/s23k0623/task1/Test.java
@@ -0,0 +1,31 @@
+package ru.mirea.practice.s23k0623.task1;
+
+public abstract class Test {
+ public static void main(String[] args) {
+ Hashtable hashTable = new Hashtable(10);
+
+ hashTable.add("key1", "value1");
+ hashTable.add("key2", "value2");
+ hashTable.add("key3", "value3");
+ hashTable.add("key4", "value4");
+ hashTable.add("key5", "value5");
+ hashTable.add("key6", "value6");
+ hashTable.add("key7", "value7");
+ hashTable.add("key8", "value8");
+ hashTable.add("key9", "value9");
+ hashTable.add("key10", "value10");
+
+ System.out.println("Содержимое хеш-таблицы:");
+ hashTable.printTable();
+
+ String value = hashTable.lookup("key5");
+ System.out.println("Поиск key5: " + (value != null ? value : "not found"));
+
+ hashTable.delete("key5");
+ System.out.println("После удаления key5:");
+ hashTable.printTable();
+
+ value = hashTable.lookup("key5");
+ System.out.println("Поиск key5 после удаления: " + (value != null ? value : "not found"));
+ }
+}
diff --git a/students/23K0623/23K0623-p028/pom.xml b/students/23K0623/23K0623-p028/pom.xml
new file mode 100644
index 000000000..637aa2feb
--- /dev/null
+++ b/students/23K0623/23K0623-p028/pom.xml
@@ -0,0 +1,13 @@
+
+
+ 4.0.0
+
+ 23K0623
+ ru.mirea.practice
+ 2024.1
+ ../pom.xml
+
+ 23K0623-p028
+ Массивы
+
diff --git a/students/23K0623/23K0623-p028/src/main/java/ru/mirea/practice/s23k0623/Main.java b/students/23K0623/23K0623-p028/src/main/java/ru/mirea/practice/s23k0623/Main.java
new file mode 100644
index 000000000..ada29ad5c
--- /dev/null
+++ b/students/23K0623/23K0623-p028/src/main/java/ru/mirea/practice/s23k0623/Main.java
@@ -0,0 +1,12 @@
+package ru.mirea.practice.s23k0623;
+
+public final class Main {
+
+ private Main() {
+
+ }
+
+ public static void main(String[] args) {
+ System.out.println("Двадцать седьмая практическая работа!");
+ }
+}
diff --git a/students/23K0623/23K0623-p028/src/main/java/ru/mirea/practice/s23k0623/task1/Main.java b/students/23K0623/23K0623-p028/src/main/java/ru/mirea/practice/s23k0623/task1/Main.java
new file mode 100644
index 000000000..3a187d80e
--- /dev/null
+++ b/students/23K0623/23K0623-p028/src/main/java/ru/mirea/practice/s23k0623/task1/Main.java
@@ -0,0 +1,18 @@
+package ru.mirea.practice.s23k0623.task1;
+
+import java.util.HashMap;
+import java.util.Map;
+import java.util.TreeMap;
+
+public abstract class Main {
+ public static void main(String[] args) {
+ Map hashmap = new HashMap<>();
+ hashmap.put(1, 2005);
+ hashmap.put(2, 2012);
+ hashmap.put(3, 2023);
+ hashmap.put(4, 2027);
+ Map treemap = new TreeMap<>(hashmap);
+ System.out.println(hashmap);
+ System.out.println(treemap);
+ }
+}
diff --git a/students/23K0623/23K0623-p028/src/main/java/ru/mirea/practice/s23k0623/task2/Main.java b/students/23K0623/23K0623-p028/src/main/java/ru/mirea/practice/s23k0623/task2/Main.java
new file mode 100644
index 000000000..0ff66527a
--- /dev/null
+++ b/students/23K0623/23K0623-p028/src/main/java/ru/mirea/practice/s23k0623/task2/Main.java
@@ -0,0 +1,57 @@
+package ru.mirea.practice.s23k0623.task2;
+
+
+import java.util.HashMap;
+import java.util.Map;
+
+public abstract class Main {
+
+ 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 nameMap = new HashMap<>();
+ for (String value : map.values()) {
+ if (nameMap.containsKey(value)) {
+ nameMap.put(value, nameMap.get(value) + 1);
+ } else {
+ nameMap.put(value, 1);
+ }
+ }
+
+ int count = 0;
+ int nameCount;
+ for (String name : nameMap.keySet()) {
+ nameCount = nameMap.get(name);
+ if (nameCount > 1) {
+ count += nameCount;
+ }
+ }
+
+ return count;
+ }
+
+ public static int getSameLastNameCount(Map map) {
+ return 0;
+ // Данный по условию тип данных Map не позволяет
+ // содержать ключи с одинаковыми значениями
+ }
+
+ public static void main(String[] args) {
+ Map map = createMap();
+ System.out.println(getSameFirstNameCount(map));
+ System.out.println(getSameLastNameCount(map));
+ }
+}
diff --git a/students/23K0623/23K0623-p029/pom.xml b/students/23K0623/23K0623-p029/pom.xml
new file mode 100644
index 000000000..1c1ab3aea
--- /dev/null
+++ b/students/23K0623/23K0623-p029/pom.xml
@@ -0,0 +1,13 @@
+
+
+ 4.0.0
+
+ 23K0623
+ ru.mirea.practice
+ 2024.1
+ ../pom.xml
+
+ 23K0623-p029
+ Массивы
+
diff --git a/students/23K0623/23K0623-p029/src/main/java/ru/mirea/practice/s23k0623/Main.java b/students/23K0623/23K0623-p029/src/main/java/ru/mirea/practice/s23k0623/Main.java
new file mode 100644
index 000000000..0cd52d51d
--- /dev/null
+++ b/students/23K0623/23K0623-p029/src/main/java/ru/mirea/practice/s23k0623/Main.java
@@ -0,0 +1,12 @@
+package ru.mirea.practice.s23k0623;
+
+public final class Main {
+
+ private Main() {
+
+ }
+
+ public static void main(String[] args) {
+ System.out.println("Двадцать девятая практическая работа!");
+ }
+}
diff --git a/students/23K0623/23K0623-p029/src/main/java/ru/mirea/practice/s23k0623/task1/Main.java b/students/23K0623/23K0623-p029/src/main/java/ru/mirea/practice/s23k0623/task1/Main.java
new file mode 100644
index 000000000..ccded7c3f
--- /dev/null
+++ b/students/23K0623/23K0623-p029/src/main/java/ru/mirea/practice/s23k0623/task1/Main.java
@@ -0,0 +1,35 @@
+package ru.mirea.practice.s23k0623.task1;
+
+
+import java.util.Scanner;
+
+public abstract class Main {
+ public static void main(String[] args) {
+ try (Scanner scanner = new Scanner(System.in)) {
+ int n = scanner.nextInt();
+ if (n == 0) {
+ System.out.println(0);
+ return;
+ }
+
+ int[][] adjacencyMatrix = new int[n][n];
+ for (int i = 0; i < n; i++) {
+ for (int j = 0; j < n; j++) {
+ adjacencyMatrix[i][j] = scanner.nextInt();
+ }
+ }
+
+ int roadCount = 0;
+ for (int i = 0; i < n; i++) {
+ for (int j = i + 1; j < n; j++) {
+ roadCount += adjacencyMatrix[i][j];
+ }
+ }
+
+ System.out.println(roadCount);
+
+ } catch (RuntimeException e) {
+ throw new RuntimeException(e);
+ }
+ }
+}
diff --git a/students/23K0623/23K0623-p029/src/main/java/ru/mirea/practice/s23k0623/task2/Main.java b/students/23K0623/23K0623-p029/src/main/java/ru/mirea/practice/s23k0623/task2/Main.java
new file mode 100644
index 000000000..3a99ed26d
--- /dev/null
+++ b/students/23K0623/23K0623-p029/src/main/java/ru/mirea/practice/s23k0623/task2/Main.java
@@ -0,0 +1,48 @@
+package ru.mirea.practice.s23k0623.task2;
+
+
+import java.io.File;
+import java.io.FileNotFoundException;
+import java.io.PrintWriter;
+import java.util.Scanner;
+
+public abstract class Main {
+ public static void main(String[] args) throws FileNotFoundException {
+ int[][] graph;
+ int n;
+ try (Scanner scanner = new Scanner(new File("students/23K0120/23K0120-p29/src/main/java/ru/mirea/practice/s23k0120/task2/graph.txt"))) {
+ n = scanner.nextInt();
+ graph = new int[n][n];
+ for (int i = 0; i < n; i++) {
+ for (int j = 0; j < n; j++) {
+ graph[i][j] = scanner.nextInt();
+ if (graph[i][j] == 0 && i != j) {
+ graph[i][j] = Integer.MAX_VALUE / 2;
+ }
+ }
+ }
+ }
+
+ for (int k = 0; k < n; k++) {
+ for (int i = 0; i < n; i++) {
+ for (int j = 0; j < n; j++) {
+ graph[i][j] = Math.min(graph[i][j], graph[i][k] + graph[k][j]);
+ }
+ }
+ }
+
+ try (PrintWriter writer = new PrintWriter(new File("students/23K0120/23K0120-p29/src/"
+ + "main/java/ru/mirea/practice/s23k0120/task2/graphShortest.txt"))) {
+ for (int i = 0; i < n; i++) {
+ for (int j = 0; j < n; j++) {
+ if (graph[i][j] == Integer.MAX_VALUE / 2) {
+ writer.print(0 + " ");
+ } else {
+ writer.print(graph[i][j] + " ");
+ }
+ }
+ writer.println();
+ }
+ }
+ }
+}
diff --git a/students/23K0623/23K0623-p029/src/main/java/ru/mirea/practice/s23k0623/task2/graph.txt b/students/23K0623/23K0623-p029/src/main/java/ru/mirea/practice/s23k0623/task2/graph.txt
new file mode 100644
index 000000000..1795f843e
--- /dev/null
+++ b/students/23K0623/23K0623-p029/src/main/java/ru/mirea/practice/s23k0623/task2/graph.txt
@@ -0,0 +1,7 @@
+6
+0 7 9 0 0 14
+7 0 10 15 0 0
+9 10 0 11 0 2
+0 15 11 0 6 0
+0 0 0 6 0 9
+14 0 2 0 9 0
diff --git a/students/23K0623/23K0623-p029/src/main/java/ru/mirea/practice/s23k0623/task2/graphShortest.txt b/students/23K0623/23K0623-p029/src/main/java/ru/mirea/practice/s23k0623/task2/graphShortest.txt
new file mode 100644
index 000000000..59372392a
--- /dev/null
+++ b/students/23K0623/23K0623-p029/src/main/java/ru/mirea/practice/s23k0623/task2/graphShortest.txt
@@ -0,0 +1,6 @@
+0 7 9 20 20 11
+7 0 10 15 21 12
+9 10 0 11 11 2
+20 15 11 0 6 13
+20 21 11 6 0 9
+11 12 2 13 9 0
diff --git a/students/23K0623/23K0623-p030/pom.xml b/students/23K0623/23K0623-p030/pom.xml
new file mode 100644
index 000000000..0197600e3
--- /dev/null
+++ b/students/23K0623/23K0623-p030/pom.xml
@@ -0,0 +1,13 @@
+
+
+ 4.0.0
+
+ 23K0623
+ ru.mirea.practice
+ 2024.1
+ ../pom.xml
+
+ 23K0623-p030
+ Массивы
+
diff --git a/students/23K0623/23K0623-p030/src/main/java/ru/mirea/practice/s23k0623/task1/Test.java b/students/23K0623/23K0623-p030/src/main/java/ru/mirea/practice/s23k0623/task1/Test.java
new file mode 100644
index 000000000..912f670cb
--- /dev/null
+++ b/students/23K0623/23K0623-p030/src/main/java/ru/mirea/practice/s23k0623/task1/Test.java
@@ -0,0 +1,16 @@
+package ru.mirea.practice.s23k0623.task1;
+
+public abstract class Test {
+ public static void main(String[] args) {
+ Tree tree = new Tree();
+ tree.add(6);
+ tree.add(5);
+ tree.add(3);
+ tree.add(4);
+ tree.add(2);
+ tree.add(1);
+ System.out.println("4:" + tree.isVal(4));
+ System.out.println("40:" + tree.isVal(10));
+ tree.sort();
+ }
+}
diff --git a/students/23K0623/23K0623-p030/src/main/java/ru/mirea/practice/s23k0623/task1/Tree.java b/students/23K0623/23K0623-p030/src/main/java/ru/mirea/practice/s23k0623/task1/Tree.java
new file mode 100644
index 000000000..e93bc205e
--- /dev/null
+++ b/students/23K0623/23K0623-p030/src/main/java/ru/mirea/practice/s23k0623/task1/Tree.java
@@ -0,0 +1,64 @@
+package ru.mirea.practice.s23k0623.task1;
+
+public class Tree {
+ static class Node {
+ private int val;
+ private Node left;
+ private Node right;
+
+ Node(int val) {
+ this.val = val;
+ left = right = null;
+ }
+ }
+
+ private Node root;
+
+ void add(int val) {
+ root = addseeker(root, val);
+ }
+
+ private Node addseeker(Node current, int value) {
+ if (current == null) {
+ return new Node(value);
+ }
+ if (value < current.val) {
+ current.left = addseeker(current.left, value);
+ } else if (value > current.val) {
+ current.right = addseeker(current.right, value);
+ }
+
+ return current;
+ }
+
+ boolean isVal(int value) {
+ return valseeker(root, value);
+ }
+
+ private boolean valseeker(Node current, int val) {
+ if (current == null) {
+ return false;
+ }
+ if (val == current.val) {
+ return true;
+ }
+ if (val < current.val) {
+ return valseeker(current.left, val);
+ } else {
+ return valseeker(current.right, val);
+ }
+ }
+
+ void sort() {
+ sorter(root);
+ }
+
+ private void sorter(Node node) {
+ if (node != null) {
+ sorter(node.left);
+ System.out.print(" " + node.val);
+ sorter(node.right);
+ }
+ }
+
+}
diff --git a/students/23K0623/23K0623-p030/src/main/java/ru/mirea/practice/s23k0623/task2/Algae.java b/students/23K0623/23K0623-p030/src/main/java/ru/mirea/practice/s23k0623/task2/Algae.java
new file mode 100644
index 000000000..3f8714057
--- /dev/null
+++ b/students/23K0623/23K0623-p030/src/main/java/ru/mirea/practice/s23k0623/task2/Algae.java
@@ -0,0 +1,67 @@
+package ru.mirea.practice.s23k0623.task2;
+
+import java.util.PriorityQueue;
+
+public class Algae {
+ private String[] codes; // Array to store codes for characters
+
+ public Algae() {
+ // Initialize the codes array for ASCII characters (256 characters)
+ codes = new String[256];
+ }
+
+ public void hasher(Node root, String code) {
+ if (root == null) {
+ return;
+ }
+ if (root.left == null && root.right == null) {
+ codes[root.chara] = code; // Store the code in the array
+ }
+ hasher(root.left, code + "0");
+ hasher(root.right, code + "1");
+ }
+
+ public static Node tree(char[] chars, int[] freqs) {
+ PriorityQueue priorityQueue = new PriorityQueue<>();
+ for (int i = 0; i < chars.length; i++) {
+ priorityQueue.add(new Node(chars[i], freqs[i]));
+ }
+ while (priorityQueue.size() > 1) {
+ Node left = priorityQueue.poll();
+ Node right = priorityQueue.poll();
+ Node newNode = new Node('\0', left.freq + right.freq);
+ newNode.left = left;
+ newNode.right = right;
+ priorityQueue.add(newNode);
+ }
+ return priorityQueue.poll();
+ }
+
+ public String hash(String text) {
+ StringBuilder encodedString = new StringBuilder();
+ for (char character : text.toCharArray()) {
+ String code = codes[character]; // Retrieve the code from the array
+ if (code != null) {
+ encodedString.append(code);
+ }
+ }
+ return encodedString.toString();
+ }
+
+ public static class Node implements Comparable {
+ char chara;
+ int freq;
+ Node left;
+ Node right;
+
+ public Node(char chara, int freq) {
+ this.chara = chara;
+ this.freq = freq;
+ }
+
+ @Override
+ public int compareTo(Node other) {
+ return Integer.compare(this.freq, other.freq);
+ }
+ }
+}
diff --git a/students/23K0623/23K0623-p030/src/main/java/ru/mirea/practice/s23k0623/task2/Node.java b/students/23K0623/23K0623-p030/src/main/java/ru/mirea/practice/s23k0623/task2/Node.java
new file mode 100644
index 000000000..b6c2c1910
--- /dev/null
+++ b/students/23K0623/23K0623-p030/src/main/java/ru/mirea/practice/s23k0623/task2/Node.java
@@ -0,0 +1,20 @@
+package ru.mirea.practice.s23k0623.task2;
+
+public class Node implements Comparable {
+ int freq;
+ char chara;
+ Node left;
+ Node right;
+
+ public Node(char chara, int freq) {
+ this.chara = chara;
+ this.freq = freq;
+ this.left = null;
+ this.right = null;
+ }
+
+ @Override
+ public int compareTo(Node node) {
+ return Integer.compare(this.freq, node.freq);
+ }
+}
diff --git a/students/23K0623/23K0623-p030/src/main/java/ru/mirea/practice/s23k0623/task2/Test.java b/students/23K0623/23K0623-p030/src/main/java/ru/mirea/practice/s23k0623/task2/Test.java
new file mode 100644
index 000000000..1291b3708
--- /dev/null
+++ b/students/23K0623/23K0623-p030/src/main/java/ru/mirea/practice/s23k0623/task2/Test.java
@@ -0,0 +1,15 @@
+package ru.mirea.practice.s23k0623.task2;
+
+public abstract class Test {
+ public static void main(String[] args) {
+ String str = "sand";
+ char[] chars = {'s', 'a', 'n', 'd'};
+ int[] freqs = {1, 1, 1, 1};
+ Algae alg = new Algae();
+ Algae.Node root = Algae.tree(chars, freqs);
+ alg.hasher(root, "");
+ String str1 = alg.hash(str);
+ System.out.println("start: " + str);
+ System.out.println("encoded: " + str1);
+ }
+}
diff --git a/students/23K0623/23K0623-p031/pom.xml b/students/23K0623/23K0623-p031/pom.xml
new file mode 100644
index 000000000..3736256aa
--- /dev/null
+++ b/students/23K0623/23K0623-p031/pom.xml
@@ -0,0 +1,13 @@
+
+
+ 4.0.0
+
+ 23K0623
+ ru.mirea.practice
+ 2024.1
+ ../pom.xml
+
+ 23K0623-p031
+ Массивы
+
diff --git a/students/23K0623/23K0623-p031/src/main/java/ru/mirea/practice/s23k0623/Node.java b/students/23K0623/23K0623-p031/src/main/java/ru/mirea/practice/s23k0623/Node.java
new file mode 100644
index 000000000..aca1e0a92
--- /dev/null
+++ b/students/23K0623/23K0623-p031/src/main/java/ru/mirea/practice/s23k0623/Node.java
@@ -0,0 +1,13 @@
+package ru.mirea.practice.s23k0623;
+
+public class Node {
+ Processor[] procs;
+ Node[] nodes;
+ int cnt;
+
+ public Node() {
+ procs = new Processor[10];
+ nodes = new Node[10];
+ cnt = 0;
+ }
+}
diff --git a/students/23K0623/23K0623-p031/src/main/java/ru/mirea/practice/s23k0623/Processor.java b/students/23K0623/23K0623-p031/src/main/java/ru/mirea/practice/s23k0623/Processor.java
new file mode 100644
index 000000000..109364bca
--- /dev/null
+++ b/students/23K0623/23K0623-p031/src/main/java/ru/mirea/practice/s23k0623/Processor.java
@@ -0,0 +1,21 @@
+package ru.mirea.practice.s23k0623;
+
+public class Processor {
+ int key;
+ String name;
+ double clockFrequency;
+ int cacheSize;
+ double busFrequency;
+ int specInt;
+ int specFp;
+
+ public Processor(int key, String name, double clockFrequency, int cacheSize, double busFrequency, int specInt, int specFp) {
+ this.key = key;
+ this.name = name;
+ this.clockFrequency = clockFrequency;
+ this.cacheSize = cacheSize;
+ this.busFrequency = busFrequency;
+ this.specInt = specInt;
+ this.specFp = specFp;
+ }
+}
diff --git a/students/23K0623/23K0623-p031/src/main/java/ru/mirea/practice/s23k0623/Test.java b/students/23K0623/23K0623-p031/src/main/java/ru/mirea/practice/s23k0623/Test.java
new file mode 100644
index 000000000..5b0b13c3d
--- /dev/null
+++ b/students/23K0623/23K0623-p031/src/main/java/ru/mirea/practice/s23k0623/Test.java
@@ -0,0 +1,48 @@
+package ru.mirea.practice.s23k0623;
+
+import java.util.Scanner;
+
+public abstract class Test {
+ public static void main(String[] args) {
+ final Tree tree = new Tree();
+ Processor[] procs = new Processor[3];
+ procs[0] = new Processor(1,"a",1.0,1,1.0,1,1);
+ procs[1] = new Processor(2,"b",2.0,2,2.0,2,2);
+ procs[2] = new Processor(3,"c",3.0,3,3.0,3,3);
+ tree.add(procs[0]);
+ tree.add(procs[1]);
+ tree.add(procs[2]);
+
+ try (Scanner scanner = new Scanner(System.in)) {
+ String command;
+ while (true) {
+ System.out.print("input: ");
+ command = scanner.nextLine();
+ if ("E".equalsIgnoreCase(command)) {
+ break;
+ }
+ executeCommand(tree, command);
+ }
+ }
+ }
+
+ private static void executeCommand(Tree tree, String command) {
+ switch (command.charAt(0)) {
+ case 'L':
+ tree.print();
+ break;
+ case 'D':
+ tree.delete(10);
+ break;
+ case 'A':
+ tree.add(new Processor(10,"e",10.0,10,10.0,10,10));
+ break;
+ case 'S':
+ tree.saveToFile("aga");
+ break;
+ default:
+ System.out.println("wrong input.");
+ break;
+ }
+ }
+}
diff --git a/students/23K0623/23K0623-p031/src/main/java/ru/mirea/practice/s23k0623/Tree.java b/students/23K0623/23K0623-p031/src/main/java/ru/mirea/practice/s23k0623/Tree.java
new file mode 100644
index 000000000..136c446ab
--- /dev/null
+++ b/students/23K0623/23K0623-p031/src/main/java/ru/mirea/practice/s23k0623/Tree.java
@@ -0,0 +1,148 @@
+package ru.mirea.practice.s23k0623;
+
+import java.io.BufferedWriter;
+import java.io.FileWriter;
+import java.io.IOException;
+import java.util.LinkedList;
+import java.util.Queue;
+
+class Tree {
+ private Node root;
+
+ public Tree() {
+ root = null;
+ }
+
+ public void add(Processor processor) {
+ root = insert(root, processor);
+ }
+
+ private Node insert(Node node, Processor processor) {
+ if (node == null) {
+ Node newNode = new Node();
+ newNode.procs[0] = processor;
+ newNode.cnt = 1;
+ return newNode;
+ }
+ if (node.cnt < 3) {
+ insertInNode(node, processor);
+ return node;
+ }
+ return splitter(node, processor);
+ }
+
+ private void insertInNode(Node node, Processor processor) {
+ int i = node.cnt - 1;
+ while (i >= 0 && processor.key < node.procs[i].key) {
+ node.procs[i + 1] = node.procs[i];
+ i--;
+ }
+ node.procs[i + 1] = processor;
+ node.cnt++;
+ }
+
+ private Node splitter(Node node, Processor processor) {
+ Node newNode = new Node();
+ final Processor mid = node.procs[1];
+ newNode.procs[0] = node.procs[2];
+ newNode.cnt = 1;
+ node.cnt = 1;
+ node.procs[1] = null;
+ if (processor.key < mid.key) {
+ insertInNode(node, processor);
+ } else {
+ insertInNode(newNode, processor);
+ }
+ Node newRoot = new Node();
+ newRoot.procs[0] = mid;
+ newRoot.nodes[0] = node;
+ newRoot.nodes[1] = newNode;
+ newRoot.cnt = 1;
+ return newRoot;
+ }
+
+ public Processor search(int key) {
+ return search(root, key);
+ }
+
+ private Processor search(Node node, int key) {
+ if (node == null) {
+ return null;
+ }
+ for (int i = 0; i < node.cnt; i++) {
+ if (key == node.procs[i].key) {
+ return node.procs[i];
+ }
+ if (key < node.procs[i].key) {
+ return search(node.nodes[i], key);
+ }
+ }
+ return search(node.nodes[node.cnt], key);
+ }
+
+ public void delete(int key) {
+ if (search(key) == null) {
+ System.out.println("key not found.");
+ return;
+ }
+ root = delete(root);
+ }
+
+ private Node delete(Node node) {
+ return node;
+ }
+
+ public void saveToFile(String filename) {
+ try (BufferedWriter bw = new BufferedWriter(new FileWriter(filename))) {
+ saveToFile(root, bw);
+ } catch (IOException e) {
+ System.out.println("error: " + e.getMessage());
+ }
+ }
+
+ private void saveToFile(Node node, BufferedWriter bw) throws IOException {
+ if (node != null) {
+ for (int i = 0; i < node.cnt; i++) {
+ String str1 = node.procs[i].key + "," + node.procs[i].name + "," + node.procs[i].clockFrequency;
+ String str2 = "," + node.procs[i].cacheSize + "," + node.procs[i].busFrequency + ",";
+ String str3 = node.procs[i].specInt + "," + node.procs[i].specFp;
+ bw.write(str1 + str2 + str3);
+ bw.newLine();
+ }
+ for (int i = 0; i <= node.cnt; i++) {
+ saveToFile(node.nodes[i], bw);
+ }
+ }
+ }
+
+ public void print() {
+ printLevelOrder(root);
+ }
+
+ private void printLevelOrder(Node node) {
+ if (node == null) {
+ return;
+ }
+ Queue queue = new LinkedList<>();
+ queue.add(node);
+ while (!queue.isEmpty()) {
+ Node current = queue.poll();
+ for (int i = 0; i < current.cnt; i++) {
+ if (current.nodes[i] != null) {
+ System.out.print(current.procs[i].key + " ");
+ }
+ if (current.cnt == 3) {
+ System.out.print(current.procs[i].key + " ");
+ } else if (current.cnt == 2) {
+ System.out.print(current.procs[i].key + " - ");
+ }
+ }
+ System.out.println();
+ for (int i = 0; i <= current.cnt; i++) {
+ if (current.nodes[i] != null) {
+ queue.add(current.nodes[i]);
+ }
+ }
+ }
+ }
+}
diff --git a/students/23K0623/23K0623-p032/pom.xml b/students/23K0623/23K0623-p032/pom.xml
new file mode 100644
index 000000000..79d8762c0
--- /dev/null
+++ b/students/23K0623/23K0623-p032/pom.xml
@@ -0,0 +1,13 @@
+
+
+ 4.0.0
+
+ 23K0623
+ ru.mirea.practice
+ 2024.1
+ ../pom.xml
+
+ 23K0623-p032
+ Массивы
+
diff --git a/students/23K0623/23K0623-p032/src/main/java/ru/mirea/practice/s23k0623/Jo.java b/students/23K0623/23K0623-p032/src/main/java/ru/mirea/practice/s23k0623/Jo.java
new file mode 100644
index 000000000..fa24b5f10
--- /dev/null
+++ b/students/23K0623/23K0623-p032/src/main/java/ru/mirea/practice/s23k0623/Jo.java
@@ -0,0 +1,87 @@
+package ru.mirea.practice.s23k0623;
+
+public abstract class Jo {
+ private static boolean ltr = true;
+ private static boolean rtl = false;
+
+ public static int searcher(int[] a, int n, int dir) {
+ for (int i = 0; i < n; i++) {
+ if (a[i] == dir) {
+ return i + 1;
+ }
+ }
+ return 0;
+ }
+
+ public static int getDir(int[] a, boolean[] dir, int n) {
+ int mobileprev = 0;
+ int mobile = 0;
+ for (int i = 0; i < n; i++) {
+ if (dir[a[i] - 1] == rtl && i != 0) {
+ if (a[i] > a[i - 1] && a[i] > mobileprev) {
+ mobile = a[i];
+ mobileprev = mobile;
+ }
+ }
+ if (dir[a[i] - 1] == ltr && i != n - 1) {
+ if (a[i] > a[i + 1] && a[i] > mobileprev) {
+ mobile = a[i];
+ mobileprev = mobile;
+ }
+ }
+ }
+ if (mobile == 0) {
+ return 0;
+ } else {
+ return mobile;
+ }
+ }
+
+ public static int printone(int[] a, boolean[] dir, int n) {
+ int mobile = getDir(a, dir, n);
+ int pos = searcher(a, n, mobile);
+ if (dir[a[pos - 1] - 1] == rtl) {
+ int temp = a[pos - 1];
+ a[pos - 1] = a[pos - 2];
+ a[pos - 2] = temp;
+ } else if (dir[a[pos - 1] - 1] == ltr) {
+ int temp = a[pos];
+ a[pos] = a[pos - 1];
+ a[pos - 1] = temp;
+ }
+ for (int i = 0; i < n; i++) {
+ if (a[i] > mobile) {
+ dir[a[i] - 1] = !dir[a[i] - 1];
+ }
+ }
+ for (int value : a) {
+ System.out.println(value);
+ }
+ System.out.println(" ");
+ return 0;
+ }
+
+ public static int factor(int n) {
+ int res = 1;
+ for (int i = 1; i <= n; i++) {
+ res *= i;
+ }
+ return res;
+ }
+
+ public static void printer(int n) {
+ int[] a = new int[n];
+ boolean[] dir = new boolean[n];
+ for (int i = 0; i < n; i++) {
+ a[i] = i + 1;
+ System.out.println(a[i]);
+ }
+ System.out.println(" ");
+ for (int i = 0; i < n; i++) {
+ dir[i] = rtl;
+ }
+ for (int i = 1; i < factor(n); i++) {
+ printone(a, dir, n);
+ }
+ }
+}
diff --git a/students/23K0623/23K0623-p032/src/main/java/ru/mirea/practice/s23k0623/Test.java b/students/23K0623/23K0623-p032/src/main/java/ru/mirea/practice/s23k0623/Test.java
new file mode 100644
index 000000000..4ec120f31
--- /dev/null
+++ b/students/23K0623/23K0623-p032/src/main/java/ru/mirea/practice/s23k0623/Test.java
@@ -0,0 +1,10 @@
+package ru.mirea.practice.s23k0623;
+
+import static ru.mirea.practice.s23k0623.Jo.printer;
+
+public abstract class Test {
+ public static void main(String[] args) {
+ int n = 4;
+ printer(n);
+ }
+}
diff --git a/students/23K0623/pom.xml b/students/23K0623/pom.xml
index 860caa72c..2bad0f5a0 100644
--- a/students/23K0623/pom.xml
+++ b/students/23K0623/pom.xml
@@ -24,6 +24,27 @@
23K0623-p08
23K0623-p09
23K0623-p010
-
+ 23K0623-p011
+ 23K0623-p012
+ 23K0623-p013
+ 23K0623-p014
+ 23K0623-p015
+ 23K0623-p016
+ 23K0623-p017
+ 23K0623-p018
+ 23K0623-p019
+ 23K0623-p020
+ 23K0623-p021
+ 23K0623-p022
+ 23K0623-p023
+ 23K0623-p024
+ 23K0623-p025
+ 23K0623-p026
+ 23K0623-p027
+ 23K0623-p028
+ 23K0623-p029
+ 23K0623-p030
+ 23K0623-p031
+ 23K0623-p032