Страницы: 1
RSS
Перебор возможных комбинаций
 
Как сделать перебор и вывод всех возможных комбинаций на основе имеющихся символов? Количество символов 4 (u,d,l,r)

Например:
Скрытый текст

Мне необходим только список этих значений? Подскажите, как это сделать.
 
Макросом
Согласие есть продукт при полном непротивлении сторон
 
А можно чуть поподробнее, я в этом не силен?
 
Подробнее
 
Сообщение #4
Согласие есть продукт при полном непротивлении сторон
 
объясню, почему я создал новую тему. Знаю, ято данная темя поднималась не раз, но у меня не много другая задача.

рассмотрим пример 4 символа, 2 элемента. Те решения которые я нашел дают такой ответ.
Скрытый текст

Мне необходимо получить такой список:
Скрытый текст
 
Так?
 
Спасибо большое!!!
 
Если не трудно сделайте пожалуйста пример с 5 символами (u,d,l,r,f). кол-во элементов 3, 4, 5
 
Посмотрите код и дальше сами по аналогии ))
 
огромное спасибо!!!
 
Вот ))
 
Не знаю как Вас благодарить! СПАСИБО!!!
 
Цитата
lorents написал: Не знаю как Вас благодарить!
Вот проблема.  :)
Стоит только взглянуть в его грустные глаза, и на остатки его рыбки...
 
:D
 
добрый вечер!
Подскажите, пожалуйста. Если возьмем вышеприведенную задачу и чуть усложним,

После запуска файла U-D-L-R-F (02).xlsm ,он создает список
Скрытый текст

Как мне удалить, все ячейки где есть одинаковые символы, т.е. привести столбец к такому ввиду.
Скрытый текст

Буду признателен за ответы
Изменено: lorents - 18.06.2016 20:00:24
 
См. файл.
 
Спасибо большое!!!
А можно ли это же сделать ко всем столбцам?
Изменено: lorents - 18.06.2016 20:01:35
 
Цитата
lorents написал:
А можно это приметь столбцам?
???
 
Исправил выше, имел ввиду, сделать все столбцы без дубликатов.
 
Вы показали, что нужен один столбец - для одного и сделал.
У Вас теперь есть два варианта кода: сравните их и увидите, где добавлен блок преобразования столбца. Попробуйте применить к оставшимся. Что будет не получаться - спрашивайте.
 
Спасибо, буду разбираться! мне нужно разобраться только с четвертым столбцом. пятый не нужен.
 
Получилось:
Код
Sub Macro1()
Dim i As Long, j As Long, m As Long, n As Long, k As Long, x As Long, Arr()
Dim sLetter As String, Counter As Long
    Arr = Range(Cells(1, 1), Cells(5, 1)).Value
    ReDim Arr2(1 To 25, 1 To 1)
    For i = 1 To 5
        For j = 1 To 5
            x = x + 1
            Arr2(x, 1) = Arr(i, 1) & Arr(j, 1)
        Next
    Next
    k = 0
    ReDim Arr3(1 To UBound(Arr2), 1 To 1)
    For i = 1 To UBound(Arr2)
        Counter = 0
        For j = 1 To Len(Arr2(i, 1))
            sLetter = Mid(Arr2(i, 1), j, 1)
            If InStr(j + 1, Arr2(i, 1), sLetter, 1) > 0 Then
                Counter = Counter + 1
                Exit For
            End If
        Next
        If Counter = 0 Then
            k = k + 1
            Arr3(k, 1) = Arr2(i, 1)
        End If
    Next
    Cells(1, 2).Resize(k, 1).Value = Arr3
    x = 0
    ReDim Arr2(1 To 125, 1 To 1)
    For i = 1 To 5
        For j = 1 To 5
            For m = 1 To 5
                x = x + 1
                Arr2(x, 1) = Arr(i, 1) & Arr(j, 1) & Arr(m, 1)
            Next
        Next
    Next
    k = 0
    ReDim Arr3(1 To UBound(Arr2), 1 To 1)
    For i = 1 To UBound(Arr2)
        Counter = 0
        For j = 1 To Len(Arr2(i, 1))
            sLetter = Mid(Arr2(i, 1), j, 1)
            If InStr(j + 1, Arr2(i, 1), sLetter, 1) > 0 Then
                Counter = Counter + 1
                Exit For
            End If
        Next
        If Counter = 0 Then
            k = k + 1
            Arr3(k, 1) = Arr2(i, 1)
        End If
    Next
    Cells(1, 3).Resize(k, 1).Value = Arr3
    Erase Arr2
    Erase Arr3
    x = 0
    ReDim Arr2(1 To 625, 1 To 1)
    For i = 1 To 5
        For j = 1 To 5
            For m = 1 To 5
                For n = 1 To 5
                    x = x + 1
                    Arr2(x, 1) = Arr(i, 1) & Arr(j, 1) & Arr(m, 1) & Arr(n, 1)
                Next
            Next
        Next
    Next
    k = 0
    ReDim Arr3(1 To UBound(Arr2), 1 To 1)
    For i = 1 To UBound(Arr2)
        Counter = 0
        For j = 1 To Len(Arr2(i, 1))
            sLetter = Mid(Arr2(i, 1), j, 1)
            If InStr(j + 1, Arr2(i, 1), sLetter, 1) > 0 Then
                Counter = Counter + 1
                Exit For
            End If
        Next
        If Counter = 0 Then
            k = k + 1
            Arr3(k, 1) = Arr2(i, 1)
        End If
    Next
    Cells(1, 4).Resize(k, 1).Value = Arr3
End Sub
Изменено: lorents - 18.06.2016 20:38:34
 
Ну вот! ))
 
Спасибо Вам Большое!!!!
Страницы: 1
Наверх