Имя: Пароль:
1C
1С v8
1C закрывает с сообщением о нехватке памяти )
,
0 Румата
 
11.07.18
06:10
Доброго времени суток. Стоит задача расположить отрезки на временной оси без пересечений.

В строках ТЗ находятся эти самые отрезки, каждая строка - отрезок. Есть колонка ТЗ типа массив в которой находятся все возможные размещения данного отрезка на временной оси.

Захотел создать массив в котором будут все возможные варианты расположения. Простым перебором пытаюсь этот массив заполнить. Всего отрезков 11. У каждого отрезка 10-12 положений. На 5-м отрезке 1С падает и пишет что не хватает памяти ). Может не заполнять массив а просто перебирать и смотреть пересечения ? Как думаете ? Может у вас схожая задача была ?
1 shadow_sw
 
11.07.18
06:14
все с временем рекламы тренируешься? :)
2 Румата
 
11.07.18
06:16
(shadow_sw) Ага ) Уже совсем близко конец )
3 shadow_sw
 
11.07.18
06:17
по теме - а если сравнивать первый и последний элемент массива, в каждом массиве
4 VladZ
 
11.07.18
06:21
(0) " все возможные размещения данного отрезка на временной оси" - зачем их хранить?
5 Румата
 
11.07.18
06:22
(shadow_sw) Сори, не понимаю тебя. Для наглядности попробую здесь подробнее описать :

Отрезок состоит из множества точек. Каждая точка в свою очередь строка ТЗ. в ТЗ две колонки "дата" и "Координата Х".

т.е. строки тз одного отрезка записываются так

01.06.2018 | 1
02.06.2018 | 1
03.06.2018 | 1

Это я показал отрезок шириной 1 клетка с 1 по 3 июня 2018 г.
6 Румата
 
11.07.18
06:24
(VladZ) Хотел заполнить массив всеми возможными значениями. А потом просто перебирать массив, элементами которого являются ТЗ. Это ТЗ пробовать сворачивать и сравнивать количество строк в ТЗ до свертки и после. Если количество строк не изменилось - значит ни одной повторяющейся точки нет и отрезки не пересекаются.
7 VladZ
 
11.07.18
07:01
(6) По-моему, лажа какая-то.
8 Зуекщмшср
 
11.07.18
07:07
Нейронную сеть писать надо...
9 Cyberhawk
 
11.07.18
07:28
Покажи на картинке
10 Румата
 
11.07.18
07:33
11 VladZ
 
11.07.18
07:38
(0) Давай начнем с начала. Для чего это нужно? Это тестовая задача? Или задача, имеющая какое-то практическое значение?
12 VladZ
 
11.07.18
07:42
У отрезка есть начало и конец. Эти данные и должны храниться.

Алгоритм проверки:
- берем отрезом
- смотрим, входит ли начало этого отрезка во временной интервал других отрезков.
- смотрим, входил ли конец этого отрезка во временной интервал других отрезков.
- если ни начало, ни конец не входят - все ОК.
- идем дальше, пока не переберем все отрезки.
13 Cyberhawk
 
11.07.18
07:44
Покажи сабж на картинке, епта
14 VladZ
 
11.07.18
07:46
(13) Картинка в (10)
15 Румата
 
11.07.18
07:47
(VladZ) Эта задача практическая. На временной оси отрезками изображены рекламные ролики. Менеджеру звонит очередной клиент и говорит параметры ролика, который он хочет чтобы запустили в эфир. т.е. говорит дату начала и дату окончания проигрывания ролика, а так же периодичность (1 раз в минуту, 1 раз в 2 минуты и т.д) и длину ролика кратную 5-ти секундам. Программа должна автоматически найти свободное место и вставить туда ролик. Если надо, то передвинув по вертикальной оси ролики, которые мешают.
16 Румата
 
11.07.18
07:48
Если же ролик нельзя разместить (не удается найти место), то выдать соответствующее предупреждение.
17 Румата
 
11.07.18
07:54
Задача усложняется тем, что ролик повторяется, например 1 раз в минуту. На рисунке это видно. Временную ось разбили специально на 10 блоков  - 10 минут (слева от таблицы показан номер блока). Каждый блок - 1 минута. Повтор ролика 1 раз в 2 минуты будет изображен например во 2,4,6,8 и 10 блоке.
18 Румата
 
11.07.18
07:57
Ну и продолжительность ролика 5 секунд - 1 клетка по вертикали, 10 секунд - 2 клетки, 15 - 3 и т.д. Поэтому я решил  каждый отрезок хранить в виде координат. Чтобы узнать пересекаются отрезки или нет я просто все координаты всех отрезков сбрасываю в ТЗ с двумя колонками дата и координата по вертикали. Если после свертки ТЗ становится меньше строк - значит пересечения есть.
19 Segate
 
11.07.18
08:03
задачу о ранце смотрел? мне кажется можно поиграться с ней и получить довольно приемлимый результат.
20 Румата
 
11.07.18
08:04
(VladZ) Я так и хочу перебрать. Роликов может быть максимум 12, т.к. 5 секунд * 12 = 60, а потом идут повторы. у каждого ролика может быть 12 разных положений. Получается 12 ! возможных вариантов ? 479.001.600 ? Или я не прав ?
21 Румата
 
11.07.18
08:04
(Segate) Нет, не смотрел.
22 Segate
 
11.07.18
08:16
(21) а вообще какую-то теорию по np-полным задачам читал? Ну или в курсе что к чему? Или так, нахрапом, перебором решаешь?
23 Румата
 
11.07.18
08:29
(Segate) У меня "ценностей" у вещей нет, каждый отрезок должен попасть в рюкзак (отобразится на графике). )
24 dmpl
 
11.07.18
08:31
(0) Тогда будешь ждать до старости. Такие задачи точное решение в разумное время не позволяют получить.
2 + 2 = 3.9999999999999999999999999999999...