Foros del Web » Programando para Internet » PHP »

Cuadrado magico 3x3

Estas en el tema de Cuadrado magico 3x3 en el foro de PHP en Foros del Web. Buenas a todos. Les cuento mi problema. Hace dias que estoy llendo y viniendo para hacer un cuadrado magico de 3x3. Para los que no ...
  #1 (permalink)  
Antiguo 27/08/2010, 10:30
 
Fecha de Ingreso: agosto-2010
Mensajes: 9
Antigüedad: 14 años, 2 meses
Puntos: 0
Cuadrado magico 3x3

Buenas a todos. Les cuento mi problema. Hace dias que estoy llendo y viniendo para hacer un cuadrado magico de 3x3. Para los que no saben un cuadrado magico es aquel en que las sumas de sus diagonales sus filas y sus columnas dan el mismo valor. La idea es q cada vez q lo llame me traiga uno diferente....
Agradeceria mucho su ayuda!!! un saludo

por ej:

4 9 2
3 5 7
8 1 6

funciones q casi seguro van: range(1,9); shuffle($array), el 5 siempre va en el medio(es una regla del cuadrado magico)

Última edición por carlos_nav; 27/08/2010 a las 10:44 Razón: faltaron datos
  #2 (permalink)  
Antiguo 27/08/2010, 10:45
Colaborador
 
Fecha de Ingreso: octubre-2009
Ubicación: Tokyo - Japan !
Mensajes: 3.867
Antigüedad: 15 años, 1 mes
Puntos: 334
Respuesta: Cuadrado magico 3x3

me suena a...
hagan mi tarea plz :B
__________________
More about me...
~ @rhyudek1
~ Github
  #3 (permalink)  
Antiguo 27/08/2010, 10:49
Avatar de claudiovega  
Fecha de Ingreso: octubre-2003
Ubicación: Puerto Montt
Mensajes: 3.667
Antigüedad: 21 años
Puntos: 11
Respuesta: Cuadrado magico 3x3

Aquí tienes una explicación de como se hace:

http://mx.answers.yahoo.com/question...1163602AAOHwmC
  #4 (permalink)  
Antiguo 27/08/2010, 10:56
 
Fecha de Ingreso: agosto-2010
Mensajes: 9
Antigüedad: 14 años, 2 meses
Puntos: 0
Respuesta: Cuadrado magico 3x3

eso que explica ahii se llama el metodo siames. ya lo estuve investigandoo y te da solo 1 de las posibles soluciones. no es lo que estoy buscando . gracias
  #5 (permalink)  
Antiguo 27/08/2010, 11:19
 
Fecha de Ingreso: agosto-2010
Mensajes: 9
Antigüedad: 14 años, 2 meses
Puntos: 0
Respuesta: Cuadrado magico 3x3

les paso lo que tengo hecho. cuando le agrego mas de 1 condicion al while la condicion $a[0]!=5 no se cumple mas.

<?php


$a=range(1, 9);

do{
shuffle($a);
}
while($a[4]!=5 && $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);


$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>';
  #6 (permalink)  
Antiguo 27/08/2010, 12:11
 
Fecha de Ingreso: agosto-2010
Mensajes: 9
Antigüedad: 14 años, 2 meses
Puntos: 0
Respuesta: Cuadrado magico 3x3

Cita:
Iniciado por Hidek1 Ver Mensaje
me suena a...
hagan mi tarea plz :B

ahi puse algo de codigo. se que si te tomas 5 minutos de tu tiempo me ayudarias. gracias
  #7 (permalink)  
Antiguo 27/08/2010, 12:13
 
Fecha de Ingreso: agosto-2010
Mensajes: 9
Antigüedad: 14 años, 2 meses
Puntos: 0
Respuesta: Cuadrado magico 3x3

Cita:
Iniciado por claudiovega Ver Mensaje
Aquí tienes una explicación de como se hace:

[url]http://mx.answers.yahoo.com/question/index?qid=20080331163602AAOHwmC[/url]

eso que explica ahii se llama el metodo siames. ya lo estuve investigandoo y te da solo 1 de las posibles soluciones. no es lo que estoy buscando . gracias
  #8 (permalink)  
Antiguo 27/08/2010, 12:15
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 16 años, 3 meses
Puntos: 2237
Respuesta: Cuadrado magico 3x3

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)
__________________
- León, Guanajuato
- GV-Foto
  #9 (permalink)  
Antiguo 27/08/2010, 13:06
 
Fecha de Ingreso: agosto-2010
Mensajes: 9
Antigüedad: 14 años, 2 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>';
  #10 (permalink)  
Antiguo 27/08/2010, 13:32
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 16 años, 3 meses
Puntos: 2237
Respuesta: Cuadrado magico 3x3

Para mi lo mas facil seria:

- Esquina superior izquierda = rand(1,4) * 2; // Necesariamente sera 2, 4, 6 u 8
- Calculas la esquina inferior derecha
- Te quedan solo dos numeros por usar en esquinas (2/8 o 4/6)
- Haz un rand (0,1) si el resultado es cero, entonces el menor ira a la esquina superior derecha, si es uno, sera el mayor.

Despues de eso... solo necesitas hacer calculos para llenar los espacios centrales.
__________________
- León, Guanajuato
- GV-Foto
  #11 (permalink)  
Antiguo 27/08/2010, 14:52
 
Fecha de Ingreso: agosto-2010
Mensajes: 9
Antigüedad: 14 años, 2 meses
Puntos: 0
Respuesta: Cuadrado magico 3x3

Cita:
Iniciado por Triby Ver Mensaje
Para mi lo mas facil seria:

- Esquina superior izquierda = rand(1,4) * 2; // Necesariamente sera 2, 4, 6 u 8
- Calculas la esquina inferior derecha
- Te quedan solo dos numeros por usar en esquinas (2/8 o 4/6)
- Haz un rand (0,1) si el resultado es cero, entonces el menor ira a la esquina superior derecha, si es uno, sera el mayor.

Despues de eso... solo necesitas hacer calculos para llenar los espacios centrales.
muchas gracias.!!!!

Etiquetas: acertijo, cuadrado, logica, magico
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 18:46.