Йо, меня зовут Наби. Заранее благодарю за чтение и желаю продуктивно провести время! Если после прочтения возникнут вопросы, пожелания или предложения, то буду рад ознакомиться со всем в комментариях!
Что было раньше:
В предыдущей части (нажмите на строку) мы решали задачу про троллей, возводили в квадрат каждую цифру числа, сортировали числа, фильтровали списки а также получали определенные части строк в зависимости от их длины!
В этой части вас ждут еще более интересные алгоритмические задачи. Давайте, приступим!
Перед началом чтения решения задачи, хочу призвать каждого к самостоятельному решению задачи, чтобы после вы могли сравнить своё решение с моим и обсудить это в комментариях. Буду рад послушать ваше мнение!
Решение новых задач:
Задача 1
Платформа: CodeWars
Название задачи: Who likes it? (Кому это нравится?)
Ссылка на задачу: https://www.codewars.com/kata/5266876b8f4bf2da9b000362 (Нажмите на строку)
Сложность: 6 kyu
Тэги: Строки, Фундаментальные
Оригинальное описание задачи:
You probably know the "like" system from Facebook and other pages. People can "like" blog posts, pictures or other items. We want to create the text that should be displayed next to such an item.
Implement the function which takes an array containing the names of people that like an item. It must return the display text as shown in the examples:
[] --> "no one likes this"
["Peter"] --> "Peter likes this"
["Jacob", "Alex"] --> "Jacob and Alex like this"
["Max", "John", "Mark"] --> "Max, John and Mark like this"
["Alex", "Jacob", "Mark", "Max"] --> "Alex, Jacob and 2 others like this"
Note: For 4 or more names, the number in "and 2 others"
simply increases.
Пояснение:
Задача описывают систему "Лайков" в популярных социальных сетях, когда под постом показывают несколько имён конкретных людей (Например твои друзья) и затем количество остальных людей. По условию нам будет дан массив имён из которого мы должны сформировать строку, которая подходит для системы лайков. Звучит интересно, давайте попробуем.
Решение:
Для начала напишем одно условие, которое проверяет меньше ли или равно количество людей единице. Почему сначала такое условие? Как вы можете заметить, первые 2 примера и остальные, помимо имён, отличаются одной деталью. Это форма слова "like". Если список пустой или в нем только один человек, форма слова "like" выглядит вот так "likes". Если больше одного то слово "like" всегда выглядит как есть. Далее уже в двух ветках этого условия просто будем проверять количество и менять шаблон вывода в зависимости от этого, придерживаясь условий задачи. Всё очень просто, давайте опишем кодом:
ИсходныйМассив = Новый Массив;
ИсходныйМассив.Добавить("Peter");
ИсходныйМассив.Добавить("Jacob");
ИсходныйМассив.Добавить("Alex");
ИсходныйМассив.Добавить("Max");
ИсходныйМассив.Добавить("John");
ИсходныйМассив.Добавить("Mark");
//
Шаблон = "";
Параметр = "";
Если ИсходныйМассив.Количество() <= 1 Тогда
Шаблон = "%1 likes this";
//
Если ИсходныйМассив.Количество() = 0 Тогда
Параметр = "no one";
Иначе
Параметр = ИсходныйМассив[0];
КонецЕсли;
Иначе
Шаблон = "%1 like this";
//
Если ИсходныйМассив.Количество() = 2 Тогда
Параметр = ИсходныйМассив[0] + " and " + ИсходныйМассив[1];
ИначеЕсли ИсходныйМассив.Количество() = 3 Тогда
Параметр = ИсходныйМассив[0] + ", " + ИсходныйМассив[1] + " and " + ИсходныйМассив[2];
ИначеЕсли ИсходныйМассив.Количество() > 3 Тогда
Параметр = ИсходныйМассив[0] + ", " + ИсходныйМассив[1] + " and " + Строка(ИсходныйМассив.Количество()-2) + " others";
КонецЕсли;
КонецЕсли;
//
Вывод = СтрШаблон(Шаблон,Параметр);
Заключение:
Очень интересная была задача. Мне кажется решение тоже получилось неплохим! Далее у нас:
Задача 2
Задача 3
Задача 4
Задача 5
Новое в конфигурации Algo1C:
Заключение:
Платформа: CodeWars
Название задачи: Who likes it? (Кому это нравится?)
Ссылка на задачу: https://www.codewars.com/kata/5266876b8f4bf2da9b000362 (Нажмите на строку)
Сложность: 6 kyu
Тэги: Строки, Фундаментальные
Оригинальное описание задачи:
You probably know the "like" system from Facebook and other pages. People can "like" blog posts, pictures or other items. We want to create the text that should be displayed next to such an item.
Implement the function which takes an array containing the names of people that like an item. It must return the display text as shown in the examples:
[] --> "no one likes this" ["Peter"] --> "Peter likes this" ["Jacob", "Alex"] --> "Jacob and Alex like this" ["Max", "John", "Mark"] --> "Max, John and Mark like this" ["Alex", "Jacob", "Mark", "Max"] --> "Alex, Jacob and 2 others like this"
Note: For 4 or more names, the number in
"and 2 others"
simply increases.
Пояснение:
Задача описывают систему "Лайков" в популярных социальных сетях, когда под постом показывают несколько имён конкретных людей (Например твои друзья) и затем количество остальных людей. По условию нам будет дан массив имён из которого мы должны сформировать строку, которая подходит для системы лайков. Звучит интересно, давайте попробуем.
Решение:
Для начала напишем одно условие, которое проверяет меньше ли или равно количество людей единице. Почему сначала такое условие? Как вы можете заметить, первые 2 примера и остальные, помимо имён, отличаются одной деталью. Это форма слова "like". Если список пустой или в нем только один человек, форма слова "like" выглядит вот так "likes". Если больше одного то слово "like" всегда выглядит как есть. Далее уже в двух ветках этого условия просто будем проверять количество и менять шаблон вывода в зависимости от этого, придерживаясь условий задачи. Всё очень просто, давайте опишем кодом:
ИсходныйМассив = Новый Массив;
ИсходныйМассив.Добавить("Peter");
ИсходныйМассив.Добавить("Jacob");
ИсходныйМассив.Добавить("Alex");
ИсходныйМассив.Добавить("Max");
ИсходныйМассив.Добавить("John");
ИсходныйМассив.Добавить("Mark");
//
Шаблон = "";
Параметр = "";
Если ИсходныйМассив.Количество() <= 1 Тогда
Шаблон = "%1 likes this";
//
Если ИсходныйМассив.Количество() = 0 Тогда
Параметр = "no one";
Иначе
Параметр = ИсходныйМассив[0];
КонецЕсли;
Иначе
Шаблон = "%1 like this";
//
Если ИсходныйМассив.Количество() = 2 Тогда
Параметр = ИсходныйМассив[0] + " and " + ИсходныйМассив[1];
ИначеЕсли ИсходныйМассив.Количество() = 3 Тогда
Параметр = ИсходныйМассив[0] + ", " + ИсходныйМассив[1] + " and " + ИсходныйМассив[2];
ИначеЕсли ИсходныйМассив.Количество() > 3 Тогда
Параметр = ИсходныйМассив[0] + ", " + ИсходныйМассив[1] + " and " + Строка(ИсходныйМассив.Количество()-2) + " others";
КонецЕсли;
КонецЕсли;
//
Вывод = СтрШаблон(Шаблон,Параметр);
Заключение:
Очень интересная была задача. Мне кажется решение тоже получилось неплохим! Далее у нас:
Ну что ж, пока на этом всё, надеюсь статья была увлекательной для вас, благодарю за внимание. Подключайтесь к решению алгоритмических задач вместе со мной, делитесь вашим мнением и решениями в комментариях! Увидимся в новой статье!