Имя: Пароль:
1C
1С v8
Алгоритм перебора вариантов
,
0 seller7
 
17.05.17
15:28
Есть несколько таблиц значений. В каждой из них разное количество значений. Необходимо составить список всех возможных вариантов без повторений.

Например, дан массив из 3-х таблиц (а может быть сколько угодно):
Таблица1   Таблица2   Таблица3  
- А        - 1        - x  
           - 2        - y
           - 3        
Решение:
- А 1 x
- А 1 y
- А 2 x
- А 2 y
- А 3 x
- А 3 y

Головоломка...
1 Ёпрст
 
17.05.17
15:29
cross join в запросе + различные.
Усё
2 seller7
 
17.05.17
15:29
Поплыло оформление таблиц.. Суть такая:

Таблица1: А
Таблица2: 1, 2, 3
Таблица3: x, y
3 Ёпрст
 
17.05.17
15:36
(2)
Выбрать различные
   t1.x,t2.x,t3.x
ИЗ &t1 как t1,&t2 как t2,&t3 как t3
4 NaumS
 
17.05.17
15:39
(2) наймите профессионала.
5 PiotrLoginov
 
17.05.17
15:45
И таблицы - не таблицы, и перебор - не перебор... Эх, печаль.
6 Garykom
 
гуру
17.05.17
15:55
(3) Все хорошо кроме того что невозможно распараллеливание и постепенная выдача результата по мере составления новых сочетаний.

Для малых таблиц (до 200-300 строк в каждой) запросы идеальны, но если будет >1000 (100010001000=?) то ждать устанут.
8 Garykom
 
гуру
17.05.17
15:56
(6) 1000х1000х1000=?
9 Ёпрст
 
17.05.17
16:02
(6) ну, написать 3 цикла , каждый школьник может
10 Ёпрст
 
17.05.17
16:02
перед этим, свернув 3 таблички, чтоб значения в них были уникальными
11 СвинТуз
 
17.05.17
16:03
(0)
а в чем подвох то? цикл во вложенный цикл?
12 СвинТуз
 
17.05.17
16:04
Тз свернуть
13 Naf2017
 
17.05.17
16:04
(6) а зачем пользователям столько вариантов?
14 Ёпрст
 
17.05.17
16:05
Для каждого стр1 из т1 цикл
  Для каждого стр2 из т2 цикл
    Для каждого стр3 из т3 цикл
       стр = тИтог.Добавить();
       стр.д = стр1.х;
       стр.у = стр2.х;
       стр.ш = стр3.х;
     КонецЦикла;
   КонецЦикла;
КонецЦикла;
15 Ёпрст
 
17.05.17
16:06
(11) выпускные скоро в школе, готовятся к экзаменам по информатике
16 СвинТуз
 
17.05.17
16:08
(14)
число таблиц не заданно.

(15)
Бесконечный цикл надо
а массивы в массив положить
17 СвинТуз
 
17.05.17
16:08
предварительно удалив дубли
18 СвинТуз
 
17.05.17
16:08
тривиально
19 Вафель
 
17.05.17
16:08
Это же просто декартово произведение
20 СвинТуз
 
17.05.17
16:12
Не бесконечный цикл , а цикл по элементам массива-контейнера.
Рекурсия = зло
21 СвинТуз
 
17.05.17
16:13
На паскале это совсем просто
22 Garykom
 
гуру
17.05.17
16:26
Программист всегда исправляет последнюю ошибку.