sfida... elenco parziale e regole

Paolo Certo paolocerto a cblu.net
Lun 11 Lug 2005 10:45:11 CEST


> Insomma, al momento come classifica abbiamo (dal pių veloce al pių lento):
> - C
> - awk
> - php
> 
> Chi si inserisce?

Pių di questo non son riuscito a fare.
Ma č stato divertente.

Paolo

---------------------------------------------------------------------------------
Risultati

[max gufisummercode]$ time php max_vector2.php array.txt.10

somma massima: 150305

real    0m0.465s
user    0m0.229s
sys     0m0.026s
[max gufisummercode]$ time php max_vector2.php array.txt.100

somma massima: 866703

real    0m0.313s
user    0m0.203s
sys     0m0.091s
[max gufisummercode]$ time php max_vector2.php array.txt.1000

somma massima: 3773846

real    0m0.369s
user    0m0.242s
sys     0m0.088s
[max gufisummercode]$ time php max_vector2.php array.txt.10000

somma massima: 4166171

real    0m0.582s
user    0m0.516s
sys     0m0.041s
[max gufisummercode]$ time php max_vector2.php array.txt.100000

somma massima: 23919182

real    0m3.381s
user    0m3.216s
sys     0m0.112s
[max gufisummercode]$

-------------------------------------------------------------------------------------
Lo script

#!/usr/local/bin/php
<?php
/*
 * max_vector2.php
 * Paolo Certo, 2005.
 *
 * parametro: nome file da esaminare
 */

// check esistenza file
if (trim($argv[0]) == "" || !file_exists("./".trim($argv[1]))) {
	echo "ATTENZIONE! Nome file non fornito o inesatto.\n";
}
else {

	$result = 0;
	$array = array();
	
	// legge file e elabora
	$handle = fopen("./".trim($argv[1]), "r");
	if($handle) {
		while (!feof($handle)) {
			
			while (!feof($handle) && sizeof($array) < 2) {
				array_push($array, intval(fgets($handle)));
			}
			
			$sum = array_sum($array);
			
			if ($array[0] > 0 || $sum > max($array)) {
				// entrambi positivi
				// primo positivo > di secondo negativo
				$array[0] = $sum;
				array_pop($array);
				if ($array[0] > $result) {
					$result = $sum;
				}
			}
			else if ($array[1] > 0) {
				// primo negativo e secondo positivo
				array_shift($array);
			}
			else {
				// entrambi negativi
				$array = array();
			}
		
		}
		fclose($handle);
	}
	
	// presentazione risultati
	echo "\nsomma massima: $result\n";
}
?>

---------------------------------------------------------------



Maggiori informazioni sulla lista devel