Здравствуйте, уважаемые любители алгоритмов и программирования! Перед вами — специально подобранная коллекция задач, охватывающая весь спектр сложности. Независимо от вашего опыта, здесь найдется что-то интересное. Мы ставим перед собой задачу помочь вам:
- поддерживать программистские навыки в тонусе
- развивать способность решать алгоритмические проблемы
- получать интеллектуальное удовлетворение от разгадывания головоломок"
Что было раньше:
В предыдущей части мы решили:
- Chain me (Закуйте меня в цепи)
- Toggle, Set, and Clear Bits (Bit Manipulation Basics) (Переключение, установка и очистка битов (основы работы с битами))
- Experimenting with a sequence of complex numbers (Экспериментируя с последовательностью комплексных чисел)
- How Green Is My Valley? (Насколько Зелена Моя Долина?)
- Scaling Squared Strings (Масштабирование прямоугольных строк)
- Find the unique number (Найти уникальный номер)
Решение новых задач:
Задача 1
Платформа: CodeWars
Название задачи: Reversed sequence (Обратная последовательность)
Ссылка на задачу: https://www.codewars.com/kata/5a00e05cc374cb34d100000d
Сложность: 8 kyu
Уже решили (На момент написания статьи): 163 839 из 345 902
Тэги: Fundamentals
Оригинальное описание задачи:
Build a function that returns an array of integers from n to 1 where n>0.
Example : `n=5` --> `[5,4,3,2,1]`
Пояснение задачи:
Задача состоит в создании функции, формирующей массив целых чисел от заданного положительного числа n до единицы включительно.
Пример:
- Если n = 5, результатом будет массив [5, 4, 3, 2, 1]
- Если n = 3, результатом будет массив [3, 2, 1]
Требования:
- Функция должна принимать положительное целое число n > 0.
- Возвращаемый массив должен содержать числа от n до 1 включительно.
- Необходимо учитывать возможные реализации функции в разных языках ассемблера (NASM, RISC-V) и интерпретируемом языке (BF).
Пояснения:
- Для языка NASM функция возвращает массив через указатель и дополнительно передает длину массива через второй параметр.
- Для RISC-V массив формируется непосредственно в переданный указатель, и функция ничего не возвращает.
- В языке BF предполагается ввод одного байта, который интерпретируется как начальное значение n, и выводится последовательность байтов, представляющих обратный отсчет.
Примеры:
- Ввод: n = 5 - Результат: [5, 4, 3, 2, 1]
- Ввод:n = 8 - Результат: [8, 7, 6, 5, 4, 3, 2, 1]
Задача 2
Платформа: CodeWars
Название задачи: Grasshopper - Terminal game combat function (Grasshopper - боевая функция терминальной игры)
Ссылка на задачу: https://www.codewars.com/kata/586c1cf4b98de0399300001d
Сложность: 8 kyu
Уже решили (На момент написания статьи): 45 969 из 78 331
Тэги: Fundamentals
Оригинальное описание задачи:
Create a combat function that takes the player's current health and the amount of damage received, and returns the player's new health.
Health can't be less than 0.
Пояснение задачи:
Задача требует реализовать функцию, моделирующую бой персонажа:
- Функция принимает два параметра: текущее здоровье игрока (`player_health`) и нанесённый урон (`damage`).
- Нужно рассчитать новое значение здоровья после получения урона.
- Важно учесть ограничение: здоровье не должно становиться отрицательным числом.
Пример вызова функции:
new_health = combat(100, 20) print(new_health)
выведет 80
Пояснение:
- Если игрок получает урон, от текущего здоровья вычитается нанесённый урон.
- Если результатом является число меньше нуля, возвращаем `0`, так как здоровье не может быть отрицательным.
Пример:
- Текущий уровень здоровья: 100, урон: 20 → новое здоровье: 80
- Текущий уровень здоровья: 50, урон: 60 → новое здоровье: 0 (ограничение снизу)
Задача 3
Платформа: CodeWars
Название задачи: Combining Ratios (Комбинирующие коэффициенты)
Ссылка на задачу: https://www.codewars.com/kata/69e3d400196a47ceacde554f
Сложность: 7 kyu
Уже решили (На момент написания статьи): 37 из 206
Тэги:
Оригинальное описание задачи:
2 ratios given as strings in the form A:B and B:C
eg 12:4 3:7
Your program must return the ratio of A:B:C in simplest form
eg 12:4 3:7 ---> 9:3:7
Given Ratios are not in simplest form A,B and C are always in the range of 1 --> 1e5
return as a string in the format "9:3:7"
Пояснение задачи:
Задача требует найти общее отношение трёх чисел (A, B, C), заданных двумя соотношениями вида A:B и B:C, и представить его в простейшем виде.
Пояснение:
1. Исходные данные: Нам даны два отношения вида A:B и B:C. Например, 12:4 и 3:7.
2. Целевая задача: Нужно найти единое отношение A:B:C в простейшей форме. То есть, если исходные числа большие, мы должны привести их к наименьшим целым числам, сохраняя пропорцию.
3. Алгоритм решения:
- Сначала приведём каждое соотношение к простейшему виду (наименьшие целые числа):
- Для 12:4 получаем 3:1 (разделив обе части на наибольший общий делитель, НОД(12, 4) = 4).
- Для 3:7 уже ничего не нужно менять, оно и так в простейшем виде.
- Затем найдём общее отношение A:B:C, где A соответствует 3, B соответствует 1 и C соответствует 7.
Поскольку B является общим знаменателем, нам нужно выразить A и C через B:
A = 3 * 7 = 21 C = 7 * 7 = 49
- Таким образом, итоговое отношение будет 21:1:49, которое уже приведено к простейшему виду.
4. Дополнительные замечания:
- Все числа находятся в диапазоне от 1 до 10^5, поэтому использовать стандартные алгоритмы нахождения НОД и упрощения дробей вполне допустимо.
- Если одно из отношений изначально находится в простейшем виде, его не нужно изменять.
Пример реализации:
Пусть дана пара отношений 12:4 и 3:7.
После приведения к простейшему виду получаем 3:1 и 3:7.
Далее находим A=3 * 7 = 21, B=1 * 7 = 7, C=7 * 7 = 49.
Итоговый результат — 21:7:49.
Задача 4
Платформа: CodeWars
Название задачи: Recover My Code! (Восстановите Мой код!)
Ссылка на задачу: https://www.codewars.com/kata/69d3d8eac800a4e71c7e378d
Сложность: 7 kyu
Уже решили (На момент написания статьи): 67 из 335
Тэги:
Оригинальное описание задачи:
Description
I lost my source code! All I have left are the tokens.Help me recover the source.
Tokens
Each token is represented as an array in the following format:
`{command, arg1, arg2}`
Example:
`{"set", "x", "5"}`
Commands
Each valid command translates to a line of source code:
`{"set", "x", "5"}` -> `x = 5`
`{"add", "y", "3"}` -> `y += 3`
`{"sub", "a", "4"}` -> `a -= 4`
Rules
- The first argument is always a variable.
- The second argument is either a number or a variable. Task Given an array of tokens, return a string containing the reconstructed source code.
Constraints
- Tokens are given in the order they should appear in the source code.
- Each command must be separated by a newline character (`n`).
- Invalid commands should be ignored.
- Only `set`, `add`, and `sub` are valid commands.
- Variables consist only of letters [a-zA-Z] and may be longer than one character.
- Spaces in the output do not matter (`a=5`, `a =5` and `a = 5` are all valid).
- There should not be any empty lines in the output. - If there are no valid commands, return an empty string.
Пояснение задачи:
Задача заключается в восстановлении исходного программного кода по набору токенов. Формат входных данных Токены представлены массивами вида `{команда, аргумент1, аргумент2}`, где:
- команда — одно из допустимых значений: "set", "add", "sub"
- аргумент1 — переменная (строка, состоящая только из букв латинского алфавита)
- аргумент2 — либо число, либо другая переменная
Правила преобразования команд:
Каждая команда должна быть преобразована в строку исходного кода согласно следующему правилу:
- Команда "set" соответствует присваиванию значения переменной: `переменная = значение`
- Команда "add" означает инкремент переменной: `переменная += значение`
- Команда "sub" означает декремент переменной: `переменная -= значение` Ограничения
- Токены поступают строго в порядке, в котором они должны отображаться в итоговом коде.
- Недопустимые команды игнорируются.
- Переменные состоят только из символов `[a-zA-Z]`.
- Допускаются любые числовые значения.
- Между командами в итоговом результате обязательно должна быть новая строка (`n`).
- Если ни одна команда не подходит для восстановления, результат должен быть пустой строкой.
Пример
Вход:{"set", "x", "5"}, {"add", "y", "3"}, {"sub", "z", "4"}
Выход: x = 5 y += 3 z -= 4
Другой пример
Вход: {"set", "a", "10"}, {"invalid", "b", "20"}, {"add", "c", "3"}
Выход: a = 10 c += 3
Задача 5
Платформа: CodeWars
Название задачи: Combining N Ratios (Комбинирование N соотношений)
Ссылка на задачу: https://www.codewars.com/kata/69e4c22bd10a363dd5b75a7f
Сложность: 6 kyu
Уже решили (На момент написания статьи): 20 из 42
Тэги: Algorithms, Fundamentals
Оригинальное описание задачи:
Task
Your task is similar to the kata above, however now you are not limited to only 2 sets of ratios - you will be given an array of ratios as strings, and you must return a combined ratio in its simplest form, as a string. See the example below:
Example:
ratio_combinator(["12:4","3:7","24:30"]) -> '36:12:28:35'
The given input ratios may not be in their simplest form, and the inputs range from `[1,10^5]` (1 to 1e5 inclusive).
Пояснение задачи:
Задача усложнена по сравнению с предыдущим ката: теперь вместо двух фиксированных наборов коэффициентов (как в исходной задаче) нам предоставляется произвольное количество строковых представлений отношений (дробей), представленных в формате `«числитель:знаменатель»`.
Необходимо:
- Преобразовать каждую дробь в её числовое представление (целые числа).
- Привести все дроби к общему знаменателю.
- Сложить числители соответствующих дробей, сохраняя общий знаменатель.
- Вернуть итоговое отношение в виде строки в простейшем виде, используя двоеточия для разделения частей отношения.
Пример: Вход: ["12:4", "3:7", "24:30"]
Шаги решения:
1. Преобразуем дроби в числовые значения: - 12:4 → 3:1 - 3:7 → 3:7 - 24:30 → 4:5
2. Приводим дроби к общему знаменателю (наименьший общий знаменатель = 35): - 3:1 → 105:35 - 3:7 → 15:35 - 4:5 → 28:35 3. Складываем числители: - 105 + 15 + 28 = 148
4. Возвращаем результат в простейшей форме: - 148:35 Выход: '148:35'
Дополнительные моменты:
- Дроби могут быть представлены в несократимом виде, либо содержать большие числа (до 10^5 включительно). - Необходимо учитывать возможность сокращения итогового отношения до простейшего вида.
Подходы к решению:
1. Использовать модуль для нахождения наибольшего общего делителя (НОД) и наименьшего общего знаменателя (НОЗ).
2. Переводить дроби в числовой вид, приводить их к общему знаменателю и суммировать числители.
3. Сокращать итоговую дробь до простейшего вида перед возвращением результата.
Задача 6
Платформа: CodeWars
Название задачи: Which are in? (Какие находятся в?)
Ссылка на задачу: https://www.codewars.com/kata/550554fd08b86f84fe000a58
Сложность: 6 kyu
Уже решили (На момент написания статьи): 86 697 из 368 601
Тэги: Arrays, Lists, Strings, Refactoring
Оригинальное описание задачи:
Given two arrays of strings `a1` and `a2` return a sorted array `r` in lexicographical order of the strings of `a1` which are substrings of strings of `a2`.
Example 1: `a1 = ["arp", "live", "strong"]`
`a2 = ["lively", "alive", "harp", "sharp", "armstrong"]`
returns `["arp", "live", "strong"]`
Example 2:
`a1 = ["tarp", "mice", "bull"]`
`a2 = ["lively", "alive", "harp", "sharp", "armstrong"]`
returns `[]`
Notes:
- Arrays are written in "general" notation. See "Your Test Cases" for examples in your language.
- In Shell bash `a1` and `a2` are strings. The return is a string where words are separated by commas.
- Beware: In some languages `r` must be without duplicates.
Пояснение задачи:
Задача состоит в следующем:
Нам даны два массива строк: `a1` и `a2`. Нужно найти и отсортировать лексикографически строки из массива `a1`, которые являются подстроками хотя бы одной строки из массива `a2`.
Пример:
- Массивы: `a1 = ["arp", "live", "strong"]`
`a2 = ["lively", "alive", "harp", "sharp", "armstrong"]`
- Подстроки из `a1`, встречающиеся в `a2`: "arp" (подстрока в строке "harp") "live" (подстрока в строке "alive") "strong" (подстрока в строке "armstrong")
- Результат: отсортированный массив: `["arp", "live", "strong"]`
Дополнительные условия:
- Возвращаемый результат должен быть отсортирован по возрастанию в лексикографическом порядке.
- Если строка встречается в нескольких строках массива `a2`, она должна учитываться только один раз.
- В некоторых языках программирования (например, в Shell bash) возвращаемый результат представляет собой строку, где слова разделены запятыми.
- Важно исключить дубликаты строк в результате.
Примечания:
- Строки сравниваются строго лексикографически, то есть строки сортируются по буквам слева направо.
- Извлечение подстрок происходит строго посимвольно, без учета пробелов и других символов.
- Массивы могут содержать строки разной длины и содержания.
Заключение:
Платформа: CodeWars
Название задачи: Reversed sequence (Обратная последовательность)
Ссылка на задачу: https://www.codewars.com/kata/5a00e05cc374cb34d100000d
Сложность: 8 kyu
Уже решили (На момент написания статьи): 163 839 из 345 902
Тэги: Fundamentals
Оригинальное описание задачи:
Build a function that returns an array of integers from n to 1 where n>0.
Example : `n=5` --> `[5,4,3,2,1]`
Пояснение задачи:
Задача состоит в создании функции, формирующей массив целых чисел от заданного положительного числа n до единицы включительно.
Пример:
- Если n = 5, результатом будет массив [5, 4, 3, 2, 1]
- Если n = 3, результатом будет массив [3, 2, 1]
Требования:
- Функция должна принимать положительное целое число n > 0.
- Возвращаемый массив должен содержать числа от n до 1 включительно.
- Необходимо учитывать возможные реализации функции в разных языках ассемблера (NASM, RISC-V) и интерпретируемом языке (BF).
Пояснения:
- Для языка NASM функция возвращает массив через указатель и дополнительно передает длину массива через второй параметр.
- Для RISC-V массив формируется непосредственно в переданный указатель, и функция ничего не возвращает.
- В языке BF предполагается ввод одного байта, который интерпретируется как начальное значение n, и выводится последовательность байтов, представляющих обратный отсчет.
Примеры:
- Ввод: n = 5 - Результат: [5, 4, 3, 2, 1]
- Ввод:n = 8 - Результат: [8, 7, 6, 5, 4, 3, 2, 1]
Платформа: CodeWars
Название задачи: Grasshopper - Terminal game combat function (Grasshopper - боевая функция терминальной игры)
Ссылка на задачу: https://www.codewars.com/kata/586c1cf4b98de0399300001d
Сложность: 8 kyu
Уже решили (На момент написания статьи): 45 969 из 78 331
Тэги: Fundamentals
Оригинальное описание задачи:
Create a combat function that takes the player's current health and the amount of damage received, and returns the player's new health.
Health can't be less than 0.
Пояснение задачи:
Задача требует реализовать функцию, моделирующую бой персонажа:
- Функция принимает два параметра: текущее здоровье игрока (`player_health`) и нанесённый урон (`damage`).
- Нужно рассчитать новое значение здоровья после получения урона.
- Важно учесть ограничение: здоровье не должно становиться отрицательным числом.
Пример вызова функции:
new_health = combat(100, 20) print(new_health)
выведет 80
Пояснение:
- Если игрок получает урон, от текущего здоровья вычитается нанесённый урон.
- Если результатом является число меньше нуля, возвращаем `0`, так как здоровье не может быть отрицательным.
Пример:
- Текущий уровень здоровья: 100, урон: 20 → новое здоровье: 80
- Текущий уровень здоровья: 50, урон: 60 → новое здоровье: 0 (ограничение снизу)
Платформа: CodeWars
Название задачи: Combining Ratios (Комбинирующие коэффициенты)
Ссылка на задачу: https://www.codewars.com/kata/69e3d400196a47ceacde554f
Сложность: 7 kyu
Уже решили (На момент написания статьи): 37 из 206
Тэги:
Оригинальное описание задачи:
2 ratios given as strings in the form A:B and B:C
eg 12:4 3:7
Your program must return the ratio of A:B:C in simplest form
eg 12:4 3:7 ---> 9:3:7
Given Ratios are not in simplest form A,B and C are always in the range of 1 --> 1e5
return as a string in the format "9:3:7"
Пояснение задачи:
Задача требует найти общее отношение трёх чисел (A, B, C), заданных двумя соотношениями вида A:B и B:C, и представить его в простейшем виде.
Пояснение:
1. Исходные данные: Нам даны два отношения вида A:B и B:C. Например, 12:4 и 3:7.
2. Целевая задача: Нужно найти единое отношение A:B:C в простейшей форме. То есть, если исходные числа большие, мы должны привести их к наименьшим целым числам, сохраняя пропорцию.
3. Алгоритм решения:
- Сначала приведём каждое соотношение к простейшему виду (наименьшие целые числа):
- Для 12:4 получаем 3:1 (разделив обе части на наибольший общий делитель, НОД(12, 4) = 4).
- Для 3:7 уже ничего не нужно менять, оно и так в простейшем виде.
- Затем найдём общее отношение A:B:C, где A соответствует 3, B соответствует 1 и C соответствует 7.
Поскольку B является общим знаменателем, нам нужно выразить A и C через B:
A = 3 * 7 = 21 C = 7 * 7 = 49
- Таким образом, итоговое отношение будет 21:1:49, которое уже приведено к простейшему виду.
4. Дополнительные замечания:
- Все числа находятся в диапазоне от 1 до 10^5, поэтому использовать стандартные алгоритмы нахождения НОД и упрощения дробей вполне допустимо.
- Если одно из отношений изначально находится в простейшем виде, его не нужно изменять.
Пример реализации:
Пусть дана пара отношений 12:4 и 3:7.
После приведения к простейшему виду получаем 3:1 и 3:7.
Далее находим A=3 * 7 = 21, B=1 * 7 = 7, C=7 * 7 = 49.
Итоговый результат — 21:7:49.
Платформа: CodeWars
Название задачи: Recover My Code! (Восстановите Мой код!)
Ссылка на задачу: https://www.codewars.com/kata/69d3d8eac800a4e71c7e378d
Сложность: 7 kyu
Уже решили (На момент написания статьи): 67 из 335
Тэги:
Оригинальное описание задачи:
Description
I lost my source code! All I have left are the tokens.Help me recover the source.
Tokens
Each token is represented as an array in the following format:
`{command, arg1, arg2}`
Example:
`{"set", "x", "5"}`
Commands
Each valid command translates to a line of source code:
`{"set", "x", "5"}` -> `x = 5`
`{"add", "y", "3"}` -> `y += 3`
`{"sub", "a", "4"}` -> `a -= 4`
Rules
- The first argument is always a variable.
- The second argument is either a number or a variable. Task Given an array of tokens, return a string containing the reconstructed source code.
Constraints
- Tokens are given in the order they should appear in the source code.
- Each command must be separated by a newline character (`n`).
- Invalid commands should be ignored.
- Only `set`, `add`, and `sub` are valid commands.
- Variables consist only of letters [a-zA-Z] and may be longer than one character.
- Spaces in the output do not matter (`a=5`, `a =5` and `a = 5` are all valid).
- There should not be any empty lines in the output. - If there are no valid commands, return an empty string.
Пояснение задачи:
Задача заключается в восстановлении исходного программного кода по набору токенов. Формат входных данных Токены представлены массивами вида `{команда, аргумент1, аргумент2}`, где:
- команда — одно из допустимых значений: "set", "add", "sub"
- аргумент1 — переменная (строка, состоящая только из букв латинского алфавита)
- аргумент2 — либо число, либо другая переменная
Правила преобразования команд:
Каждая команда должна быть преобразована в строку исходного кода согласно следующему правилу:
- Команда "set" соответствует присваиванию значения переменной: `переменная = значение`
- Команда "add" означает инкремент переменной: `переменная += значение`
- Команда "sub" означает декремент переменной: `переменная -= значение` Ограничения
- Токены поступают строго в порядке, в котором они должны отображаться в итоговом коде.
- Недопустимые команды игнорируются.
- Переменные состоят только из символов `[a-zA-Z]`.
- Допускаются любые числовые значения.
- Между командами в итоговом результате обязательно должна быть новая строка (`n`).
- Если ни одна команда не подходит для восстановления, результат должен быть пустой строкой.
Пример
Вход:{"set", "x", "5"}, {"add", "y", "3"}, {"sub", "z", "4"}
Выход: x = 5 y += 3 z -= 4
Другой пример
Вход: {"set", "a", "10"}, {"invalid", "b", "20"}, {"add", "c", "3"}
Выход: a = 10 c += 3
Платформа: CodeWars
Название задачи: Combining N Ratios (Комбинирование N соотношений)
Ссылка на задачу: https://www.codewars.com/kata/69e4c22bd10a363dd5b75a7f
Сложность: 6 kyu
Уже решили (На момент написания статьи): 20 из 42
Тэги: Algorithms, Fundamentals
Оригинальное описание задачи:
Task
Your task is similar to the kata above, however now you are not limited to only 2 sets of ratios - you will be given an array of ratios as strings, and you must return a combined ratio in its simplest form, as a string. See the example below:
Example:
ratio_combinator(["12:4","3:7","24:30"]) -> '36:12:28:35'
The given input ratios may not be in their simplest form, and the inputs range from `[1,10^5]` (1 to 1e5 inclusive).
Пояснение задачи:
Задача усложнена по сравнению с предыдущим ката: теперь вместо двух фиксированных наборов коэффициентов (как в исходной задаче) нам предоставляется произвольное количество строковых представлений отношений (дробей), представленных в формате `«числитель:знаменатель»`.
Необходимо:
- Преобразовать каждую дробь в её числовое представление (целые числа).
- Привести все дроби к общему знаменателю.
- Сложить числители соответствующих дробей, сохраняя общий знаменатель.
- Вернуть итоговое отношение в виде строки в простейшем виде, используя двоеточия для разделения частей отношения.
Пример: Вход: ["12:4", "3:7", "24:30"]
Шаги решения:
1. Преобразуем дроби в числовые значения: - 12:4 → 3:1 - 3:7 → 3:7 - 24:30 → 4:5
2. Приводим дроби к общему знаменателю (наименьший общий знаменатель = 35): - 3:1 → 105:35 - 3:7 → 15:35 - 4:5 → 28:35 3. Складываем числители: - 105 + 15 + 28 = 148
4. Возвращаем результат в простейшей форме: - 148:35 Выход: '148:35'
Дополнительные моменты:
- Дроби могут быть представлены в несократимом виде, либо содержать большие числа (до 10^5 включительно). - Необходимо учитывать возможность сокращения итогового отношения до простейшего вида.
Подходы к решению:
1. Использовать модуль для нахождения наибольшего общего делителя (НОД) и наименьшего общего знаменателя (НОЗ).
2. Переводить дроби в числовой вид, приводить их к общему знаменателю и суммировать числители.
3. Сокращать итоговую дробь до простейшего вида перед возвращением результата.
Платформа: CodeWars
Название задачи: Which are in? (Какие находятся в?)
Ссылка на задачу: https://www.codewars.com/kata/550554fd08b86f84fe000a58
Сложность: 6 kyu
Уже решили (На момент написания статьи): 86 697 из 368 601
Тэги: Arrays, Lists, Strings, Refactoring
Оригинальное описание задачи:
Given two arrays of strings `a1` and `a2` return a sorted array `r` in lexicographical order of the strings of `a1` which are substrings of strings of `a2`.
Example 1: `a1 = ["arp", "live", "strong"]`
`a2 = ["lively", "alive", "harp", "sharp", "armstrong"]`
returns `["arp", "live", "strong"]`
Example 2:
`a1 = ["tarp", "mice", "bull"]`
`a2 = ["lively", "alive", "harp", "sharp", "armstrong"]`
returns `[]`
Notes:
- Arrays are written in "general" notation. See "Your Test Cases" for examples in your language.
- In Shell bash `a1` and `a2` are strings. The return is a string where words are separated by commas.
- Beware: In some languages `r` must be without duplicates.
Пояснение задачи:
Задача состоит в следующем:
Нам даны два массива строк: `a1` и `a2`. Нужно найти и отсортировать лексикографически строки из массива `a1`, которые являются подстроками хотя бы одной строки из массива `a2`.
Пример:
- Массивы: `a1 = ["arp", "live", "strong"]`
`a2 = ["lively", "alive", "harp", "sharp", "armstrong"]`
- Подстроки из `a1`, встречающиеся в `a2`: "arp" (подстрока в строке "harp") "live" (подстрока в строке "alive") "strong" (подстрока в строке "armstrong")
- Результат: отсортированный массив: `["arp", "live", "strong"]`
Дополнительные условия:
- Возвращаемый результат должен быть отсортирован по возрастанию в лексикографическом порядке.
- Если строка встречается в нескольких строках массива `a2`, она должна учитываться только один раз.
- В некоторых языках программирования (например, в Shell bash) возвращаемый результат представляет собой строку, где слова разделены запятыми.
- Важно исключить дубликаты строк в результате.
Примечания:
- Строки сравниваются строго лексикографически, то есть строки сортируются по буквам слева направо.
- Извлечение подстрок происходит строго посимвольно, без учета пробелов и других символов.
- Массивы могут содержать строки разной длины и содержания.
Итак, мы подошли к завершению. Надеюсь, статья была для вас увлекательной. Приглашаю вас подключиться к решению алгоритмических задач — делитесь своими вариантами решений и мнениями в комментариях, поддерживая позитивный настрой дискуссии. Жду вас в следующей статье!
Вступайте в нашу телеграмм-группу Инфостарт