Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/Полный перебор - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Полный перебор
ArtiEx Дата: Среда, 20.03.2013, 09:32 | Сообщение № 1
Группа: Пользователи
Ранг: Новичок
Сообщений: 24
Репутация: 0 ±
Замечаний: 20% ±

Есть файл (прилагается), где реализован полный перебор.
Нужно реализовать перебор в таком же виде , но более полный. Перебор должен работать как счетчик, т.е. чтобы была возможность повторяемости элементов. Например, имеем числа 1, 2, 3, - на выходе должны получить:
111
112
113
121
122
123
131
132
133
211
...
...
К сообщению приложен файл: post_184717.xls (41.5 Kb)
 
Ответить
СообщениеЕсть файл (прилагается), где реализован полный перебор.
Нужно реализовать перебор в таком же виде , но более полный. Перебор должен работать как счетчик, т.е. чтобы была возможность повторяемости элементов. Например, имеем числа 1, 2, 3, - на выходе должны получить:
111
112
113
121
122
123
131
132
133
211
...
...

Автор - ArtiEx
Дата добавления - 20.03.2013 в 09:32
Gustav Дата: Среда, 20.03.2013, 09:53 | Сообщение № 2
Группа: Админы
Ранг: Участник клуба
Сообщений: 2792
Репутация: 1155 ±
Замечаний: ±

начинал с Excel 4.0, видел 2.1
Если совсем в лоб, быстро на коленках, не погружаясь в алгоритмы комбинаторики, то как-то так для четырех:
[vba]
Код
Sub generate()
      Dim i, j, k, l, m
      For i = 1 To 4
      For j = 1 To 4
      For k = 1 To 4
      For l = 1 To 4
          If i <> j And i <> k And i <> l And j <> k And j <> l And k <> l Then
              [b1].Offset(m) = i & j & k & l
              m = m + 1
          End If
      Next l, k, j, i
End Sub
[/vba]

P.S. Невнимательно прочитал. А если повторы цифр не надо исключать, то тогда просто IF убираем и еще проще становится:
[vba]
Код
Sub generateWithRepeat()
     Dim i, j, k, l, m
     For i = 1 To 4
     For j = 1 To 4
     For k = 1 To 4
     For l = 1 To 4
         [b1].Offset(m) = i & j & k & l
         m = m + 1
     Next l, k, j, i
End Sub
[/vba]


МОИ: Ник, Tip box: 41001663842605

Сообщение отредактировал Gustav - Среда, 20.03.2013, 09:56
 
Ответить
СообщениеЕсли совсем в лоб, быстро на коленках, не погружаясь в алгоритмы комбинаторики, то как-то так для четырех:
[vba]
Код
Sub generate()
      Dim i, j, k, l, m
      For i = 1 To 4
      For j = 1 To 4
      For k = 1 To 4
      For l = 1 To 4
          If i <> j And i <> k And i <> l And j <> k And j <> l And k <> l Then
              [b1].Offset(m) = i & j & k & l
              m = m + 1
          End If
      Next l, k, j, i
End Sub
[/vba]

P.S. Невнимательно прочитал. А если повторы цифр не надо исключать, то тогда просто IF убираем и еще проще становится:
[vba]
Код
Sub generateWithRepeat()
     Dim i, j, k, l, m
     For i = 1 To 4
     For j = 1 To 4
     For k = 1 To 4
     For l = 1 To 4
         [b1].Offset(m) = i & j & k & l
         m = m + 1
     Next l, k, j, i
End Sub
[/vba]

Автор - Gustav
Дата добавления - 20.03.2013 в 09:53
MCH Дата: Среда, 20.03.2013, 10:05 | Сообщение № 3
Группа: Админы
Ранг: Старожил
Сообщений: 2004
Репутация: 752 ±
Замечаний: ±

Я так понял, что нужны все комбинации (а не перестановки), так для 3 значений это будет 27 вариантов (3^3), для 4 значений - 256 вариантов (4^4), так для количества данных более 7 уже будет проблематично выводить на лист все варианты комбинаций

