#!/usr/local/bin/perl -W
$|++;
$N = 1000000;

for $iter (1..$N){
    $pos{raton}{x} = 0;
    $pos{raton}{y} = 0;
    $pos{gato}{x} = 4;
    $pos{gato}{y} = 4;
    $time=0;
    while (1){
	$time++;
	mov('raton');
	mov('gato');
	if ($pos{raton}{x}==$pos{gato}{x} &&
	    $pos{raton}{y}==$pos{gato}{y}){
		$sum += $time;
		last;
	    }
    }
    print "\r$iter";
}
print "\n", $sum / $N, " mean time\n";
exit 1;


sub mov{
    my $bicho = shift;
    $ok=0;
    while ($ok==0) {
	$movxy = (rand>.5) ? 'x' : 'y';
	$mov = (rand>.5) ? -1 : 1;
	$temp = $pos{$bicho}{$movxy} + $mov;
	if ($temp >=0 && $temp <=4){
	    $pos{$bicho}{$movxy} = $temp;
	    $ok=1;
	}
    }
    return; 
}



__END__
  
Se trata de hallar una aproximación a la esperanza matemática de
  vida del ratón en el juego del ratón y el gato 2D. En él, partiendo
  de las casillas opuestas en una rejilla 5x5, cada instante de tiempo 
  T el ratón y el gato pasan a una casilla adyacente rectilíneamente 
  a la actual. En el momento en que coinciden en la misma casilla, el 
  ratón muere.

