Mam dość unikalny problem, który sprawia problemy. Mam stół 2 x 3, ułożony jak pokazano poniżej.Złożona tabela łącząca algorytm javascript i jquery
_ __ _ _ __
1- | _ __ _ | __ _ _ |
2- | _ __ _ | __ _ _ |
3- | _ __ _ | __ _ _ |
Dane są wypełniane w komórkach tabeli. Czasami dane w kolumnie lub wierszu mogą być takie same. Na przykład, jeśli (1,1) i (1,2) mają te same dane. W niektórych przypadkach (1,1), (1,2) i (1,3) wszystkie mogą mieć te same dane. Jeśli wartości w komórkach są takie same i sąsiadujące, muszą zostać scalone. Na przykład, jeśli (1,1) i (1,2) oba mają wartość "100", dwie komórki zostaną scalone. Robiłem to ręcznie za pomocą jquery jak:
(1,2).hide();
(1,1).attr("rowspan", "2");
ukryć (1,2) komórki zamiast usunięcie, ponieważ tabele można przywrócić do pierwotnego 2x3, a następnie odbudowane w razie potrzeby. Ręcznie, działa to świetnie, ale potrzebuję metody dynamicznej. Poniżej znajduje się ogólny cel tego, co należy osiągnąć.
- Jeśli dwie sąsiednie pionowo komórki lub trzy pionowo sąsiadujące komórki w odpowiednich kolumnach mają równe wartości, wówczas te komórki są scalane razem.
- Komórki wierszy, podobnie jak (1,1) i (2,1) mogą mieć zduplikowane dane i nigdy nie są scalane.
- Dla odniesienia, grupy komórek, które mogą być połączone, to {(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)}
- Wielokrotne scalanie może się zdarzyć na raz. Na przykład: {(1,1), (1,2)} mają te same dane, a {(2,1), (2,2), (2,3)} mają te same dane. Obie grupy są indywidualnie łączone.
Moje główne pytanie brzmi: jak mam napisać algorytm, aby to zrobić, bez zapisywania każdej możliwej sytuacji. Czy ktoś może pokazać mi przykład czegoś, co zadziała? Rozumiem, że jest to skomplikowane, więc możesz zadawać pytania w celu wyjaśnienia. Dziękuję bardzo za zaawansowane. To jest ogromna pomoc!
Czy tabela jest zawsze 2x3? –
Brzmi jak praca dla .... Mapowania Karnaugh. Zobacz http://pl.wikipedia.org/wiki/Karnaugh_map –
Tabela jest zawsze oryginalna 2 x 3. Łączenie komórek może spowodować, że tabela stanie się 2 x 2 lub 2 x 1. – dremme