Можно решить формулами или макросом
Вариант алгоритма:
запускаем цикл от 0 до n^n-1 (где n - это количество значений)
переводим число из счетчика в n-значную систему счисления, тем самым получим полный перебор всех вариантов
 
Ответить
СообщениеЯ так понял, что нужны все комбинации (а не перестановки), так для 3 значений это будет 27 вариантов (3^3), для 4 значений - 256 вариантов (4^4), так для количества данных более 7 уже будет проблематично выводить на лист все варианты комбинаций

Можно решить формулами или макросом
Вариант алгоритма:
запускаем цикл от 0 до n^n-1 (где n - это количество значений)
переводим число из счетчика в n-значную систему счисления, тем самым получим полный перебор всех вариантов

Автор - MCH
Дата добавления - 20.03.2013 в 10:05
MCH Дата: Среда, 20.03.2013, 10:14 | Сообщение № 4
Группа: Админы
Ранг: Старожил
Сообщений: 2004
Репутация: 752 ±
Замечаний: ±

Реализация алгоритма через счетчик
К сообщению приложен файл: ArtiEx.xls (25.5 Kb)
 
Ответить
СообщениеРеализация алгоритма через счетчик

Автор - MCH
Дата добавления - 20.03.2013 в 10:14
ArtiEx Дата: Среда, 20.03.2013, 10:38 | Сообщение № 5
Группа: Пользователи
Ранг: Новичок
Сообщений: 24
Репутация: 0 ±
Замечаний: 20% ±

MCH, Мне нужно в формате приложенного мною файла, можете в него внести корректировки?
 
Ответить
СообщениеMCH, Мне нужно в формате приложенного мною файла, можете в него внести корректировки?

Автор - ArtiEx
Дата добавления - 20.03.2013 в 10:38
ArtiEx Дата: Среда, 20.03.2013, 10:39 | Сообщение № 6
Группа: Пользователи
Ранг: Новичок
Сообщений: 24
Репутация: 0 ±
Замечаний: 20% ±

Gustav, MCH, Мне нужно в формате приложенного мною файла, можете в него внести корректировки?
 
Ответить
СообщениеGustav, MCH, Мне нужно в формате приложенного мною файла, можете в него внести корректировки?

Автор - ArtiEx
Дата добавления - 20.03.2013 в 10:39
MCH Дата: Среда, 20.03.2013, 11:09 | Сообщение № 7
Группа: Админы
Ранг: Старожил
Сообщений: 2004
Репутация: 752 ±
Замечаний: ±

Цитата (ArtiEx)
Мне нужно в формате приложенного мною файла

Числа в столбце B Вам нужны, или заполнять только столбцы D:G данными из A1:A4?
Сколько всего может быть значений в столбце A, фиксированное кол-во или переменное?
Если данных будет 7 и более значений, куда их размещать (на лист в один столбик не влезут)?

похожая тема http://www.excelworld.ru/forum/2-1805-1#19907
 
Ответить
Сообщение
Цитата (ArtiEx)
Мне нужно в формате приложенного мною файла

Числа в столбце B Вам нужны, или заполнять только столбцы D:G данными из A1:A4?
Сколько всего может быть значений в столбце A, фиксированное кол-во или переменное?
Если данных будет 7 и более значений, куда их размещать (на лист в один столбик не влезут)?

похожая тема http://www.excelworld.ru/forum/2-1805-1#19907

Автор - MCH
Дата добавления - 20.03.2013 в 11:09
ArtiEx Дата: Среда, 20.03.2013, 11:13 | Сообщение № 8
Группа: Пользователи
Ранг: Новичок
Сообщений: 24
Репутация: 0 ±
Замечаний: 20% ±

MCH, Нужны данные и в столбике В и в столбике D:G - точно также как в файле. Максимально кол-во данных - 5, поэтому на листе поместятся.
 
