Форум программистов, компьютерный форум, киберфорум
VBA
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.68/25: Рейтинг темы: голосов - 25, средняя оценка - 4.68
0 / 0 / 0
Регистрация: 15.03.2018
Сообщений: 6

Все возможные сочетания с перестановкой

15.03.2018, 02:34. Показов 4992. Ответов 11
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Есть макрос, выводит на отдельный лист все возможные сочетания слов из таблицы.
Необходимо, чтоб он выдавал все возможные сочетания с перестановкой.

Задача
1 3
2 4

Результат сейчас
1 3
2 3
1 4
2 4

Надо, чтоб было
1 3
2 3
1 4
2 4
3 1
3 2
4 1
4 2

Если кому-то будет не трудно, помогите решить.
Спасибо.
Вложения
Тип файла: xls file.xls (39.5 Кб, 17 просмотров)
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
15.03.2018, 02:34
Ответы с готовыми решениями:

Написать программу, которая выводит все возможные сочетания из двух цифр!
Ребят, помогите написать программу, VBA Excel. Написать программу, которая выводит все возможные сочетания из двух цифр. Первая цифра...

Все возможные сочетания из k-элементов массива
Добрый день. Задачка наверняка решалась не раз, но сходу найти решение не получилось. Есть массив из n-элементов, необходимо вывести все...

Вывести все возможные сочетания гусей и кроликов
У гусей и кроликов вместе 2n лап. Сколько может быть гусей и кроликов (вывести все возможные сочетания) Ребят, кто знает как написать...

11
es geht mir gut
 Аватар для SoftIce
11274 / 4760 / 1183
Регистрация: 27.07.2011
Сообщений: 11,439
15.03.2018, 06:12
Цитата Сообщение от Ivancker Посмотреть сообщение
Надо, чтоб было
А 34 и 43 почему нет ? Не нужны ?
0
0 / 0 / 0
Регистрация: 15.03.2018
Сообщений: 6
15.03.2018, 11:13  [ТС]
3 4 и 4 3, также как 1 2 и 2 1 не нужны. Слова из одного столбца не должны повторяться.
0
6180 / 945 / 313
Регистрация: 25.02.2011
Сообщений: 1,381
Записей в блоге: 1
15.03.2018, 11:34
Сколько может быть слов (сколько столбцов и по сколько слов), от этого зависит количество комбинаций, которые могут не поместится на лист?
и какова конечная цель, нужны именно слова или числа?
0
es geht mir gut
 Аватар для SoftIce
11274 / 4760 / 1183
Регистрация: 27.07.2011
Сообщений: 11,439
15.03.2018, 11:41
Перебором можно сделать без проблем.
0
162 / 61 / 13
Регистрация: 03.03.2015
Сообщений: 176
15.03.2018, 12:07
У меня есть код перестановки на С. Могу скинуть. Его можно переделать на Васик.(наверное и покороче будет)))
0
0 / 0 / 0
Регистрация: 15.03.2018
Сообщений: 6
15.03.2018, 13:25  [ТС]
Цитата Сообщение от m-ch Посмотреть сообщение
Сколько может быть слов (сколько столбцов и по сколько слов), от этого зависит количество комбинаций, которые могут не поместится на лист?
и какова конечная цель, нужны именно слова или числа?
Максиму нужно 5-6 столбцов в каждом разное количество слов, на данный момент длинна максимального столбца 60 слов (может увеличится). Соответственно, решение нужно именно для слов. Разве нельзя при заполнении одного листа создать еще один и заполнять его?

Добавлено через 5 минут
Цитата Сообщение от SoftIce Посмотреть сообщение
Перебором можно сделать без проблем.
Нельзя ли существующий код подкрутить, чтоб делал перестановку?

Добавлено через 4 минуты
Цитата Сообщение от nape63 Посмотреть сообщение
У меня есть код перестановки на С. Могу скинуть. Его можно переделать на Васик.(наверное и покороче будет)))
Спасибо конечно, но я этого сделать не смогу Существующий макрос написан не мной.
0
es geht mir gut
 Аватар для SoftIce
11274 / 4760 / 1183
Регистрация: 27.07.2011
Сообщений: 11,439
15.03.2018, 14:53
Цитата Сообщение от Ivancker Посмотреть сообщение
Нельзя ли существующий код подкрутить, чтоб делал перестановку?
Не знаю, что у Вас там за код, но у меня при запуске вашего файла Excel просто рушится.
0
6180 / 945 / 313
Регистрация: 25.02.2011
Сообщений: 1,381
Записей в блоге: 1
15.03.2018, 15:08
Цитата Сообщение от Ivancker Посмотреть сообщение
Существующий макрос написан не мной.
Код скорее всего отсюда: Генерация всех возможных словосочетаний из столбцов
Прикрутить перестановки без проблем, но я как раз и хочу уточнить некоторые моменты, чтобы не делать бессмысленную работу.

Цитата Сообщение от Ivancker Посмотреть сообщение
Максиму нужно 5-6 столбцов в каждом разное количество слов, на данный момент длинна максимального столбца 60 слов (может увеличится).
6 столбцов по 60 слов с возможностью перестановок получаем 60^6 * 6! = 33592320000000 это очень большое число для генерации всех вариантов сочетания и вывода их на лист/листы в Excel, не указано, нужно ли пропускать слова или нет, в исходном коде есть такая возможность

