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

30.09.24

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

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

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


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

В предыдущей части (нажмите на строку) мы:

  • Написали систему отображения лайков как в социальных сетях
  • Искали нечетное количество вхождений в массиве
  • Исключали значения одного массива из другого
  • Научились вычислять цифровой корень числа
  • Находили все кратные трём и пяти числа в заданном заранее диапазоне

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

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


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

 
 Задача 1

 Платформа: CodeWars

 Название задачи: Count characters in your string (Посчитай количество букв в твоей строке)

 Ссылка на задачу: https://www.codewars.com/kata/52efefcbcdf57161d4000091 (Нажмите на строку)

 Сложность: 6 kyu

 Тэги: Строки, Фундаментальные

 Оригинальное описание задачи:

The main idea is to count all the occurring characters in a string. If you have a string like aba, then the result should be {'a': 2, 'b': 1}.

What if the string is empty? Then the result should be empty object literal, {}.

Пояснение:

Суть задачи заключается в том чтобы посчитать количество вхождений каждой буквы в строке и вернуть объект, ключом которого будет символ а значением количество вхождений этого символа. Вполне себе понятно, давайте попробуем!


Решение:

Для начала нам необходимо создать структуру, куда мы будем добавлять символы и число их вхождений. Далее пишем цикл, перебираем все символы исходной строки, получаем их количество вхождений и добавляем в нашу структуру. Далее из структуры получаем JSON строку и выводим! Вот как это будет выглядеть в коде:

ИсходнаяСтрока = "aba";
//
КонечнаяСтруктура = Новый Структура;
Для НомерСтроки = 1 По СтрДлина(ИсходнаяСтрока) Цикл
	КонечнаяСтруктура.Вставить(Сред(ИсходнаяСтрока,НомерСтроки,1),СтрЧислоВхождений(ИсходнаяСтрока,Сред(ИсходнаяСтрока,НомерСтроки,1)));
КонецЦикла;
//
ЗаписьJSON = Новый ЗаписьJSON;
ЗаписьJSON.УстановитьСтроку();
ЗаписатьJSON(ЗаписьJSON,КонечнаяСтруктура);
Вывод = ЗаписьJSON.Закрыть();

Заключение:

Простая и интересная получилась задача! Идём дальше:

 
 Задача 2
 
 Задача 3
 
 Задача 4
 
 Задача 5
 
 Новое в конфигурации Algo1C:

Заключение:

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

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

См. также

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

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

1 стартмани

30.01.2024    2742    stopa85    12    

36

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

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

19.10.2023    6663    user1959478    50    

36

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

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

2 стартмани

29.09.2023    2675    maksa2005    8    

25

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

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

1 стартмани

09.06.2023    10211    7    SpaceOfMyHead    18    

61

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

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

03.04.2023    3946    RustIG    9    

25

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

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

23.11.2022    3061    gzharkoj    14    

24

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

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

1 стартмани

21.03.2022    8881    7    kalyaka    11    

44
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. dhurricane 30.09.24 11:59 Сейчас в теме
В задаче 1 решение работает только с буквами, хотя в исходной постановке такого ограничения нет.
В задаче 4 решение не проходит тесты из примеров к задаче. Плюс привязано к локализации: у Вас разделитель разрядов числа запятая, потому работает. У других это может быть неразрывный пробел, и решение упадет с ошибкой.
В задаче 5 решение не проходит тесты из примеров к задаче.
triviumfan; +1 Ответить
2. triviumfan 96 07.10.24 14:51 Сейчас в теме
(1) Даже если поменять структуру на соответствие, то приведенное решение 1 задачи соответствует сложности n*n, что несерьёзно. Дальше даже читать не стал.
Оставьте свое сообщение