Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Perfect Lion

Vencedores 4º Desafio do PHP

Recommended Posts

Opa pessoal ja passou mo tempo...e nada do resultado era para ter saido a semana passada mais foi uma semana meio complicado e votação acirrada...mais saiu o resultado,... bora para os ganhadores

 

1º - Red nec *

 

2º - Eclesiastes

 

http://forum.imasters.com.br/index.php?act...t=0#entry332696

 

 

Parabens http://forum.imasters.com.br/public/style_emoticons/default/clap.gif ao 2 ganhadores... desse 4º desafio....

 

 

Agora é partir para a proxima... http://forum.imasters.com.br/public/style_emoticons/default/joia.gif

 

OBS: Alterado a ordem do 1º e 2º colocados...

Compartilhar este post


Link para o post
Compartilhar em outros sites

bem la vai os codigos;....

 

Eclesiastes:

<?phpfunction str_mark($string){$aMark = array('PHP' => '<font color="green">PHP</font>','Perl' => '<font color="green">Perl</font>','C' => '<font color="green">C</font>','HTML' => '<font color="green">HTML</font>','CGI' => '<font color="green">CGI</font>','Web' => '<font color="green">Web</font>','Hypertext Preprocessor' => '<font color="blue"><i>Hypertext Preprocessor</i></font>');$string = "<font color='gray'>{$string}</font>";return strtr($string, $aMark);}?>
red: http://alpharo.wehost.com.br/etc/challenge...php?source=true

 

ok.. flw ;)

 

editado: URL do red ja foi arumado

Compartilhar este post


Link para o post
Compartilhar em outros sites

ok fabão segue abaixo o codigo do outros participantes..

 

v1d4l0k4

<?php/** Desafio Imasters :: "Busca com texto em destaque"** Participante: Paulo Freitas <paulofreitas [dot] web [at] gmail [dot] com>*/class Highlighter{/** Variável onde será guardado e trabalhado o texto à ser realçado*/var $data;/** Carrega o texto à ser realçado*/function inputString($string){$this->data = $string;}/** Aplica o realce no texto informado, de acordo com o estilo passado* via parâmetro $style*/function highlightString($string, $style){/** Primeiro verifica se o texto à ser realçado não está em branco ...* Se estiver, nem executa a operação ...*/if (!empty($string)) {/** Define o offset da função strpos() como 0 (início do texto).*/$offset = 0;/** Verifica se a posição atual é um número inteiro.* Se for, continua recursivamente, se não for,* já termina o while.*/while (is_int($pos = strpos($this->data, $string, $offset))) {/** Aumenta o offset para a posição do texto encontrado + 1,* para continuar a recursão.*/$offset = $pos + 1;/** Pega o texto antecedente à posição atual.*/$left = substr($this->data, 0, $pos);/** Pega o texto precedente à posição atual.*/$right = substr($this->data, $pos + strlen($string));/** Configura a tag de abertura do estilo à ser aplicado*/$style_left = '<span style="' . $style . '">';/** Configura a tag de fechamento do estilo à ser aplicado*/$style_right = '</span>';/** Efetua o realce no texto, unindo os textos e tags antecedentes* e precedentes ao texto à ser realçado.*/$this->data = $left . $style_left . $string . $style_right . $right;/** Aumenta o offset com o comprimento da string $style_left,* pois como a string $data da classe irá aumentar de tamanho,* devemos também aumentar igualmente a posição do offset.*/$offset += strlen($style_left);}}}/** Exibe o texto realçado*/function outputString(){return '<span style="color: #808080;">' . $this->data . '</span>';}}// Cria uma nova classe$Highlighter = new Highlighter;// Carrega um texto modelo para aplicar os realces$Highlighter->inputString('PHP (um acrônimo recursivo para "PHP: Hypertext Preprocessor") é uma linguagem de script Open Source de uso geral, muito utilizada e especialmente guarnecida para o desenvolvimento de aplicações Web embútivel dentro do HTML. (...) Note como isso é diferente de scripts CGI escritos em outras linguagens como Perl ou C --- ao invés de escrever um programa com um monte de comandos para imprimir HTML, você escreve um arquivo HTML com algum código inserido para fazer alguma coisa (nesse caso, imprimir um pouco de texto). O código PHP é delimitado por tags iniciais e finais que lhe permitem pular pra dentro e pra fora do "modo PHP". (...)');// Aplica os realces solicitados$Highlighter->highlightString('PHP', 'color: #0F0;');$Highlighter->highlightString('Perl', 'color: #0F0;');$Highlighter->highlightString('HTML', 'color: #0F0;');$Highlighter->highlightString('CGI', 'color: #0F0;');$Highlighter->highlightString('C', 'color: #0F0;');$Highlighter->highlightString('Hypertext Preprocessor', 'color: #00F;');// Exibe o texto realçadoprint $Highlighter->outputString();?>

