From e30a84f1782e27673d3d65e659e2ea4abbcf8af3 Mon Sep 17 00:00:00 2001 From: Falmer Date: Fri, 23 Jan 2026 10:00:53 +0300 Subject: [PATCH] Add more lessons --- .../ru/ilug/c10_word_frequency/MainTest.java | 21 +++++++++++++++++++ .../c10_word_frequency/WordFrequency.java | 16 ++++++++++++++ .../FactorialCalculator.java | 12 +++++++++++ .../c7_factorial_calculator/MainTest.java | 16 ++++++++++++++ .../ilug/c8_anagram_group/AnagramGroup.java | 15 +++++++++++++ .../ru/ilug/c8_anagram_group/MainTest.java | 18 ++++++++++++++++ .../ilug/c9_most_frequent_words/MainTest.java | 17 +++++++++++++++ .../MostFrequentWords.java | 15 +++++++++++++ 8 files changed, 130 insertions(+) create mode 100644 src/main/java/ru/ilug/c10_word_frequency/MainTest.java create mode 100644 src/main/java/ru/ilug/c10_word_frequency/WordFrequency.java create mode 100644 src/main/java/ru/ilug/c7_factorial_calculator/FactorialCalculator.java create mode 100644 src/main/java/ru/ilug/c7_factorial_calculator/MainTest.java create mode 100644 src/main/java/ru/ilug/c8_anagram_group/AnagramGroup.java create mode 100644 src/main/java/ru/ilug/c8_anagram_group/MainTest.java create mode 100644 src/main/java/ru/ilug/c9_most_frequent_words/MainTest.java create mode 100644 src/main/java/ru/ilug/c9_most_frequent_words/MostFrequentWords.java diff --git a/src/main/java/ru/ilug/c10_word_frequency/MainTest.java b/src/main/java/ru/ilug/c10_word_frequency/MainTest.java new file mode 100644 index 0000000..4054e22 --- /dev/null +++ b/src/main/java/ru/ilug/c10_word_frequency/MainTest.java @@ -0,0 +1,21 @@ +package ru.ilug.c10_word_frequency; + +import lombok.extern.slf4j.Slf4j; + +import java.util.List; +import java.util.Map; + +@Slf4j +public class MainTest { + + public static void main(String[] args) { + WordFrequency wordFrequency = null; + + List words1 = List.of("list", "map", "class", "public", "list", "set", "word", "class", "list", "public", "main", "string", "map"); + List words2 = List.of("long", "string", "list", "public", "import", "double", "word", "map", "class", "package", "void", "long"); + + Map result = wordFrequency.getWordFrequency(words1, words2); + log.info("Word frequent in two lists: {}", result); + } + +} diff --git a/src/main/java/ru/ilug/c10_word_frequency/WordFrequency.java b/src/main/java/ru/ilug/c10_word_frequency/WordFrequency.java new file mode 100644 index 0000000..2cc9d53 --- /dev/null +++ b/src/main/java/ru/ilug/c10_word_frequency/WordFrequency.java @@ -0,0 +1,16 @@ +package ru.ilug.c10_word_frequency; + +import java.util.List; +import java.util.Map; + +public interface WordFrequency { + + /** + * Ищет слова, которые встречаются в обоих списках, считает суммарную частоту каждого + * @param list1 Первый список слов + * @param list2 Второй список слов + * @return Частота слов, которые есть в обоих списках + */ + Map getWordFrequency(List list1, List list2); + +} diff --git a/src/main/java/ru/ilug/c7_factorial_calculator/FactorialCalculator.java b/src/main/java/ru/ilug/c7_factorial_calculator/FactorialCalculator.java new file mode 100644 index 0000000..95ebf18 --- /dev/null +++ b/src/main/java/ru/ilug/c7_factorial_calculator/FactorialCalculator.java @@ -0,0 +1,12 @@ +package ru.ilug.c7_factorial_calculator; + +public interface FactorialCalculator { + + /** + * Считает факториал переданного числа, для оптимизации использует кэш из ранее посчитанных факториалов + * @param num Основа факториала + * @return Результат вычисления факториала + */ + int calculate(int num); + +} diff --git a/src/main/java/ru/ilug/c7_factorial_calculator/MainTest.java b/src/main/java/ru/ilug/c7_factorial_calculator/MainTest.java new file mode 100644 index 0000000..0c1ea7b --- /dev/null +++ b/src/main/java/ru/ilug/c7_factorial_calculator/MainTest.java @@ -0,0 +1,16 @@ +package ru.ilug.c7_factorial_calculator; + +import lombok.extern.slf4j.Slf4j; + +@Slf4j +public class MainTest { + + public static void main(String[] args) { + FactorialCalculator factorialCalculator = null; + + log.info("Factorial 3 = {}", factorialCalculator.calculate(3)); + log.info("Factorial 4 = {}", factorialCalculator.calculate(4)); + log.info("Factorial 7 = {}", factorialCalculator.calculate(7)); + } + +} diff --git a/src/main/java/ru/ilug/c8_anagram_group/AnagramGroup.java b/src/main/java/ru/ilug/c8_anagram_group/AnagramGroup.java new file mode 100644 index 0000000..271e98e --- /dev/null +++ b/src/main/java/ru/ilug/c8_anagram_group/AnagramGroup.java @@ -0,0 +1,15 @@ +package ru.ilug.c8_anagram_group; + +import java.util.List; +import java.util.Map; + +public interface AnagramGroup { + + /** + * Группирует слова в группы анаграммы (слова, составленные из одних букв). Ключ — отсортированные буквы слова, значение — список анаграмм. + * @param words Слова + * @return Группы + */ + Map> group(String... words); + +} diff --git a/src/main/java/ru/ilug/c8_anagram_group/MainTest.java b/src/main/java/ru/ilug/c8_anagram_group/MainTest.java new file mode 100644 index 0000000..1f7429a --- /dev/null +++ b/src/main/java/ru/ilug/c8_anagram_group/MainTest.java @@ -0,0 +1,18 @@ +package ru.ilug.c8_anagram_group; + +import lombok.extern.slf4j.Slf4j; + +@Slf4j +public class MainTest { + + public static void main(String[] args) { + AnagramGroup anagramGroup = null; + + String[] words = new String[]{ + "кабан", "соринка", "кукла", "мышка", "приказ", "шнурок", + "кулак", "банка", "коршун", "росинка", "каприз", "камыш" + }; + log.info("Anagram groups: {}", words); + } + +} diff --git a/src/main/java/ru/ilug/c9_most_frequent_words/MainTest.java b/src/main/java/ru/ilug/c9_most_frequent_words/MainTest.java new file mode 100644 index 0000000..8cb6298 --- /dev/null +++ b/src/main/java/ru/ilug/c9_most_frequent_words/MainTest.java @@ -0,0 +1,17 @@ +package ru.ilug.c9_most_frequent_words; + +import lombok.extern.slf4j.Slf4j; + +import java.util.Map; + +@Slf4j +public class MainTest { + + public static void main(String[] args) { + MostFrequentWords mostFrequentWords = null; + + Map result = mostFrequentWords.getNWords("На дворе трава, на траве дрова. Не руби дрова на траве двора!", 3); + log.info("3 most frequent words: {}", result); + } + +} diff --git a/src/main/java/ru/ilug/c9_most_frequent_words/MostFrequentWords.java b/src/main/java/ru/ilug/c9_most_frequent_words/MostFrequentWords.java new file mode 100644 index 0000000..adaebf9 --- /dev/null +++ b/src/main/java/ru/ilug/c9_most_frequent_words/MostFrequentWords.java @@ -0,0 +1,15 @@ +package ru.ilug.c9_most_frequent_words; + +import java.util.Map; + +public interface MostFrequentWords { + + /** + * Возвращает N самых часто встречаемых слов в тексте + * @param text Текст + * @param count Количество возвращаемых слов + * @return ключ - слово, значение - частота + */ + Map getNWords(String text, int count); + +}