Ответить
СообщениеMCH, Нужны данные и в столбике В и в столбике D:G - точно также как в файле. Максимально кол-во данных - 5, поэтому на листе поместятся.

Автор - ArtiEx
Дата добавления - 20.03.2013 в 11:13
MCH Дата: Среда, 20.03.2013, 12:46 | Сообщение № 9
Группа: Админы
Ранг: Старожил
Сообщений: 2004
Репутация: 752 ±
Замечаний: ±

.
К сообщению приложен файл: ArtiEx2.xls (25.5 Kb)


Сообщение отредактировал MCH - Среда, 20.03.2013, 12:50
 
Ответить
Сообщение.

Автор - MCH
Дата добавления - 20.03.2013 в 12:46
onnline365 Дата: Четверг, 14.08.2014, 13:13 | Сообщение № 10
Группа: Пользователи
Ранг: Новичок
Сообщений: 16
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013
а возможно сделать чтоб не было обратного порядка. Тоисть 987654321 а только по возрастанию от 1 до 10 к примеру, а также была возможность выбирать длину перебора к примеру 1234, 2345, 6789 и т.к.
 
Ответить
Сообщениеа возможно сделать чтоб не было обратного порядка. Тоисть 987654321 а только по возрастанию от 1 до 10 к примеру, а также была возможность выбирать длину перебора к примеру 1234, 2345, 6789 и т.к.

Автор - onnline365
Дата добавления - 14.08.2014 в 13:13
ArkaIIIa Дата: Четверг, 14.08.2014, 13:36 | Сообщение № 11
Группа: Проверенные
Ранг: Ветеран
Сообщений: 894
Репутация: 115 ±
Замечаний: 0% ±

2010
onnline365
Можете воспользоваться вышеуказанным макросом, а потом фильтрануть массив с помощью не очень сложных функций, проверяющих длину числа и логику возрастания цифр.
Но, опять таки, - в своем топике и при наличии файла-примера.
 
Ответить
Сообщениеonnline365
Можете воспользоваться вышеуказанным макросом, а потом фильтрануть массив с помощью не очень сложных функций, проверяющих длину числа и логику возрастания цифр.
Но, опять таки, - в своем топике и при наличии файла-примера.

Автор - ArkaIIIa
Дата добавления - 14.08.2014 в 13:36
onnline365 Дата: Четверг, 14.08.2014, 13:56 | Сообщение № 12
Группа: Пользователи
Ранг: Новичок
Сообщений: 16
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013
onnline365
Можете воспользоваться вышеуказанным макросом, а потом фильтрануть массив с помощью не очень сложных функций, проверяющих длину числа и логику возрастания цифр.
Но, опять таки, - в своем топике и при наличии файла-примера.

Но файл пример у меня есть.
К сообщению приложен файл: 9068566.xls (24.0 Kb)


Сообщение отредактировал onnline365 - Четверг, 14.08.2014, 13:58
 
Ответить
Сообщение
onnline365
Можете воспользоваться вышеуказанным макросом, а потом фильтрануть массив с помощью не очень сложных функций, проверяющих длину числа и логику возрастания цифр.
Но, опять таки, - в своем топике и при наличии файла-примера.

Но файл пример у меня есть.

Автор - onnline365
Дата добавления - 14.08.2014 в 13:56
ArkaIIIa Дата: Четверг, 14.08.2014, 13:57 | Сообщение № 13
Группа: Проверенные
Ранг: Ветеран
Сообщений: 894
Репутация: 115 ±
Замечаний: 0% ±

2010
onnline365
Я Вам ответил в Вашем топике.
[moder]Тема закрыта. Дублирование[/moder]
 
Ответить
Сообщениеonnline365
Я Вам ответил в Вашем топике.
[moder]Тема закрыта. Дублирование[/moder]

Автор - ArkaIIIa
Дата добавления - 14.08.2014 в 13:57
  • Страница 1 из 1
  • 1
Поиск:

Яндекс.Метрика Яндекс цитирования
© 2010-2024 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!