Prog

<?// inibir alguns notices que são enviados ao navegadorerror_reporting(E_ERROR);// classe buscaclass Busca {// popular os vetoresvar $alfamin = array("a"=>0,"b"=>0,"c"=>0,"d"=>0,"e"=>0,"f"=>0,"g"=>0,"h"=>0,"i"=>0,"j"=>0,"k"=>0,"l"=>0,"m"=>0,"n"=>0,"o"=>0,"p"=>0,"q"=>0,"r"=>0,"s"=>0,"t"=>0,"u"=>0,"v"=>0,"w"=>0,"x"=>0,"y"=>0,"z"=>0,"á"=>0,"é"=>0,"í"=>0,"ó"=>0,"ú"=>0,"õ"=>0,"ã"=>0,"ê"=>0,"ô"=>0,"ç"=>0,"("=>0,")"=>0,"-"=>0,"."=>0,"\""=>0,"?"=>0,":"=>0," "=>0,"-"=>0,","=>0,"\n"=>0,"\r"=>0);var $alfamai = array("A"=>0,"B"=>0,"C"=>0,"D"=>0,"E"=>0,"F"=>0,"G"=>0,"H"=>0,"I"=>0,"J"=>0,"K"=>0,"L"=>0,"M"=>0,"N"=>0,"O"=>0,"P"=>0,"Q"=>0,"R"=>0,"S"=>0,"T"=>0,"U"=>0,"V"=>0,"W"=>0,"X"=>0,"Y"=>0,"Z"=>0,"Á"=>0,"É"=>0,"Í"=>0,"Ó"=>0,"Ú"=>0,"Õ"=>0,"Ã"=>0,"Ê"=>0,"Ô"=>0,"Ç"=>0);// declaração das propriedadesvar $alfa,$pad_vetor,$txt_vetor,$txt_integro,$pad_tamanho,$txt_tamanho,$tipo,$ini;// $alfa vetor que será responsável por armazenar o critério de busca, case sensitive ou isensitive// $pad_vetor vetor que armazena a string de pesquisa// $txt_vetor vetor que armazena a string do texto que será pesquisado// $txt_integro vetor que armazena a string do texto que será pesquisado, preservando o texto como original, integro// $pad_tamanho armazena o tamanho da string de pesquisa// $txt_tamanho armazena o tamanho da string do texto que será pesquisado// $tipo tipo da pesquisa, case sensitive ou isensitive// $ini armazena caracterer na qual iniciara a busca, de acordo com o algoritmo de Boyer-Moore// construtor da classe, para selecionar o critério da busca (0 = case sensitive / 1 = case isensitive)function Busca($tipo=0) {// por padrão, caso nenhum valor para tipo seja informado, inicia o objeto como case sensitive$this->tipo = $tipo;// setar o vetor de acordo com o critério de pesquisa$this->alfa = ($this->tipo==0) ? array_merge($this->alfamin,$this->alfamai) : $this->alfamin;}// setar a string de buscafunction setPadrao($busca) {// teste para case sensitive ou isensitive$this->pad_vetor = ($this->tipo==0) ? str_split($busca,1) : str_split(strtolower($busca),1);array_unshift($this->pad_vetor, " ");$this->pad_tamanho = count($this->pad_vetor)-1;// criar o padrão de busca de acordo com o algoritimo de Boyer-Moorefor ($i=0;$i<=$this->pad_tamanho-1;$i++)$this->alfa[$this->pad_vetor[$i]] = $i+1;}// retornar o texto final, já iluminadofunction getTexto() {return implode('',$this->txt_integro);}// setar string que deve ser pesquisadafunction setTexto($texto) {$this->txt_integro = str_split($texto,1);// teste para case sensitive ou isensitive$this->txt_vetor = ($this->tipo==0) ? str_split($texto,1) : str_split(strtolower($texto),1);array_unshift($this->txt_vetor, " ");$this->txt_tamanho = count($this->txt_vetor)-1;}// procurar pelos padrões no texto, de acordo com o algoritimo de Boyer-Moorefunction procura($busca,$cor="grey",$padrao=null) {$this->setPadrao($busca);$this->ini = 1;while ($this->ini <= $this->txt_tamanho - 1 ) {$fim = $this->pad_tamanho;while ( ($fim >= 1) && ($this->pad_vetor[$fim] == $this->txt_vetor[$this->ini+$fim-1]) ) {$fim--;}if ($fim == 0) $this->iluminar($cor,$padrao);$this->ini += (($fim - $this->alfa[$this->txt_vetor[$this->ini+$fim-1]]) <= 1) ? 1 : $fim - $this->alfa[$this->txt_vetor[$this->ini+$fim-1]];}}// iluminar a parte do texto localizadafunction iluminar($cor,$padrao) {$ini_marca .= "<font color='$cor'>";$fim_marca .= "</font>";if (!is_null($padrao)) {switch (strtoupper($padrao)) {case "U":$ini_marca .= "<u>";$ini_marca .= "</u>";break;case "I":$ini_marca .= "<i>";$fim_marca .= "</i>";break;case "N":$ini_marca .= "<b>";$fim_marca .= "</b>";}}$this->txt_integro[$this->ini-1] = $ini_marca . $this->txt_integro[$this->ini-1];$this->txt_integro[$this->ini+$this->pad_tamanho-2] .= $fim_marca;}}// variavel apenas para auxiliar a visualização do resultado$pref = 120;// string a ser pesquisada$texto = stripslashes('O que é PHP?PHP (um acrônimo recursivo para "PHP: Hypertext Preprocessor") é uma linguagem de script Open Source de uso geral, muito utilizada e especialmente guarnecida para o desenvolvimento de aplicações Web embútivel dentro do HTML.Note como isso é diferente de scripts CGI escritos em outras linguagens como Perl ou C --- ao invés de escrever um programa com um monte de comandos para imprimir HTML, você escreve um arquivo HTML com algum código inserido para fazer alguma coisa (nesse caso, imprimir um pouco de texto). O código PHP é delimitado por tags iniciais e finais que lhe permitem pular pra dentro e pra fora do "modo HP"');echo "<b>Texto original:</b><br /><pre width=$pref>$texto</pre>";// inicio do processamento$tempo = microtime();$b = new Busca();$b->setTexto($texto);$b->procura("PHP","green");$b->procura("C","green");$b->procura("HTML","green");$b->procura("CGI","green");$b->procura("Web","green");$b->procura("Hypertext Preprocessor","blue","i");// Este exemplo a seguir é apenas um teste para testar a "versatilidade" da busca.//$b->procura("imp");//$b->procura("com","brown","n");echo "<br /><br /><b>Texto após a pesquisa:</b><br /><pre width=$pref>" . $b->getTexto() ."</pre>";// fim do processamento$tempo2 = microtime();echo "<br /><br />";echo ($tempo2 - $tempo);?>

 

