#!/usr/bin/perl

$DIR = "results.1";

if ($ARGV[0] == 1) {
	`$0 | pl -x11 -prefab lines data=- delim=tab x=1 y=2 err=3 y2=6 err2=7 yrange="0 40" xlbl="Target Speed" name="Negotiate" name2="Random" ylbl="Utility" title="Utility Differences by Target Speed" legend="max-1 max"`;
	`$0 | pl -eps -o data.eps -prefab lines data=- delim=tab x=1 y=2 err=3 y2=6 err2=7 yrange="0 40" xlbl="Target Speed" name="Negotiate" name2="Random" ylbl="Utility" title="Utility Differences by Target Speed" legend="max-1 max"`;
	exit;
}

@TESTS = (1, 4, 7, 10, 13);

for $i (@TESTS) {
	undef @TOTAL;
	undef @POSSIBLE;
	undef @RANDOM;

	for ($n = 0; true; $n++) {
		$loc = "$DIR.$i.$n";
		last if (! -e $loc);
		open FH, "$loc/stats.txt";
		push (@COST, 0);
		while (<FH>) {
			chomp();
			($name, $value, $stddev) = split(/\s/);
			push (@TOTAL, $value) if ($name eq "TotalUtility");
			push (@POSSIBLE, $value) if ($name eq "PossibleUtility");
			push (@RANDOM, $value) if ($name eq "RealRandomUtility");
		}
		close FH;
	}
	next if ($n == 0);

	print join ("\t", $i,
		computeaverage(@TOTAL),
		computestddev(@TOTAL),
		computeaverage(@POSSIBLE),
		computestddev(@POSSIBLE),
		computeaverage(@RANDOM),
		computestddev(@RANDOM)
	) . "\n";
}

sub computeaverage() {
	my (@array) = @_;
	my $total = 0;

	for (my $i = 0; $i < @array; $i++) {
		$total += $array[$i];
	}

	return (@array > 0) ? $total / @array : 0;
}

sub computestddev() {
	my (@array) = @_;
	my $average = &computeaverage(@array);
	my $total = 0;

	for (my $i = 0; $i < @array; $i++) {
		$total += ($array[$i] - $average) * ($array[$i] - $average);
	}

	return (@array > 1) ? sqrt($total / (@array - 1)) : 0;
}

