Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - Сгенерировать перестановки A-Z 0-9, 7 позиций

Ответить
Настройки темы
CMD/BAT - Сгенерировать перестановки A-Z 0-9, 7 позиций

Новый участник


Сообщения: 7
Благодарности: 0

Профиль | Отправить PM | Цитировать


Помогите пожалуйста сгенерировать перестановки с повторениями.
"Слово" из 7 знаков. Знак - буквы латинского алфавита A-Z и числа 0-9

Понимаю, что вариантов будет ооочень много, но хотя бы примерный алгоритм скрипта хотелось бы узнать.
Заранее благодарю!

Отправлено: 16:31, 14-02-2017

 

Ветеран


Contributor


Сообщения: 2728
Благодарности: 1697

Профиль | Отправить PM | Цитировать


nastasa, Поясните: есть слово из 7 знаков. Эти знаки неизменные? Надо именно из этих 7 знаков путём перестановок получить все возможные сочетания?

-------
Даже самая сложная проблема обязательно имеет простое, лёгкое для понимания, неправильное решение. Каждое решение плодит новые проблемы.


Отправлено: 18:59, 14-02-2017 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Новый участник


Сообщения: 7
Благодарности: 0

Профиль | Отправить PM | Цитировать


Цитата megaloman:
nastasa, Поясните: есть слово из 7 знаков. Эти знаки неизменные? Надо именно из этих 7 знаков путём перестановок получить все возможные сочетания? »
Не знаю как объяснить, 7 позиций
То есть получить все перестановки с повторениями типа
ABCDIFG
ABCDIFU
ABCDIF1
ABCDIF2
и т. д.
Очень надо

Отправлено: 00:34, 15-02-2017 | #3


Ветеран


Сообщения: 27449
Благодарности: 8087

Профиль | Отправить PM | Цитировать


Почему именно на пакетных файлах? Это не лучший выбор.

Отправлено: 15:22, 15-02-2017 | #4


Новый участник


Сообщения: 7
Благодарности: 0

Профиль | Отправить PM | Цитировать


Цитата Iska:
Почему именно на пакетных файлах? Это не лучший выбор. »
А что посоветуете использовать?

Отправлено: 23:45, 16-02-2017 | #5


Ветеран


Сообщения: 27449
Благодарности: 8087

Профиль | Отправить PM | Цитировать


Вам для каких целей? Один конечный файл с построчными результатами комбинаций займёт чуть больше 352 с половиной Gb.

Отправлено: 00:29, 17-02-2017 | #6


Аватара для Elven

Ветеран


Сообщения: 992
Благодарности: 268

Профиль | Сайт | Отправить PM | Цитировать


Цитата Iska:
конечный файл с построчными результатами комбинаций займёт чуть больше 352 с половиной Gb »
Iska, меня мучает только один вопрос: создал или посчитал?

Отправлено: 11:11, 17-02-2017 | #7


Ветеран


Сообщения: 1274
Благодарности: 564

Профиль | Отправить PM | Цитировать


nastasa,
если вы решили что избретете генератор подбора пароля, то уверяю вас что вы опоздали и это сделано в более удобной правильной и качественной форме, вот только возможно не всем доступно и не всем понятно и НЕ всем нужно.

Отправлено: 15:11, 17-02-2017 | #8


Ветеран


Сообщения: 27449
Благодарности: 8087

Профиль | Отправить PM | Цитировать


Цитата Elven:
Iska, меня мучает только один вопрос: создал или посчитал? »
Посчитал, конечно: = N!/(N-M)!, затем перемножил полученный результат (число строк) на (7 символов + 2 символа CrLf на строку).

А вот, кстати, я могу быть и не прав, ибо что-то проглядел про:
Цитата nastasa:
с повторениями. »
Цитата nastasa:
с повторениями »
и формула будет проще, а результат — ещё толще .

Отправлено: 17:06, 17-02-2017 | #9


Ветеран


Contributor


Сообщения: 2728
Благодарности: 1697

Профиль | Отправить PM | Цитировать


nastasa, Я не силён в комбинаторике, поэтому оценить объём выходного файла не берусь.
Я поставил задачу в общем виде:
Необходимо сформировать все возможные слова длиной M символов.
Набор возможных символов задаётся. Число возможных символов >=M
В сформированном слове не должно быть одинаковых символов.
Вот VBS-скрипт, реализующий эту постановку. После его запуска дождитесь сообщения, что он отработал
Код: Выделить весь код
'Sym = Array("A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z", "0", "1", "2", "3", "4", "5", "6", "7", "8", "9")

Sym = Array("A", "B", "C", "D", "E", "F", "G")      ' Набор символов для составления слов
M = 7                                               ' Длина слова

File_Out = "Z:\Box_Out\kuku.txt"    ' Файл со списком слов (результат работы)

NM = M - 1
ReDim iSym(NM)

NS = UBound(Sym)

For k = 0 To NM
    iSym(k) = k
Next
    
Set FSO = CreateObject("Scripting.FileSystemObject")
Set NFile = FSO.OpenTextFile(File_Out, 2, True)
    
Do While iSym(0) <= NS
    Equ = False
    For k = 0 To NM
        For kk = k + 1 To NM
            Equ = (iSym(k) = iSym(kk))
            If Equ Then Exit For
        Next
        If Equ Then Exit For
    Next
        
    If Not Equ Then
        SS = ""
        For k = 0 To NM
            SS = SS + Sym(iSym(k))
        Next
'        MsgBox SS
        NFile.WriteLine SS
    End If
            
    For k = NM To 0 Step -1
        iSym(k) = iSym(k) + 1
        If iSym(k) <= NS Then Exit For
        If k <> 0 Then iSym(k) = 0
    Next
Loop

NFile.Close

MsgBox "Скрипт отработал"
Определите путь к выходному файлу.
В приведенном примере длина слова M=7
Взят набор из 7 символов "A", "B", "C", "D", "E", "F", "G"
В выходном файле получилось 5040 значений.

Для набора из 8 символов "A", "B", "C", "D", "E", "F", "G", "H" и длине слова M=7
в выходном файле получилось 40320 значений. И время выполнения выросло резко.
Не знаю, но, по видимому, можно применить более эффективный алгоритм.

Вы можете всё это поменять, лишь бы число возможных символов было не менее длины слова - никаких защит от этого я не предусматривал.

-------
Даже самая сложная проблема обязательно имеет простое, лёгкое для понимания, неправильное решение. Каждое решение плодит новые проблемы.


Последний раз редактировалось megaloman, 21-02-2017 в 20:31.


Отправлено: 20:08, 21-02-2017 | #10



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - Сгенерировать перестановки A-Z 0-9, 7 позиций

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Redhat/Fedora - netperf - сгенерировать траффик на интерфейс romez777 Общий по Linux 0 08-01-2015 20:23
Программа для анализа позиций сайтов. Посоветуйте Centrinar Вебмастеру 1 03-06-2012 11:39
HP снижает цены на свои ноутбуки для удержания позиций OSZone News Новости информационных технологий 0 27-09-2009 18:30
КАк сгенерировать доки? axax Вебмастеру 2 04-04-2006 19:49
Сгенерировать новую страничку на лету. BigMarkus Вебмастеру 2 20-09-2003 22:45




 
Переход