Python — Сочетания слов … Power Set?

Я хочу взломать пароль, который я забыл. Я знаю все слова, которые, возможно, используются в пароле, но некоторые могут быть использованы или нет. Пример: HarryMetSally может быть паролем, но я могу использовать список слов «Harry», «Billy», «Sally» и «Met» для объединения в трещины.

Если бы у меня было 16 слов, но, вероятно, использовалось 14-16, как бы я написал код на C ++ или Python, чтобы 16 слов (или 20, 25, 30 слов) были случайно соединены вместе и использовали 1 за раз или 2-16 вместе, а не в том же порядке.

Пример:

Слова: Гарри Билли Салли встретился

Комбинированные примеры:

Гарри
Билли
SallyBilly
BillySally
HarryMetSally
HarrySallyMet

Я много искал в Интернете и пробовал форумы по Excel. Любое руководство?

-3

Решение

Ты сказал случайно …

#include <iostream>
#include "stdlib.h"#include "time.h"
#define NUM_WORDS 3
char* words[NUM_WORDS] = {
"Foo",
"Bar",
"Baz"};
typedef unsigned long long ULL;

ULL fact(ULL n, ULL lowerLimit = 1)
{
if (n <= lowerLimit) return 1;
return n * fact(n - 1);
}
int main()
{
srand(time(NULL));

// I can try single words all by myself, so start at 2 or more words
for (int nWords = 2; nWords <= NUM_WORDS; ++nWords)
{
// calculate the number of possibilities
// but since it's random, triple it for good measure
ULL nIters = fact(NUM_WORDS, NUM_WORDS - nWords) * 3;
for (ULL iter = 0; iter < nIters; ++iter)
{
for (int iterWord = 0; iterWord < nWords; ++iterWord)
{
int ix = rand() % NUM_WORDS;
std::cout << words[ix];
}
std::cout << std::endl;
}
}
return 0;
}
0

Другие решения


По вопросам рекламы [email protected]