Приведите конкретный пример слов.
Могу сделать данную генерацию, при этом нужно понимать, что генерировать и выводить словосочетания на лист в количестве нескольких миллионов - достаточно проблематично, как по времени генерации/выводу на лист, так и с последующей обработкой результатов.
1
0 / 0 / 0
Регистрация: 15.03.2018
Сообщений: 6
16.03.2018, 15:36  [ТС]
Цитата Сообщение от SoftIce Посмотреть сообщение
Не знаю, что у Вас там за код, но у меня при запуске вашего файла Excel просто рушится.
Не открывается возможно из-за того, что файл Excel 2003.

Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
Sub main()
Const n& = 10, m& = 25
Dim i&, j&, k&, r&, c&, s$, kArr&(), pArr&(), txtArr$(), kRws&, kClm&
ReDim kArr&(1 To n), pArr&(1 To n), txtArr$(1 To m, 1 To n)
 
For i = 1 To n
kArr(i) = Cells(2, i)
If i = 1 Then pArr(i) = kArr(i) Else pArr(i) = pArr(i - 1) * kArr(i)
For j = 1 To kArr(i)
txtArr(j, i) = Cells(j + 2, i)
Next j, i
 
kRws = Rows.Count
kClm = -Int(-pArr(n) / kRws)
If kClm < 2 Then kRws = pArr(n)
ReDim out(1 To kRws, 1 To kClm)
r = 0: c = 1
For j = 1 To pArr(n)
r = r + 1
If r > kRws Then r = 1: c = c + 1
 
For i = 1 To n
s = txtArr((j - 1) * kArr(i) \ pArr(i) Mod kArr(i) + 1, i)
out(r, c) = out(r, c) & IIf(out(r, c) = "" Or s = "", "", " ") & s
Next i, j
With Worksheets.Add
.[a1].Resize(kRws, kClm) = out
End With
End Sub
0
0 / 0 / 0
Регистрация: 15.03.2018
Сообщений: 6
16.03.2018, 15:41  [ТС]
Цитата Сообщение от m-ch Посмотреть сообщение
6 столбцов по 60 слов с возможностью перестановок получаем 60^6 * 6! = 33592320000000 это очень большое число для генерации всех вариантов сочетания и вывода их на лист/листы в Excel, не указано, нужно ли пропускать слова или нет, в исходном коде есть такая возможность
Приведите конкретный пример слов.
Могу сделать данную генерацию, при этом нужно понимать, что генерировать и выводить словосочетания на лист в количестве нескольких миллионов - достаточно проблематично, как по времени генерации/выводу на лист, так и с последующей обработкой результатов.
Да, действительно, число получается астрономическое. Но не все столбцы будут длинной в 60 строк. Если я правильно посчитал, у меня получилось, что-то около 7 с лишним миллиардов вариантов. Пропуск слов не нужен. Если честно, даже не знаю как себя поведет Excel, если не будет справляться Excel или железо, придется сокращать количество строк/столбцов.

Пример прикрепил.
Миниатюры
Все возможные сочетания с перестановкой  
0
15155 / 6428 / 1731
Регистрация: 24.09.2011
Сообщений: 9,999
17.03.2018, 20:42
Ivancker, в данном примере будет 9600 сочетаний. Если делать перестановки, число строк увеличится в 6!=720 раз и составит 6'912'000. Это почти 7 листов в Excel (или 7 "полос" на одном листе).
Можно не размещать данные на листе, а записывать в текстовый файл. Весь вопрос - ЗАЧЕМ? Перестановки не несут какой-либо новой информации. Если нужно сравнить строку из этих сочетаний со строкой из какого-то другого источника, лучше расположить слова по алфавиту и там, и там. Хотите сочетания со словами, расположенными по алфавиту?
Или Вам за количество строк платят?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
17.03.2018, 20:42
Помогаю со студенческими работами здесь

Распечатать все возможные сочетания из четырех цифр
Распечатать все возможные сочетания из четырех цифр, каждая из которых может принимать значения 1,2,3. Например, 2123, 3312, 1111.

Распечатать все возможные сочетания из четырех цифр
Распечатать все возможные сочетания из четырех цифр, каждая из которых может принимать значения 1,2,3. Подсчитать количество таких...

Вывести ВСЕ возможные сочетания элементов массивов
N массивов: 1. A1, B1, C1,...H1 2. A2, B2, C2,.. H2 ... N. AN, BN, CN, ... HN как вывести все возможные сочетания...

Перестановкой строк и столбцов получить все возможные варианты матрицы
Задача в следующем. Имеется матрица произвольного n на m. Необходимо перестановкой строк и столбцов получить все возможные варианты этой...

Все возможные комбинации сочетания для размещения мусора
Есть предположим матрица областей 9 * 9. В каждой области может размещаться мусор. Сколько возможных комбинаций размещения мусора? В...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
SDL3 для Web (WebAssembly): Работа со звуком через SDL3_mixer
8Observer8 08.02.2026
Содержание блога Пошагово создадим проект для загрузки звукового файла и воспроизведения звука с помощью библиотеки SDL3_mixer. Звук будет воспроизводиться по клику мышки по холсту на Desktop и по. . .
SDL3 для Web (WebAssembly): Основы отладки веб-приложений на SDL3 по USB и Wi-Fi, запущенных в браузере мобильных устройств
8Observer8 07.02.2026
Содержание блога Браузер Chrome имеет средства для отладки мобильных веб-приложений по USB. В этой пошаговой инструкции ограничимся работой с консолью. Вывод в консоль - это часть процесса. . .
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru