Решение алгоритмических задач на базе 1С:Предприятие [Часть #11]

27.09.24

Разработка - Математика и алгоритмы

Решаем новые задачи по программированию на 1С!

Йо, меня зовут Наби. Заранее благодарю за чтение и желаю продуктивно провести время! Если после прочтения возникнут вопросы, пожелания или предложения, то буду рад ознакомиться со всем в комментариях!


Что было раньше:

В предыдущей части (нажмите на строку) мы решали задачу про троллей, возводили в квадрат каждую цифру числа, сортировали числа, фильтровали списки а также получали определенные части строк в зависимости от их длины!

В этой части вас ждут еще более интересные алгоритмические задачи. Давайте, приступим!

Перед началом чтения решения задачи, хочу призвать каждого к самостоятельному решению задачи, чтобы после вы могли сравнить своё решение с моим и обсудить это в комментариях. Буду рад послушать ваше мнение!


Решение новых задач:

 
 Задача 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:

Заключение:

Ну что ж, пока на этом всё, надеюсь статья была увлекательной для вас, благодарю за внимание. Подключайтесь к решению алгоритмических задач вместе со мной, делитесь вашим мнением и решениями в комментариях! Увидимся в новой статье!

Алгоритмы Математика Оптимизация кода Задачи по программированию

См. также

Математика и алгоритмы Программист Платформа 1C v8.2 Конфигурации 1cv8 Россия Абонемент ($m)

На написание данной работы меня вдохновила работа @glassman «Переход на ClickHouse для анализа метрик». Автор анализирует большой объем данных, много миллионов строк, и убедительно доказывает, что ClickHouse справляется лучше PostgreSQL. Я же покажу как можно сократить объем данных в 49.9 раз при этом: 1. Сохранить значения локальных экстремумов 2. Отклонения от реальных значений имеют наперед заданную допустимую погрешность.

1 стартмани

30.01.2024    2709    stopa85    12    

35

Математика и алгоритмы Бесплатно (free)

Разработка алгоритма, построенного на модели симплекс-метода, для нахождения оптимального раскроя.

19.10.2023    6536    user1959478    50    

36

Математика и алгоритмы Разное Платформа 1С v8.3 Конфигурации 1cv8 Россия Абонемент ($m)

Расширение (+ обработка) представляют собою математический тренажер. Ваш ребенок сможет проверить свои знание на математические вычисление до 100.

2 стартмани

29.09.2023    2641    maksa2005    8    

25

Математика и алгоритмы Инструментарий разработчика Программист Платформа 1С v8.3 Мобильная платформа Россия Абонемент ($m)

Что ж... лучше поздно, чем никогда. Подсистема 1С для работы с регулярными выражениями: разбор выражения, проверка на соответствие шаблону, поиск вхождений в тексте.

1 стартмани

09.06.2023    10101    7    SpaceOfMyHead    18    

61

Математика и алгоритмы Программист Платформа 1С v8.3 Конфигурации 1cv8 Бесплатно (free)

Три задачи - три идеи - три решения. Мало кода, много смысла. Мини-статья.

03.04.2023    3922    RustIG    9    

25

Механизмы платформы 1С Математика и алгоритмы Программист Платформа 1С v8.3 Россия Бесплатно (free)

В статье анализируются средства платформы для решения системы линейных уравнений в 1С. Приводятся доводы в пользу некорректной работы встроенных алгоритмов, а значит потенциально некорректного расчета себестоимости в типовых конфигурациях.

23.11.2022    3001    gzharkoj    14    

24

Математика и алгоритмы Программист Платформа 1С v8.3 Россия Абонемент ($m)

Обычно под распределением понимают определение сумм пропорционально коэффициентам. Предлагаю включить сюда также распределение по порядку (FIFO, LIFO) и повысить уровень размерности до 2-х. 1-ое означает, что распределение может быть не только пропорциональным, но и по порядку, а 2-ое - это вариант реализации матричного распределения: по строкам и столбцам. Возможно вас заинтересует также необычное решение этой задачи через создание DSL на базе реализации текучего интерфейса

1 стартмани

21.03.2022    8848    7    kalyaka    11    

44
Оставьте свое сообщение