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

Codificação aritmetica


igor Br22

Pergunta

Galera,

Vou direto ao ponto.

codificar uma "string" ou um arquivo, usando o algoritmo de codificação aritmetica.

nesse link tem o codigo incrementado em python ea pagina explica de uma forma um tanto complicada o algoritmo. estou fazendo em php obv.

resumidamente o objetivo do algoritmo é achar a qtde de cada caracter dentro da string e a sua frequencia relativa, em relação ao total de caracter.

com isso fazer uma faixa de 0 a 1 e conseguir os intervalos dos caracter de acordo com a sua frequencia. apos construir os interva-los é só ir recalculando de acordo com a imagens abaixo ate todos os caracteres estiverem codificados.

26Capturar.JPG

enfim, eu já achei as frequencias, mas não consigo retirar os dados da funcao frequencia para manipula-los, tentei usar o array_map ao invés do array_walk mas não to sabendo usa-lo. alguém pode dedicar um tempinho para resolver esse algoritmo? ou quem tiver ele pronto (PHP) para eu me basea-lo.

<?php

 $conteudo = file_get_contents("criptografia/teste.txt","r");
$caracteres += strlen($conteudo); 
echo "Caracteres: " . $caracteres ."<br />"; 

 function frequencia( $qtde , $char , $qtde_total )
  {   
       // printf( "A letra <strong>%c</strong> apareceu <strong>%d</strong> ou <strong>%.04f</strong> do total de <strong>%d</strong>\n<br />",                $char , $qtde , $qtde / $qtde_total , $qtde_total );
    $valor = $qtde / $qtde_total; 
    $contagem[] = array ($char , $valor , $qtde_total);
    print_r($contagem);
    return $contagem; // É DESSE VETOR QUE PRECISO TIRAR DE DENTRO DESSA FUNÇÃO, PARA CONSTRUIR OS INTERVALOS EM OUTRA FUNCAO
 }
    
    $arr =    count_chars( preg_replace( '/\W/', '', strtolower( $conteudo ) ), 1 );
    array_walk( $arr, 'frequencia', strlen( $conteudo ) );

Link para o comentário
Compartilhar em outros sites

0 respostass a esta questão

Posts Recomendados

Até agora não há respostas para essa pergunta

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,1k
    • Posts
      651,8k
×
×
  • Criar Novo...