From 2060133d518a2426652565ab7344cd63db242a15 Mon Sep 17 00:00:00 2001 From: user Date: Wed, 25 Feb 2026 23:04:29 +0500 Subject: [PATCH] =?UTF-8?q?=D0=94=D0=BE=D0=BC=D0=B0=D0=BD=D0=B8=D0=BD?= =?UTF-8?q?=D0=B0=20=D0=BF=D1=80=D0=B8-201?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- task01/src/com/example/task01/Task01Main.java | 10 ++++--- task02/src/com/example/task02/Task02Main.java | 7 ++--- task03/src/com/example/task03/Task03Main.java | 19 +++++++++++-- task04/src/com/example/task04/Task04Main.java | 25 ++++++++++++++--- .../src/com/example/task05/MailMessage.java | 28 +++++++++++++++++++ .../src/com/example/task05/MailService.java | 28 +++++++++++++++++++ task05/src/com/example/task05/Salary.java | 28 +++++++++++++++++++ task05/src/com/example/task05/SendMail.java | 7 +++++ task05/src/com/example/task05/Task05Main.java | 4 +-- 9 files changed, 139 insertions(+), 17 deletions(-) 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 create mode 100644 task05/src/com/example/task05/SendMail.java diff --git a/task01/src/com/example/task01/Task01Main.java b/task01/src/com/example/task01/Task01Main.java index de4599c1..b73471fb 100644 --- a/task01/src/com/example/task01/Task01Main.java +++ b/task01/src/com/example/task01/Task01Main.java @@ -1,21 +1,22 @@ package com.example.task01; import java.io.IOException; +import java.util.Objects; import java.util.function.Function; import java.util.function.Predicate; 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); - */ + System.out.println(safeStringLength.apply(null)); + System.out.println(safeStringLength.apply("")); + System.out.println(safeStringLength.apply("Java-funtional-stream")); } public static Function ternaryOperator( @@ -23,7 +24,8 @@ public static Function ternaryOperator( Function ifTrue, Function ifFalse) { - return null; // your implementation here + if (condition == null || ifTrue == null || ifFalse == null) throw new NullPointerException(); + return t -> condition.test(t) ? ifTrue.apply(t) : ifFalse.apply(t); } } diff --git a/task02/src/com/example/task02/Task02Main.java b/task02/src/com/example/task02/Task02Main.java index 309260d8..77941d41 100644 --- a/task02/src/com/example/task02/Task02Main.java +++ b/task02/src/com/example/task02/Task02Main.java @@ -6,18 +6,15 @@ public class Task02Main { public static void main(String[] args) { - /* cycleGrayCode(2) .limit(10) .forEach(System.out::println); - */ } public static IntStream cycleGrayCode(int n) { - return null; // your implementation here - + if (n > 16 || n < 1) throw new IllegalArgumentException(); + return IntStream.iterate(0, x -> (x + 1) % (1 << n)).map(x -> x ^ (x >> 1)); } - } diff --git a/task03/src/com/example/task03/Task03Main.java b/task03/src/com/example/task03/Task03Main.java index 254d5cb0..20aef7fc 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; @@ -16,12 +17,26 @@ public static void main(String[] args) { ); } - public static void findMinMax( Stream stream, 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..6a9ca910 100644 --- a/task04/src/com/example/task04/Task04Main.java +++ b/task04/src/com/example/task04/Task04Main.java @@ -1,11 +1,28 @@ package com.example.task04; +import java.io.BufferedReader; +import java.io.InputStreamReader; +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 - + BufferedReader reader = new BufferedReader(new InputStreamReader(System.in)); + 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 + "\n")); } - -} +} \ No newline at end of file diff --git a/task05/src/com/example/task05/MailMessage.java b/task05/src/com/example/task05/MailMessage.java new file mode 100644 index 00000000..1603e8f0 --- /dev/null +++ b/task05/src/com/example/task05/MailMessage.java @@ -0,0 +1,28 @@ +package com.example.task05; + +public class MailMessage implements SendMail { + 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..189717af --- /dev/null +++ b/task05/src/com/example/task05/MailService.java @@ -0,0 +1,28 @@ +package com.example.task05; + +import java.util.function.Consumer; +import java.util.*; + +public class MailService implements Consumer> { + private final Map> mailBox = new HashMap<>(); + + @Override + public void accept(SendMail mail) { + mailBox.computeIfAbsent(mail.getTo(), k -> new ArrayList<>()).add(mail.getContent()); + } + + public Map> getMailBox() { + return new AbstractMap>() { + @Override + public Set>> entrySet() { + return Collections.emptySet(); + } + + @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..2a4a2f08 --- /dev/null +++ b/task05/src/com/example/task05/Salary.java @@ -0,0 +1,28 @@ +package com.example.task05; + +public class Salary implements SendMail { + private final String from; + private final String to; + private final Integer salary; + + public Salary(String from, String to, Integer 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; + } +} diff --git a/task05/src/com/example/task05/SendMail.java b/task05/src/com/example/task05/SendMail.java new file mode 100644 index 00000000..f4df0e08 --- /dev/null +++ b/task05/src/com/example/task05/SendMail.java @@ -0,0 +1,7 @@ +package com.example.task05; + +public interface SendMail { + String getFrom(); + String getTo(); + T getContent(); +} diff --git a/task05/src/com/example/task05/Task05Main.java b/task05/src/com/example/task05/Task05Main.java index ae31f6bc..065eadf3 100644 --- a/task05/src/com/example/task05/Task05Main.java +++ b/task05/src/com/example/task05/Task05Main.java @@ -9,7 +9,7 @@ public class Task05Main { public static void main(String[] args) { - /* + // Random variables String randomFrom = "..."; // Некоторая случайная строка. Можете выбрать ее самостоятельно. @@ -88,7 +88,7 @@ public static void main(String[] args) { assert salaries.get(randomTo).equals(Arrays.asList(randomSalary)) : "wrong salaries mailbox content (3)"; - */ + }