Ocho reinas en Perl

julio 12 2009Se el primero en comentar

Guardado en : Programación

$N = 8;
for ($i = 0; $i < $N; $i++)
  {
    for ($j = 0; $j < $N; $j++)
      {
	$tablero->[$i][$j] = "X";
      }
  }
 
&Ajedrez (0);
&imprimir ();
sub Ajedrez
{
  local ($fila) = @_;
  local ($i, $j);
  local ($linea) = 0;
  if ($fila == $N)
    {
      return (1);
    }
  while ($linea < $N)
    {
      if (&probar ($fila, $linea))
	{
	  $tablero->[$fila][$linea] = "Q";
	  if (&Ajedrez ($fila + 1))
	    {
	      return 1;
	    }
	$tablero->[$fila][$linea] = "X"}
      $linea++;
    }
  return (0);
}
 
sub probar
{
  local ($fila, $linea) = @_;
  local ($r, $l);
  $r = $fila;
  $l = $linea;
  while ($r >= 0 && $l >= 0)
    {
      if ($tablero->[$r][$l] eq "Q")
	{
	  return (0);
	}
      $r--;
      $l--;
    }
  $r = $fila;
  $l = $linea;
  while ($r >= 0 && $l < $N)
    {
      if ($tablero->[$r][$l] eq "Q")
	{
	  return (0);
	}
      $r--;
      $l++;
    }
  $r = $fila;
  $l = $linea;
  while ($r >= 0)
    {
      if ($tablero->[$r][$l] eq "Q")
	{
	  return (0);
	}
      $r--;
    }
  return (1);
}
 
sub imprimir
{
  local ($i, $j);
  for ($i = 0; $i < $N; $i++)
    {
      print "\n\t\t\t";
      for ($j = 0; $j < $N; $j++)
	{
	  print " $tablero->[$i][$j] ";
	}
    }
}

Quizá te interese :

  • Juego del Gato en C. /*Juego de Gato Heurístico Autor:Jesús M.Olivares Ceja Desarrollad ...

  • #include #include double f (double x) { return (x * x) - 1; } double df (double x ...

  • Para concatener arrays tenemos el operador ',' coma y evita utilizar la funcion pop, añadiendo t ...

Acerca del autor:

Deja un comentario


Licencia y uso

Las técnicas demostradas en los tutoriales pueden ser utilizadas sin ninguna limitación y tampoco es obligatorio dar una atribución.


Los textos, imágenes y tutoriales son propiedad de sus respectivos autores, nuestro contenido se encuentra bajo licencia Creative Commons Share-Alike.

Escribe algo para el sitio

El escribir un tutorial o un artículo, mandarnos un enlace para Ubicuos, no solamente es una forma de obtener publicidad, si no también de dar algo a la comunidad y nosotros te lo recompensamos con los premios del mes! Leer más de nuestras promociones

¿Sugerencias?

Este es TU sitio, si tienes sugerencias o ideas de cómo podemos mejorarlo para ti, ¡Por favor háznoslos saber!

Hacemos nuestro mayor esfuerzo en proporcionar un sitio útil y amigable y esperamos que disfrutes tu tiempo aquí.

Ayuda a Difundir

Te gusta Ubicuos?

Ve las formas en que nos puedes apoyar.

Apoyando a Ubicuos.com

Submit your linkClose

-->