Раскраска таблицы предметов - PullRequest
0 голосов
/ 29 октября 2011

Мне нужно показать пользователю таблицу W x H коротких строк.

(Обновление: содержимое таблицы не является изменяемым, я не могу перемещать строки, изменять их и т. Д.)

Для простоты, скажем, что:

  • Я визуализирую таблицу с использованием HTML;
  • строка - это одно слово, выбранное взвешенным (по частоте слова) случайным образом из словаря английского языка;
  • Wи H находится в диапазоне от 5 до 10;
  • в среднем случае, вероятно, будет одновременно 10-15 разных слов;
  • , а в худшем случае все слова в таблицеразные (то есть до 100 разных строк).

Чтобы помочь визуализации, мне нужно раскрасить фон ячеек таблицы.Ячейки с одинаковым словом должны быть одного цвета.

Вопрос в том, что является хорошим алгоритмом для назначения цветов для строк в этом случае?

Дополнительные требования и примечания:

  • Я не хочу использовать жестко закодированную таблицу из 100 цветов, это не весело.
  • Цвета должны быть как можно более визуально различимы (но с 100 цветами, которые труднодостижения).
  • В качестве альтернативы - цвета соседних ячеек должны быть как можно более визуально различимы (если, конечно, они содержат разные слова).Но это усложнит алгоритм.
  • Я бы хотел, чтобы текст в каждой ячейке был одного цвета (скажем, черного), если это возможно.Опять же, это трудно сделать со 100 цветами.Но, по крайней мере, текст должен быть максимально читабельным с любым фоновым цветом.
  • В идеале я хотел бы сделать все за один проход для простоты и назначать цвета на ходу - но это повредит различимости.Итак, два прохода, я думаю.
  • В общем, производительность не имеет значения, удобочитаемость и простота алгоритма имеют значение.

1 Ответ

0 голосов
/ 29 октября 2011

Исходя из того, как вы сформулировали этот вопрос, я бы также предположил, что положение слов в вашей таблице нельзя изменить. Я делаю это различие только для того, чтобы подтвердить, что вы не можете сделать что-то легкое и перенести идентичные термины в соседние ячейки.

Что касается окраски ячеек, я думаю, что самым простым решением было бы написать алгоритм, который определяет цвет на основе значений символов ячейки. Благодарим Chroma Hash за то, что это первое, что приходит на ум.

Ваша работа будет осложнена попыткой увеличить различия между соседними ячейками, но есть также несколько полезных примеров. Взгляните на работу Брайана Суда . В зависимости от того, сколько времени вы хотите потратить на обработку этого, вы можете довольно глубоко определить правильное решение, так как я думаю, что это будет приложение теории графов / проблемы затенения вершин или проблемы раскраски карты. Если у вас проблема раскраски карты Google или алгоритм максимального цвета, вы должны быстро утонуть в различных академических подходах.

...