ok nesse tivemos poucos participantes pelo tempo estimulado para esse desafio.... mais o proximo ja terá um tempo maior....

Compartilhar este post


Link para o post
Compartilhar em outros sites

Realmente, bem simples, mas pouco flexisivel... ;)

Parabéns Eclesiastes! http://forum.imasters.com.br/public/style_emoticons/default/joia.gif

 

O código do Red eu não consegui ver.

 

Quando mesmo poderemos começar a opinar sobre o próximo desafio??? :P

Compartilhar este post


Link para o post
Compartilhar em outros sites

Prog -> ja editei a url do red agora ta funfando... ;) sobre o 5º desafio estamos resolvendo algumas coisas por traz dele que serão boas... eu acho que daqui a 2 dias ja podemos está discutindo sobre o 5º desafio...

Compartilhar este post


Link para o post
Compartilhar em outros sites

O código do Red eu não consegui ver.

Idem ... :huh: Prog, que texto modelo é esse que você usou héin ? Há Há Há ... :lol: Parabéns aos participantes e principalmente aos vencedores ! ! ! http://forum.imasters.com.br/public/style_emoticons/default/clap.gif Rumo ao próximo ... :rolleyes: []’s http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif

Compartilhar este post


Link para o post
Compartilhar em outros sites

O texto sugerido foi o texto "exemplo" para o Desafio... hmmmm... isso pode significar 2 coisas:

 

Ou você não leu o post do desafio inteiro ou esta esquecido. :P

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ola,meus parabens pro pessoal ai, nao pude participar desse, mas bem que eu bolei algo na cabeça num sei se teria change de concorrer mas ta valendo hehehe... agora vamos esperar o proximo neh...Obs: soh achei grande os codigos dos caras hehehe mas ta funfando ta beleza =Dabraços Eclesiastes e tio Red Neck* +)~luis fernando

