Tengo un problema bastante único que tengo problemas para resolver. Tengo una mesa de 2 x 3, dispuesta como se muestra a continuación.Combinación de tablas complejas javascript & jquery algorithm
_ 1 __ _ _ 2 __
1- | _ __ _ | __ _ _ |
2- | _ __ _ | __ _ _ |
3- | _ __ _ | __ _ _ |
Los datos se llenan en las celdas de la tabla. A veces, los datos en una columna o fila pueden ser los mismos. Por ejemplo, si (1,1) y (1,2) tienen los mismos datos. En algunos casos (1,1), (1,2) y (1,3) todos pueden tener los mismos datos. Si los valores en las celdas son iguales y adyacentes, deben fusionarse. Por ejemplo, si (1,1) y (1,2) ambos tienen un valor de "100", las dos celdas se fusionan. He hecho esto de forma manual mediante el uso de jQuery como:
(1,2).hide();
(1,1).attr("rowspan", "2");
escondo el (1,2) celda en lugar de borrar, ya que las mesas se pueden reajustar a la 2x3 original y luego vuelve a llenar si es necesario. Manualmente, esto funciona muy bien, pero necesito un método dinámico. A continuación se muestra el objetivo general de lo que se necesita lograr.
- Si dos celdas adyacentes verticalmente o tres celdas adyacentes verticalmente en sus respectivas columnas tienen valores iguales, entonces esas celdas se fusionan.
- Las celdas de fila, como (1,1) y (2,1) pueden tener datos duplicados y nunca se combinan.
- Como referencia, los grupos de celdas que se pueden fusionar son {(1,1), (1,2)}, {(1,1), (1,2), (1,3)} , {(1,2), (1,3)}, {(2,1), (2,2)}, {(2,1), (2,2), (2,3)}, { (2,2), (2,3)}
- Múltiples fusiones pueden suceder a la vez. Por ejemplo: {(1,1), (1,2)} tienen los mismos datos, y {(2,1), (2,2), (2,3)} tienen los mismos datos. Ambos grupos se fusionaron individualmente.
Mi pregunta principal es, ¿cómo voy a escribir un algoritmo para hacer esto, sin escribir todas las situaciones posibles. ¿Puede alguien mostrarme un ejemplo de algo que funcionaría? Me doy cuenta de que esto es complejo, así que siéntase libre de hacer preguntas para aclararlas. Muchas gracias en avanzado. ¡Esto es una gran ayuda!
¿La mesa siempre es 2x3? –
Suena como un trabajo para ... Asignación de Karnaugh. Consulte http://en.wikipedia.org/wiki/Karnaugh_map –
La tabla siempre es originalmente 2 x 3. La combinación de las celdas puede hacer que la tabla se convierta en 2 x 2 o 2 x 1. – dremme