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.
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 ) );
Pergunta
igor Br22
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.
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.
Link para o comentário
Compartilhar em outros sites
0 respostass a esta questão
Posts Recomendados
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.