#!/usr/local/bin/perl -w

use List::Util qw(shuffle);

@next= (
    [0],
    [2,4],
    [1,3,5],
    [2,6,0],
    [1,5,7],
    [2,4,6,8],
    [3,5,9],
    [4,8],
    [5,7,9],
    [6,8]
);

@cc=(1,3,7,8,2,12,6,1,5,4);

while(1){
    @ruta=();
    @c=@cc;
    $count=0;
    $ruta[0]=9;
    $c[9]--;
    while (1){
	$count++;
	@cand=();
	$ant=$ruta[$count-1];
	for $j (0..3){
	    if (defined $next[$ant][$j]){
		push @cand, $next[$ant][$j];
	    }else{last; }
	}
	$ok=0;
	for $i (shuffle @cand){
	    if ($c[$i]>0){
		$ok=1;
		$ruta[$count]=$i;
		$c[$i]--;
		last;
	    }
	}
	last if ($ok==0);
    }	
    $exito=0;
    for $j (0..$#c){
	if ($c[$j]==0 || $j == 5){
	    $exito++;
	}else{ last; }
    }
    last if $exito==10;
}
print @ruta,"\n";
for $i (@ruta){
    if ($i==5) { $k++; }
}
print "El núm. de celda central (5) es $k\n";

__END__
Cuarto central

   From: Sonia <mibblebasi@gmail.com>
   Reply to: Sonia
   Date: Wed, 14 Apr 2010 08:44:41 -0700 (PDT)
   Organization: http://groups.google.com
   Newsgroups:
          es.ciencia.matematicas
   Followup to: newsgroup
Una exposici=F3n se exhibe en 9 salas. Cada cuarto est=E1 comunicado en
cus vecinos y el n=FAmero indica cuantas veces paso Luis por cada uno de
ellos. =BFcuantas veces pas=F3 Luis por el cuarto Central

3       7      8  -> Salida

2       ?      6

1       5      4 <- Entrada
