#!/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.