Compartilhar este post


Link para o post
Compartilhar em outros sites

Eu acho que precisamos de novos requisitos para os desafios seguintes, juntando aos que já temos:

 

Hoje temos:

Menor quantidade de funções prontas do PHP, Menor quantidade de linhas e Maior velocidade.

 

Acho que podemos incluir:

Flexibilidade, Prevenção e Detecção de falhas

 

 

Pensei ai, acho que se enquadra bem aos desafios.

Compartilhar este post


Link para o post
Compartilhar em outros sites

O texto sugerido foi o texto "exemplo" para o Desafio... hmmmm... isso pode significar 2 coisas:

 

Ou você não leu o post do desafio inteiro ou esta esquecido. :P

Nossa ! :o

 

Ler o post inteiro eu li, porém, esqueci ! :huh:

 

Tanto é que o meu texto modelo eu nem peguei do tópico, peguei do manual do PHP ... http://forum.imasters.com.br/public/style_emoticons/default/yay.gif

 

Eita sorte que eu tive de pegar o mesmo texto ... KkK :P

 

Notei até que o texto modelo do desafio tava errado, há há há ... alí no final é modo PHP, não modo HP .. ^_^

 

[]s :D

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá senhores...

 

Desculpe estar voltando a este desafio, devido a diversos fatores, apenas hoje pude testar todos os códigos... mas obtive resultados que não vão de acordo com os apresentados. :(

 

Os meus resultados foram os seguintes:

 

Velocidade:

1º red nec (100 - muito rápido)

2º eclesiastes (70 - 3x mais lento)

3º vidaloca (60 - 4x mais lento)

4º prog (0 - tartaruga)

 

Menor quantidade de funções prontas:

1º eclesiastes (100 - usou 1 função)

2º red nec (80 - usou 2 funções a mais)

3º vidaloca (80 - usou 2 funções a mais)

4º prog (70 - usou 3 funções a mais)

 

Menor quantidade de linhas de código

1º eclesiastes (100 - 2 linhas)

2º red nec (91 - 9 linhas a mais)

3º vidaloca (91 - 9 linhas a mais)

4º prog (70 - 30 linhas a mais)

 

Resultado:

1º red nec (271 pontos)

2º eclesiastes (270 pontos)

3º vidaloca (231 pontos)

4º prog (140 pontos)

O texto utilizado para analisar a performance dos scripts foi outro, maior, para obter uma resposta "mais precisa".

 

Texto utilizado no teste:

http://www.php.net/manual/pt_BR/language.oop5.reflection.php

 

Método de avaliação:

$filename = "language.oop5.reflection.html";

$handle = fopen ($filename, "r");

$texto = fread($handle,filesize($filename));

fclose($handle);

$tinicio = (float) array_sum( explode(' ', microtime()));

// chamadas do(s) código(s);

// exibição do texto iluminado;

echo (float) array_sum( explode(' ', microtime())) - $tinicio;

exit;

Se quiserem esclarecer algum outro critério de avaliação utilizado ou sobre os meus métodos, tudo bem... :)

Compartilhar este post


Link para o post
Compartilhar em outros sites

Prog-> o grande kra..... bem se for pelo seu conseito o red é o vencedor desse desafio....eu estou alterando os resultados....Mais foi por causa de 1 pontos a diferença de erro... a margem de erros é de 2% a mais e para menos hahahhahhaalterando....

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não pow...

 

Eu postei assim, querendo saber a respeito dos critérios que foram utilizados ou se não fizeram todos os testes necessários? Isto pode ter também variações de acordo com equipamento.

 

Se fosse o caso, pederiamos criar "métodos"... para tornar a avaliação mais técnica.

 

Este foi um "método" que eu imaginei aqui e acabou dando esse resultado. Se os métodos utilizados por vocês for diferente, o resultado também pode ser.

Compartilhar este post


Link para o post
Compartilhar em outros sites

pó, nao sei nem o que dizer, obrigado prog, você foi digno, postou algo que o seu script ficaria em ultimo, nao sei quantos programadores fariam a mesma coisa, valeu mesmoquanto ao resultado, indiferente, eu nao ligo em ganhar / perder, eu fico feliz por ter conseguido fazer, e ja estou feliz em ver que o mundo ainda tem salvaçãovaleu ai pessoal, []'s

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.