2011-10-29 57 views
0

我需要向用戶顯示一個W x H的短字符串表。着色項目表

(更新:本表內容不可變的,我不能走動串,改變他們等等)

爲了簡單起見,我們說:

  • 我形象化該表使用HTML;
  • 一個字符串是一個單詞,由英語詞典中隨機選取的加權(按詞頻)
  • W和H的範圍是5到10;
  • 平均情況下可能同時有10-15個不同的單詞;
  • 在最壞的情況下,表格中的所有單詞都是不同的(即最多100個不同的字符串)。

爲了幫助可視化,我需要着色表格單元格的背景。具有相同單詞的單元應具有相同的顏色。

問題是什麼是在這種情況下爲字符串分配顏色的好算法?

附加要求和注意事項:

  • 我不希望使用的100種顏色的硬編碼表,這是不好玩。
  • 顏色應儘可能在視覺上區分(但有100種難以達到的顏色)。
  • 或者 - 相鄰單元格的顏色必須儘可能在視覺上區分(當然,只要它們包含不同的單詞)。但是這會使算法複雜化。
  • 如果可能,我希望每個單元格中的文本都是相同的顏色(比如黑色)。再次,這與100種顏色很難做到。但至少,文本應儘可能具有任何背景顏色的可讀性。
  • 理想情況下,爲了簡單起見,我想盡一切努力,並隨時分配顏色 - 但這會損害可區分性。所以,我想兩個通行證。
  • 一般來說,性能並不重要,可讀性和算法簡單。

回答

0

基於你構思這個問題的方式,我還假定表中單詞的位置不是你可以改變的。我只是做出這種區分來確認你不能做一些簡單的事情,並將相同的術語移動到相鄰的單元格中。

關於着色細胞,我認爲最直接的解決方案是編寫一個算法,根據細胞的字符值確定顏色。請記住Chroma Hash這是首先想到的。

你的工作會因試圖增加相鄰單元之間的差異而變得複雜,但也有一些有用的例子可用。看看Brian Suda's work。根據你想花費多少時間來處理這個問題,你可以深入地確定一個徹底的解決方案,因爲我認爲這將是圖論/頂點着色問題或地圖着色問題的應用。如果你的谷歌地圖着色問題或算法最大的顏色,你應該迅速淹沒在各種學術方法。

+0

正確,我無法移動文字,表格數據是不可變的。我已經更新了這個問題來澄清這一點。 –

+1

我不確定是否將字符串值中的顏色確定爲函數是一個好主意......除非你會建議一個好的字符串差異度量標準,這看起來並不比隨機選擇顏色更好......也許我雖然錯了,但...另請參見:http://stackoverflow.com/questions/495662/mapping-arbitrary-strings-to-rgb-values –

+0

一個很好的觀點。我認爲唯一的直接好處是可以在數組中重複條件,因此不需要存儲隨機確定的單詞/顏色映射,以便您的選擇一致。該算法會保持一致。 – Carth