![]() |
|
Создать массив так чтобы ролики одной категории не шли друг за другом? | ☑ | ||
---|---|---|---|---|
0
Ночной Эльф
26.07.12
✎
14:56
|
Имеем таблицу значений в 1с 7.7 (в дальнейшем просто массив) в которой хранятся данные о рекламных роликах. Причем отсортированы они по категории т.е. друг за другом идут ролики из одной категории.
К примеру Автомобили ролик1 Автомобили ролик2 Автомобили ролик3 Сауны ролик1 Сауны ролик2 Имеем также массив в котором хранится количество сколько одна категория встречается в первом массиве, название категории и первый элемент данной категории в первом массиве т.е. откуда начинается данная категория в первом массиве. К примеру Автомобили 3 1 Сауны 2 4 Количество категорий которые могут быть в первом массиве не известно т.е. постоянно разное, но можно определить по длине массива 2. Необходимо создать массив роликов так чтобы ролики из одной и той же категории не шли друг за другом? |
|||
1
Ненавижу 1С
гуру
26.07.12
✎
14:59
|
невозможно, если есть куча маленьких и одна огромная категории
|
|||
2
Ночной Эльф
26.07.12
✎
15:00
|
еще варианты будут ?
|
|||
3
Classic
26.07.12
✎
15:02
|
Так (1) же доказал, что это в общем случае невозможно. Какие еще варианты услышать хочешь. Варианты, как реализовать невозможное?
|
|||
4
Михаил Козлов
26.07.12
✎
15:04
|
(3) Может быть интересует критерий, когда это возможно.
|
|||
5
Ночной Эльф
26.07.12
✎
15:05
|
(4) да хотел бы услышать когда это возможно?
|
|||
6
acsent
26.07.12
✎
15:06
|
зачем?
|
|||
7
Ненавижу 1С
гуру
26.07.12
✎
15:10
|
(5) пусть N - всего элементов и M (M<=N) - элементов в самой большой категории, тогда задача решаема, если M<=[(N+1)/2]
[] - целая часть |
|||
8
Classic
26.07.12
✎
15:10
|
(5)
Когда размер самой большой категории - 1 меньше половины общего числа роликов |
|||
9
Classic
26.07.12
✎
15:11
|
(7)
Одновременно:) |
|||
10
1Сергей
26.07.12
✎
15:11
|
Теперь телеканалы рекламные ролики в 1С сортируют...
|
|||
11
Ночной Эльф
26.07.12
✎
15:14
|
(7) так оно и есть что M (M<=N) а вот то чтобы меньше половины не факт
|
|||
12
Ночной Эльф
26.07.12
✎
15:14
|
(10) это не каналы плейлисты
|
|||
13
Ночной Эльф
26.07.12
✎
15:14
|
для другого
|
|||
14
Ненавижу 1С
гуру
26.07.12
✎
15:15
|
(11) что не факт? 10 роликов, 2 категории, а одной 2 ролика, в другой 8 - как решить?
|
|||
15
acsent
26.07.12
✎
15:15
|
вот например во время евро только пиво и виагру рекламировали подряд и никто не парился
|
|||
16
SUA
26.07.12
✎
15:23
|
ну и метод, если возможно распределение...
отсортируем массив2 по кол-ву роликов, берем 1ю категорию (самую большую) и составляем итоговый массив "через один" - ролик 1й категории, ролик 2й, ролик 1й, ролик 2й,..., ролик 1й, ролик 3й (когда 2я кат. закончится),итд когда закончится 1я - оставшиеся ролики каждой из категорий втыкаем в массив сначала "через 1" |
|||
17
Ночной Эльф
26.07.12
✎
15:35
|
(16) ага это на словах легко а ты попробуй в коде это
|
|||
18
Ночной Эльф
26.07.12
✎
15:35
|
+ еще не желательно чтобы категории шли через одну
|
|||
19
Fedot200
26.07.12
✎
15:37
|
(0) А зачем? Рекламу крутить на табло?
|
|||
20
МихаилМ
26.07.12
✎
15:40
|
(18)
определитесь польностью с условиями задачи |
|||
21
Ночной Эльф
26.07.12
✎
15:44
|
Вобщем то что в (7) полностью удовлетворяет условию так оно и есть получается
|
|||
22
Ненавижу 1С
гуру
26.07.12
✎
15:49
|
делаем два массива
Массив1 - ролики наибольшей категории, пусть его длина M: индексы от 0 до M-1 Массив2 - ролики остальных категорий, отсортированные по категориям, пусть его длина K=N-M, индексы от 0 до K-1 Разность индексов между соседними элементами Массив1 в результируещем будет: 1. T=N/M, если N делится на M 2. T=Цел(N/M)+1, иначе РезультирующийМассив[k*T] = Массив1[k], где k=0..M-1 РезультирующийМассив[k*T+h] = Массив2[k*(T-1)+h-1], где k=0..M-1, h=1..T-1 |
|||
23
Йохохо
26.07.12
✎
16:03
|
ролики надо на окружности еще располагать ;)
|
|||
24
SUA
26.07.12
✎
16:26
|
(17)легко - именно как написано
а еще можно более тупым методом - сначала все ролики которые по 2 подряд идут переносим в конец (пока там очевидно не останутся ролики самой длинной категории), потом распихиваем их куда найдем |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |