Ir para conteúdo

Arquivado

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

Prog

Duelo. MUTANTE_POWER_B X luis-restart

Recommended Posts

Hhiahhuauhauhauhauha... :)/>

 

A escolha é sua, eu não ia poder avaliar hoje mesmo... as coisas por aqui estão meio corridas. http://forum.imasters.com.br/public/style_emoticons/default/natal_ohmy.gif

Compartilhar este post


Link para o post
Compartilhar em outros sites

Lá vai...

 

MUTANTE_POWER_B

<?
function chk ($l) {
	$o = ord($l);
	return (($o >= 65 && $o <= 90) || ($o >= 97 && $o <= 122 || $o == 181) || ($o >= 192 && $o <= 255 & $o != 215 && $o != 247));
}

function my_str_word_count( $s , $f = NULL ) {
	$i=$p=$wc=0;$s.=' ';
	$t=strlen($s);
	$ar = array();
	while ($i < $t) {
		if (!chk($s[ $i++ ]))
			continue;
		$p = $i - 1;
		$l = $s[ $i ];
		while(chk($l) || (($l == "'" || $l == '-') && chk($s[$i+1])))
			$l = $s[ ++$i ];
		$w = substr($s, $p, $i-$p);
		switch ($f) {
			case 1: $ar[] = $w; break;
			case 2: $ar[$p] = $w; break;
			default: $wc++;
		}
	}
	return is_null($f) ? $wc : $ar;
}
?>

luis-restart

<?
function str_word_count2($arg1 , $arg2 = 0) {
	$t1 = array("/( )[\W]/", "/[\d]/");
	$str=$arg1;
	$str = preg_replace("#[.,;:?!<>~^´`\[\]{}()|º°=+_*&¨¬%¢\$£\#³²¹@/\\\]#", " ", $str);
	for($i=0;$i<strlen($arg1);$i++) 
		$str = preg_replace($t1, " ", " ".$str." ")."\n";
	$str = preg_replace("#(\s)+#", " ", trim($str));
	$str = explode(" ", $str);
	switch($arg2){
		case 0: return sizeof($str);
		case 1: return $str;
		case 2: for($i=$offset=0;$i<sizeof($str);$i++){
					$p = strpos($arg1, $str[$i], $offset);
					$ret[$p] = $str[$i];
					$offset += strlen($str[$i])+1;
				 }
				return $ret;
		default: return "Warning: str_word_count(): The specified format parameter, '$arg2' is invalid.\n";
	}
}
?>

Avaliação:

 

Métodos utilizados na avaliação:

- as funções - foram contabilizadas de acordo com as que são essenciais para a resolução do problema;

- as linhas - foram consideradas apenas aquelas que fazem parte da solução e exibição dos resultados;

- todos os testes foram realizadas na minha máquina local (Pentium 4, 2.8Ghz, 512MB RAM - IIS 5.1 com PHP 5.1.1 - SO Windows 2000 Pro)

- o tempo é analisado dado pela classe que o red neck me passou, e que vamos fazer com que a mesma se torne um software analisador de duelos. *rs*

 

Velocidade:

1º MUTANTE_POWER_B (100 - extremamente rápido)

2º luis-restart (70 - 3x quanto maior o texto, mais lento)

 

Menor quantidade de funções internas:

1º MUTANTE_POWER_B (100 - usou 4 funções)

2º luis-restart (99 - usou 2 função a mais)

 

Menor quantidade de linhas de código:

1º luis-restart (100 - 14 linhas)

2º MUTANTE_POWER_B (97 - 3 linha a mais)

 

Extra/Detalhes:

MUTANTE_POWER_B - tentou lubridiar o juiz, entregando toda a solução digitada em somente 2 linhas, dificultando a analise e entendimento da função (-10 pontos)

* MUTANTE_POWER_B e luis-restart Embora ambas as soluções funcionem perfeitamente bem, um detalhe me chamou a atenção. Quando submete-se a seguinte sequência de caracteres 'Ä Ö ÿ ë í ú Á Ó Ú Ñ Ã Õ ê î ô Â Ê Ô ç ì ò ù À Ò Ù Æ' a ambas as soluções, elas tem o mesmo comportamente, mas a função ste_count_words() original se comporta de uma forma diferente (-15 pontos)

* MUTANTE_POWER_B e luis-restart Ambas as funções apresentaram um mal funcionamento como observado pelo SiLLenT, a do MUTANTE tem interpretação errada com uma string, por exemplo, "will'-ian" e a do luis apresenta uma falha quando interpreta uma string, por exemplo, "will'-'ian", estranho não? Também achei (-15 pontos)

 

Resultado final:

1º MUTANTE_POWER_B (256 pontos)

2º luis-restart (239 pontos)

Parabéns a ambos os scripters, foi um desafio bem interessante. :)/> Também foi, de longe, o mais dificil de ser avaliado.

 

Obs.: Mais uma vez vemos um script ser derrotado por conter funções de manipulação de texto.

 

* Havia esquecido de um detalhe nesta avaliação, fiz uma alteraçãozinha.

* Observação do SiLLenT para com o funcionamento das funções.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Muito bom aos dois estão de parabens,..... :)/> =)))Proxima Partida:???:?)

Compartilhar este post


Link para o post
Compartilhar em outros sites

fala gurizada,ahh que chato perdi! hauuauahauhua nem esquento muito nao... (mas eh logico que queria ganhar neh...) outra coisa, meus parabens mutante_power_b ficow show sua resolucao, embora complicada por checar char por char (minha ideia inicial era essa, mas eu achei que se checasse palavra a palvra seria mais rapido =D e menos trabalhoso...) . Particularmente achei um dos mais dificieis e ainda deixei tudo pras vesperas (por falta de tempo) e quase que eu nao concluo ele pra mandarm, cada hora achava um bugzinho... hehehehe cade meus 200 pontos de vantagem?? hein hein?? hehehe... outra coisa, ainda bem que nao te segui e mandei tudo numa linha soh, ia perder ponto tambem hauhauahuhu...[editado]queria de agradecer os carinhas pra quem eu perguntei as coisas e que me ajudaram a testar a funcao =D. vlw!! (tinha esquecido de voces mas lembrei a tempo hehehe)[/editado][]sluis fernando

Compartilhar este post


Link para o post
Compartilhar em outros sites

Parabéns aos dois!

Ambos são vencedores por terem concluído o desafio... tanto o luís como o mutante mandaram muito bem.

Compartilhar este post


Link para o post
Compartilhar em outros sites

tipoweu tive vereficando aquiachei uns paus na função aliiiachei 2 erros vejama função do mutanteusando essa string = will'-ianusando um print_r(função($string, 1)a do mutante retorna: Array ( [0] => will [1] => ian )a do luis retorna: Array ( [0] => will'-ian )a do php retorna: Array ( [0] => will'-ian )bem esse é umagora o outrousando a mesma função so q com uma string diferentestring = will' iana do mutante retorna: Array ( [0] => will [1] => ian )a do luis retorna: Array ( [0] => will' [1] => ian )a do php retorna: Array ( [0] => will' [1] => ian )aeeeso achei issunao sei se vai interferi em alguma coisa mais fico f*** esse desafioeita coisa inrrolada ahiuahauihauauiata faloww ae...\o/bejo pro ceis :@@@@editado: so pra consta: phpinfo() = PHP Version 5.1.1

Compartilhar este post


Link para o post
Compartilhar em outros sites

eu acho que o prog ta certo script em uma linha nao quer dizer colocar tudo numa linha só, se eu quiser eu coloco tudo numa linha só e o que conta é os ; mas na verdade nao ta sendo em uma linha

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.