Ir para conteúdo
Fórum Script Brasil
  • 0

Gerar todas as combinações possiveis


vini_loock

Pergunta

Olá.

Estou com um probleminha de lógica aqui.

Preciso fazer um script que descubra um determinado valor.

Não vejo nenhum exemplo pratico a não ser a quebra de senhas(não é essa minha intenção, é apenas para estudo).

O que eu tenho até agora, vou postar logo abaixo, foi escrito em PHP, mas não usa nenhuma função específica do php, então está de fácil entendimento para qualquer programador(ou não).

<?php
    
    #! quantidade mínima de caracteres
    $min = 5;
    
    #! quantidade máxima de caracteres
    $max = 5;
    
    #! caracteres que @match pode conter
    $chars = 'abcdefg';
    
    #! indice correspondente aos caracteres de @chars, neste caso, o valor é igual a: ab
    $match = array(0, 1);
    #! número de tentativas já realizadas
    $num = 0;
    
    #! valores da ultima tentativa
    $arr = array();
    
    for($i = $min; $i < $max; $i++){
        
        // reseta todos os indices de @arr para 0
        for($w = 0; $w < $i; $w++){
            $arr[$w] = 0;
        }
        // adiciona um novo indice em @arr
        $arr[] = 0;
        
        // para cada um dos indices de @arr
        for($j = 0; $j < $i+1; $j++){
            // percorre toda string @chars
            for($n = 0; $n < strlen($chars)-1; $n++){
                // o valor foi encontrado
                if($arr == $match){
                    print_r($match);
                    exit();
                }
                // o valor não foi encontrado
                $num++;
                $arr[$j]++;
            }
        }
    }
?>

Legenda(caso seja necessário^^):

strle() : retorna o número de caracteres de uma string

print_r(): exibe todos os indices e valores de um array

exit(): encerra a execução do código

Até agora, ele está quase cumprindo o objetivo.

Dei um print_r em cada resultado, logo acima de $num++, e ele me retornou isso:

PS: tentei colocar aqui o que me foi retornado, mas o forum não permitiu porque ficou muito grande, mas acredito que pelo script já da pra ter uma base

Observe que do indice 1 em diante, só começam a ser alterados apos o indice 0 chegar no sei valor máximo(6).

O problema, é que ele fez apenas 30 tentativas, quando deveria ter feito, pelos meus calculos(7*7*7*7*7): 16807

7 corresponde ao número de caracteres em @chars e pelo método(não lembro o nome) que se usa para descobrir o numero depossibilidades, seria: 7^5, ou 7*7*7*7*7

Estarei tentando continuar isso, mas caso alguém souber o caminho das pedras, ficaria muito grato se pudesse compartilhar.

[]'s

Vinicius

Editado por vini_loock
Link para o comentário
Compartilhar em outros sites

3 respostass a esta questão

Posts Recomendados

  • 0

Isso não tem muita lógica, já que eu coloquei os dois com valores 5 para que fossem geradas as combinações de 5 caracteres, para deixar o número de resultados mais baixos para que fique mais fácil de analisar.

O código continuaria retornando apenas parte dos resultados possíveis

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,4k
×
×
  • Criar Novo...