Решение алгоритмических задач на базе 1С:Предприятие | Новый сборник

30.01.25

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

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

Добро пожаловать на новый выпуск рубрики "Algo1C", в которой я стараюсь регулярно находить новые задачи по программированию и делиться их решениями с вами!

Цель рубрики заключается в тренировке практик по применению различных алгоритмов, в поддержании навыка "Писать код" в тонусе, ну и, само собой, немного поразвлечься!


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

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

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

 

Дисклеймер:

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


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

 
 Задача 1

 Платформа: CodeWars

 Название задачи: Satisfying numbers (Удовлетворительные числа)

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

 Сложность: 7 (7 / 8)

 Уже решили (На момент написания статьи): 436 из 825

 ТэгиАлгоритмы

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

2520 is the smallest number that can be divided by each of the integers from 1 to 10 without any remainder.

Find the smallest positive number that is evenly divisible by all of the integers from 1 to n, (in this kata, 1≤n≤401 \le n \le 40).

For example:

5 --> 60      // 1 to 5 can all divide evenly into 60
10 --> 2520

Пояснение задачи:

Задача заключается в том, чтобы найти наименьшее число, которое делится без остатка на все целые числа от 1 до n. То есть нам нужно найти такое минимальное число, что при делении его на любое целое число от 1 до n результат будет целым числом.
Например, если n=5, то ответ должен быть 60, потому что 60 делится нацело на 1, 2, 3, 4 и 5.

Решение задачи:

 
 (Нажмите на спойлер чтобы увидеть решение)
 
 Задача 2

 Платформа: CodeWars

 Название задачи: Triple trouble (Тройная угроза)

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

 Сложность: 6 (6 / 8)

 Уже решили (На момент написания статьи): 4,775 из 15,165

 ТэгиАлгоритмы

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

Write a function which takes two integers num1 and num2 and returns 1 if there is a straight triple of a digit at any place in num1 and also a straight double of the same digit in num2.

If this isn't the case, return 0.

Examples

451999277, 41177722899 -->  1 // num1 has straight triple 999s and num2 has straight double 99s
1222345, 12345 -->  0 // num1 has straight triple 2s but num2 has only a single 2
12345, 12345 -->  0
888, 77 --> 0 // num1 has three '8's, num2 has 2 '7's, but they are not the same digit
88888, 88888   --> 1 // more than 3 or 2 repetitions also count 
123123123, 123 --> 0 // '123' is not a single digit

Пояснение задачи:

По условию задачи мы будем получать два числа. Наша с вами цель заключается в том чтобы выяснить, повторяется ли какая-то конкретная цифра несколько раз подряд и в первом числе и во втором но с одним нюансом. В первом числе эта цифра должна повторяться три раза подряд а во втором всего-лишь два раза! Например в числах 451999277, 41177722899 цифра 9 повторяется три раза в первом числе и два раза во втором. В качестве результата мы должны будем возвращать 1 (Истина) если условие соблюдается и 0 (Ложь) если нет.

Решение задачи:

 
 (Нажмите на спойлер чтобы увидеть решение)
 
 Задача 3

 Платформа: CodeWars

 Название задачи: Array element parity (Равенство элементов массива)

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

 Сложность: 7 (7 / 8)

 Уже решили (На момент написания статьи): 2,722 из 8,856

 ТэгиМассивы, Алгоритмы

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

In this Kata, you will be given an array of integers whose elements have both a negative and a positive value, except for one integer that is either only negative or only positive. Your task will be to find that integer.

Examples:

[1, -1, 2, -2, 3] => 3

3 has no matching negative appearance

[-3, 1, 2, 3, -1, -4, -2] => -4

-4 has no matching positive appearance

[1, -1, 2, -2, 3, 3] => 3

(the only-positive or only-negative integer may appear more than once)

Good luck!

Пояснение задачи:

Наша с вами задача заключается в том, чтобы найти число в массиве, которое не имеет пары с противоположным знаком. То есть, если все числа имеют пару (например, для каждого положительного числа есть такое же отрицательное), то нужно найти единственное число, у которого такой пары нет. Например в массиве [1, -1, 2, -2, 3, 3] единственными числом без пары является число 3. Точно также и с массивом [-3, 1, 2, 3, -1, -4, -2] где единственным числом без бары будет являться -4

Решение задачи:

 
 (Нажмите на спойлер чтобы увидеть решение)
 
 Задача 4

 Платформа: CodeWars

 Название задачи: Are they square? (Они квадратные?)

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

 Сложность: 7 (7 / 8)

 Уже решили (На момент написания статьи): 1,494 из 4,258

 ТэгиМассивы, Фундаментальные

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

Write a function that checks whether all elements in an array are square numbers. The function should be able to take any number of array elements.

Your function should return true if all elements in the array are square numbers and false if not.

An empty array should return undefined / None / nil /false (for C). You can assume that all array elements will be positive integers.

Examples:

is_square([1, 4, 9, 16]) --> True

is_square([3, 4, 7, 9]) --> False

is_square([]) --> None

Пояснение задачи:

По условию задачи нам необходимо выяснить являются ли все элементы исходного массива квадратными числами. Квадратное число – это число, которое является результатом умножения целого числа само на себя, например, 4 – это квадратное число, потому что 2×2=4. Что касаемо задачи, для примера можем взять массив [1, 4, 9, 16] результатом проверки которого должна быть "Истина" ибо каждое число внутри является квадратным!

Решение задачи:

 
 (Нажмите на спойлер чтобы увидеть решение)
 
 Задача 5

 Платформа: CodeWars

 Название задачи: Find Screen Size (Найди размер экрана)

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

 Сложность: 7 (7 / 8)

 Уже решили (На момент написания статьи): 2,017 из 7,158

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

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

Cheesy Cheeseman just got a new monitor! He is happy with it, but he just discovered that his old desktop wallpaper no longer fits. He wants to find a new wallpaper, but does not know which size wallpaper he should be looking for, and alas, he just threw out the new monitor's box. Luckily he remembers the width and the aspect ratio of the monitor from when Bob Mortimer sold it to him. Can you help Cheesy out?

The Challenge

Given an integer width and a string ratio written as WIDTH:HEIGHT, output the screen dimensions as a string written as WIDTHxHEIGHT.

Note: The calculated height should be represented as an integer. If the height is fractional, truncate it.

Пояснение задачи:

По условию задачи нам дан размер ширины экрана монитора и соотношение сторон в формате "Ширина:Высота". Наша цель — вывести размеры экрана в формате "Ширина x Высота", где высота округляется вниз до ближайшего целого числа. Например если ширина равна 1920 пикселей, а соотношение сторон — "16:9", тогда высота = 1920 × (9/16) ≈ 1080

Решение задачи:

 
 (Нажмите на спойлер чтобы увидеть решение)
 
 Новое в конфигурации Algo1C:

Заключение:

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

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

Увидимся в новой статье!

Алгоритмы Математика CodeWars LeetCode Algo1C Задачи

См. также

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

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

1 стартмани

30.01.2024    4944    stopa85    12    

39

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

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

19.10.2023    9949    user1959478    54    

37

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

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

2 стартмани

29.09.2023    4788    maksa2005    8    

26

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

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

1 стартмани

09.06.2023    12512    8    SpaceOfMyHead    20    

62

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

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

03.04.2023    6038    RustIG    9    

25

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

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

23.11.2022    5148    gzharkoj    14    

25

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

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

1 стартмани

21.03.2022    9402    7    kalyaka    11    

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