У меня есть довольно уникальная проблема, с которой у меня возникают проблемы. У меня есть таблица 2 x 3, расположенная, как показано ниже.Сложный алгоритм слияния javascript и jquery
_ __ _ _ __
1- | _ __ _ | __ _ _ |
2- | _ __ _ | __ _ _ |
3- | _ __ _ | __ _ _ |
Данные заселяются в ячейки таблицы. Иногда данные в столбце или строке могут быть одинаковыми. Например, если (1,1) и (1,2) имеют одинаковые данные. В некоторых случаях (1,1), (1,2) и (1,3) могут иметь одинаковые данные. Если значения в ячейках одинаковые и смежные, их необходимо объединить. Например, если (1,1) и (1,2) оба имеют значение «100», две ячейки объединяются. Я сделал это вручную, с помощью JQuery, как:
(1,2).hide();
(1,1).attr("rowspan", "2");
Я скрываю (1,2) клетки вместо удаления, поскольку таблицы могут быть сброшены к первоначальному 2х3, а затем заселили в случае необходимости. В ручном режиме это отлично работает, но мне нужен динамический метод. Ниже приведена общая цель того, что необходимо выполнить.
- Если две вертикально смежные ячейки или три вертикально смежные ячейки в своих соответствующих столбцах имеют значения, равные, то эти ячейки объединяются вместе.
- Ячейки строк, такие как (1,1) и (2,1), могут иметь дублированные данные и никогда не сливаются.
- Для сравнения, группы ячеек, которые могут быть объединены, являются {(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)}
- Несколько объединений могут происходить одновременно. Например: {(1,1), (1,2)} имеют одинаковые данные, а {(2,1), (2,2), (2,3)} имеют одинаковые данные. Обе группы объединены индивидуально.
Мой главный вопрос: как я могу написать алгоритм для этого, не выписывая каждую возможную ситуацию. Может ли кто-нибудь показать мне пример того, что будет работать? Я понимаю, что это сложно, поэтому не стесняйтесь задавать вопросы для разъяснения. Большое спасибо за продвинутый. Это огромная помощь!
Всегда ли таблица 2x3? –
Звучит как работа для ... Карно Картография. См. Http://en.wikipedia.org/wiki/Karnaugh_map –
Таблица всегда изначально 2 x 3. Слияние ячеек может привести к тому, что таблица станет 2 x 2 или 2 x 1. – dremme