From cb4a67962f03e0f6bcbce17e0009d47d22940294 Mon Sep 17 00:00:00 2001 From: Shevtsova-Ilona Date: Mon, 15 Dec 2025 20:29:17 +0300 Subject: [PATCH] =?UTF-8?q?=D0=A8=D0=B5=D0=B2=D1=86=D0=BE=D0=B2=D0=B0=20?= =?UTF-8?q?=D0=98=D0=BB=D0=BE=D0=BD=D0=B0,=20=D0=9F=D1=80=D0=98-202.=20?= =?UTF-8?q?=D0=9C=D0=BE=D0=B4=D1=83=D0=BB=D1=8C=2010?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- task01/src/com/example/task01/Task01Main.java | 11 ++----- task02/src/com/example/task02/Task02Main.java | 11 +++---- task03/src/com/example/task03/Task03Main.java | 19 +++++++++++- task04/src/com/example/task04/Task04Main.java | 24 ++++++++++++-- task05/src/com/example/task05/Mail.java | 7 +++++ .../src/com/example/task05/MailMessage.java | 28 +++++++++++++++++ .../src/com/example/task05/MailService.java | 31 +++++++++++++++++++ task05/src/com/example/task05/Salary.java | 28 +++++++++++++++++ task05/src/com/example/task05/Task05Main.java | 13 ++------ task05/src/com/example/task05/Tests.java | 2 +- .../com/example/task05}/TestsImpl.java | 7 ++--- 11 files changed, 147 insertions(+), 34 deletions(-) create mode 100644 task05/src/com/example/task05/Mail.java create mode 100644 task05/src/com/example/task05/MailMessage.java create mode 100644 task05/src/com/example/task05/MailService.java create mode 100644 task05/src/com/example/task05/Salary.java rename task05/{resources => src/com/example/task05}/TestsImpl.java (88%) diff --git a/task01/src/com/example/task01/Task01Main.java b/task01/src/com/example/task01/Task01Main.java index de4599c1..3ed9f026 100644 --- a/task01/src/com/example/task01/Task01Main.java +++ b/task01/src/com/example/task01/Task01Main.java @@ -3,19 +3,14 @@ import java.io.IOException; import java.util.function.Function; import java.util.function.Predicate; +import java.util.Objects; public class Task01Main { public static void main(String[] args) throws IOException { - - // TODO С корректно реализованным методом ternaryOperator должен компилироваться и успешно работать следующий код: - - /* Predicate condition = Objects::isNull; Function ifTrue = obj -> 0; Function ifFalse = CharSequence::length; Function safeStringLength = ternaryOperator(condition, ifTrue, ifFalse); - */ - } public static Function ternaryOperator( @@ -23,7 +18,7 @@ public static Function ternaryOperator( Function ifTrue, Function ifFalse) { - return null; // your implementation here - + if(condition == null || ifTrue == null || ifFalse == null) throw new NullPointerException(); + return x -> condition.test(x) ? ifTrue.apply(x) : ifFalse.apply(x); } } diff --git a/task02/src/com/example/task02/Task02Main.java b/task02/src/com/example/task02/Task02Main.java index 309260d8..ead868bb 100644 --- a/task02/src/com/example/task02/Task02Main.java +++ b/task02/src/com/example/task02/Task02Main.java @@ -5,19 +5,16 @@ public class Task02Main { public static void main(String[] args) { - - /* cycleGrayCode(2) .limit(10) - .forEach(System.out::println); - */ - + .forEach(System.out::print); } public static IntStream cycleGrayCode(int n) { + if(n > 16 || n < 1) + throw new IllegalArgumentException(); - return null; // your implementation here - + return IntStream.iterate(0, x -> (x+1)%(1< x^(x>>1)); } } diff --git a/task03/src/com/example/task03/Task03Main.java b/task03/src/com/example/task03/Task03Main.java index 254d5cb0..f0ad531c 100644 --- a/task03/src/com/example/task03/Task03Main.java +++ b/task03/src/com/example/task03/Task03Main.java @@ -1,6 +1,7 @@ package com.example.task03; import java.util.Comparator; +import java.util.Iterator; import java.util.function.BiConsumer; import java.util.stream.Stream; @@ -22,6 +23,22 @@ public static void findMinMax( Comparator order, BiConsumer minMaxConsumer) { - // your implementation here + Iterator iterator = stream.iterator(); + + if(!iterator.hasNext()) + minMaxConsumer.accept(null, null); + else{ + T min = iterator.next(); + T max = min; + + while(iterator.hasNext()){ + T current = iterator.next(); + if(order.compare(current, min) < 0) + min = current; + else if(order.compare(current,max)>0) + max = current; + } + minMaxConsumer.accept(min, max); + } } } diff --git a/task04/src/com/example/task04/Task04Main.java b/task04/src/com/example/task04/Task04Main.java index 1e38e6eb..51167e77 100644 --- a/task04/src/com/example/task04/Task04Main.java +++ b/task04/src/com/example/task04/Task04Main.java @@ -1,11 +1,29 @@ package com.example.task04; +import java.io.BufferedReader; +import java.io.StringReader; +import java.util.Comparator; +import java.util.Map; +import java.util.stream.Collectors; +import java.util.stream.Stream; + public class Task04Main { public static void main(String[] args) { - - // your implementation here - + String text = "Мама мыла-мыла-мыла раму!"; + BufferedReader reader = new BufferedReader(new StringReader(text)); + reader.lines() + .map(String::toLowerCase) + .flatMap(line -> Stream.of(line.split("[^\\p{L}\\p{N}]+"))) + .filter(word -> !word.isEmpty()) + .collect(Collectors.groupingBy(word -> word, Collectors.counting())) + .entrySet() + .stream() + .sorted(Map.Entry.comparingByKey()) + .sorted(Map.Entry.comparingByValue(Comparator.reverseOrder())) + .limit(10) + .map(Map.Entry::getKey) + .forEach(word -> System.out.print(word+" ")); } } diff --git a/task05/src/com/example/task05/Mail.java b/task05/src/com/example/task05/Mail.java new file mode 100644 index 00000000..624593e4 --- /dev/null +++ b/task05/src/com/example/task05/Mail.java @@ -0,0 +1,7 @@ +package com.example.task05; + +public interface Mail { + String getFrom(); + String getTo(); + T getContent(); +} diff --git a/task05/src/com/example/task05/MailMessage.java b/task05/src/com/example/task05/MailMessage.java new file mode 100644 index 00000000..1f4041ca --- /dev/null +++ b/task05/src/com/example/task05/MailMessage.java @@ -0,0 +1,28 @@ +package com.example.task05; + +public class MailMessage implements Mail { + private final String from; + private final String to; + private final String content; + + public MailMessage(String from, String to, String content) { + this.from = from; + this.to = to; + this.content = content; + } + + @Override + public String getFrom() { + return from; + } + + @Override + public String getTo() { + return to; + } + + @Override + public String getContent() { + return content; + } +} diff --git a/task05/src/com/example/task05/MailService.java b/task05/src/com/example/task05/MailService.java new file mode 100644 index 00000000..ce0b7eed --- /dev/null +++ b/task05/src/com/example/task05/MailService.java @@ -0,0 +1,31 @@ +package com.example.task05; + +import java.util.*; +import java.util.function.Consumer; + +public class MailService implements Consumer> { + private final Map> mailBox = new HashMap<>(); + + @Override + public void accept(Mail mailContent) { + String to = mailContent.getTo(); + T content = mailContent.getContent(); + + mailBox.computeIfAbsent(to, k -> new ArrayList<>()).add(content); + } + + public Map> getMailBox() { + return new AbstractMap>() { + @Override + public Set>> entrySet() { + return mailBox.entrySet(); + } + + @Override + public List get(Object key) { + List result = mailBox.get(key); + return result != null ? result : Collections.emptyList(); + } + }; + } +} diff --git a/task05/src/com/example/task05/Salary.java b/task05/src/com/example/task05/Salary.java new file mode 100644 index 00000000..02a40056 --- /dev/null +++ b/task05/src/com/example/task05/Salary.java @@ -0,0 +1,28 @@ +package com.example.task05; + +public class Salary implements Mail { + private final String from; + private final String to; + private final int salary; + + public Salary(String from, String to, int salary) { + this.from = from; + this.to = to; + this.salary = salary; + } + + @Override + public String getFrom() { + return from; + } + + @Override + public String getTo() { + return to; + } + + @Override + public Integer getContent() { + return salary; + } +} \ No newline at end of file diff --git a/task05/src/com/example/task05/Task05Main.java b/task05/src/com/example/task05/Task05Main.java index ae31f6bc..cadffe5c 100644 --- a/task05/src/com/example/task05/Task05Main.java +++ b/task05/src/com/example/task05/Task05Main.java @@ -8,13 +8,10 @@ public class Task05Main { public static void main(String[] args) { - - /* - // Random variables - String randomFrom = "..."; // Некоторая случайная строка. Можете выбрать ее самостоятельно. - String randomTo = "..."; // Некоторая случайная строка. Можете выбрать ее самостоятельно. - int randomSalary = 100; // Некоторое случайное целое положительное число. Можете выбрать его самостоятельно. + String randomFrom = "Все любят шарики"; // Некоторая случайная строка. Можете выбрать ее самостоятельно. + String randomTo = "Сырные шарики"; // Некоторая случайная строка. Можете выбрать ее самостоятельно. + int randomSalary = 75; // Некоторое случайное целое положительное число. Можете выбрать его самостоятельно. // Создание списка из трех почтовых сообщений. MailMessage firstMessage = new MailMessage( @@ -86,10 +83,6 @@ public static void main(String[] args) { assert salaries.get(salary1.getTo()).equals(Arrays.asList(1)) : "wrong salaries mailbox content (1)"; assert salaries.get(salary2.getTo()).equals(Arrays.asList(Integer.MAX_VALUE)) : "wrong salaries mailbox content (2)"; assert salaries.get(randomTo).equals(Arrays.asList(randomSalary)) : "wrong salaries mailbox content (3)"; - - - */ - } } diff --git a/task05/src/com/example/task05/Tests.java b/task05/src/com/example/task05/Tests.java index 40e3cea7..c8649958 100644 --- a/task05/src/com/example/task05/Tests.java +++ b/task05/src/com/example/task05/Tests.java @@ -15,7 +15,7 @@ public class Tests { @BeforeClass public static void before() throws URISyntaxException, IOException { - String classContent = new String(Files.readAllBytes(Paths.get(Tests.class.getResource("/TestsImpl.java").toURI()))); + String classContent = new String(Files.readAllBytes(Paths.get(Tests.class.getResource("/com/example/task05/TestsImpl.java").toURI()))); impl = Reflect.compile("com.example.task05.TestsImpl", classContent).create().get(); } diff --git a/task05/resources/TestsImpl.java b/task05/src/com/example/task05/TestsImpl.java similarity index 88% rename from task05/resources/TestsImpl.java rename to task05/src/com/example/task05/TestsImpl.java index 69276e9f..3977c47b 100644 --- a/task05/resources/TestsImpl.java +++ b/task05/src/com/example/task05/TestsImpl.java @@ -1,6 +1,5 @@ package com.example.task05; -import com.example.task05.ITests; import org.junit.Test; import java.util.Arrays; @@ -15,9 +14,9 @@ public class TestsImpl implements ITests { public void testExample() { // Random variables - String randomFrom = "..."; // Некоторая случайная строка. Можете выбрать ее самостоятельно. - String randomTo = "..."; // Некоторая случайная строка. Можете выбрать ее самостоятельно. - int randomSalary = 100; // Некоторое случайное целое положительное число. Можете выбрать его самостоятельно. + String randomFrom = "Все любят шарики"; // Некоторая случайная строка. Можете выбрать ее самостоятельно. + String randomTo = "Сырные шарики"; // Некоторая случайная строка. Можете выбрать ее самостоятельно. + int randomSalary = 75; // Некоторое случайное целое положительное число. Можете выбрать его самостоятельно. // Создание списка из трех почтовых сообщений. MailMessage firstMessage = new MailMessage(