Ver Mensaje Individual
  #9 (permalink)  
Antiguo 27/08/2010, 13:06
carlos_nav
 
Fecha de Ingreso: agosto-2010
Mensajes: 9
Antigüedad: 13 años, 7 meses
Puntos: 0
Respuesta: Cuadrado magico 3x3

Cita:
Iniciado por Triby Ver Mensaje
Para que mejores tu algoritmo:

- El 5 siempre va al centro (eso ya lo dijiste tu mismo)
- Los pares siempre van en las esquinas (no lo habias notado?)

Podrias obtener la esquina superior izquierda en aleatorio (2, 4, 6 u 8)... el resto de posiciones es solo hacer calculos.

Ejemplo: Esquina inferior derecha = 15 - (Esquina superior izquierda + Centro)
gracias!!! te pido el ultimo favor,soy bastante novato y creo q tu lo sacas al toque: cuando hago el segundo random- el de la esquina derecha no pùedo darle 2 condiciones al while(que sea multiplo de 2 y que sea distinto de la esquina izquierda superior) fijate....

<?php

/*&& $a[0]+$a[1]+$a[2]!=15 && $a[0]+$a[3]+$a[6]!=15 && $a[2]+$a[5]+$a[8]!=15 && $a[6]+$a[7]+$a[8]!=15 && $a[1]+5+$a[7]!=15 && $a[3]+5+$a[5]!=15 && $a[0]+5+$a[8]!=15 && $a[2]+5+$a[6]!=15*/
$a=range(1,9);

while($a[0] %2!=0){
$a[0]=rand(1, 9);
$a[8]=15-5-$a[0];


while(($a[2]==$a[0]) && ($a[2] %2!=0)){
$a[2]=rand(1, 9);
$a[6]=15-5-$a[2];
}
}

$arrayLast=$a;

echo"<table border='1'>";
echo'<tr>';
echo"<td>$arrayLast[0]</td><td>$arrayLast[1]</td><td>$arrayLast[2]</td>";
echo"</tr>";
echo"<tr>";
echo"<td>$arrayLast[3]</td><td>$arrayLast[4]</td><td>$arrayLast[5]</td>";
echo"</tr>";
echo"<tr>";
echo"<td>$arrayLast[6]</td><td>$arrayLast[7]</td><td>$arrayLast[8]</td>";
echo '</tr>';
echo'</table>';