Jump to content
Fórum Script Brasil
  • 0

Gerar todas as combinações possiveis


vini_loock

Question

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

Edited by vini_loock
Link to comment
Share on other sites

3 answers to this question

Recommended Posts

  • 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 to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.



  • Forum Statistics

    • Total Topics
      152.2k
    • Total Posts
      652k
×
×
  • Create New...