将1024个数字映射到唯一字符

时间:2015-11-16 17:04:04

标签: java

我想从这里使用Ron Begleiter的代码:http://www.cs.technion.ac.il/~ronbeg/vmm/code_index.html,以便对某些顺序数据执行某些预测。

代码基于字符比较,即它读取上下文(字符序列)以及字符,它返回概率P(char | context),表示在给定上下文时char将出现的概率。

我的问题是我的字母表由0到1023之间的整数组成。这样的比较如P(1 | 111)不构成唯一的查询。目前尚不清楚是否要求P(1 | 1 1 1)(1e)或P(1 | 1 11)(1跟随11)或P(1 | 11 1)(11跟随1)。这种比较是模糊的,所以我想将每个数字映射到唯一的字符以消除歧义。

特别是我想探索如何为0到1023之间的每个数字唯一地分配唯一字符.Unicode是从我读过的方式开始的,我不打算打印它们,分配仅用于比较目的。换句话说,我想循环遍历0-1023并将每个数字分配给唯一的Unicode字符。

我认为这对许多人来说是可能和微不足道的,但不适合我。

指教?

1 个答案:

答案 0 :(得分:0)

你说“我不打算打印它们”,但也说这是出于输入目的,消除“111”和“1,1,1”和“11,1”等之间的歧义。所以他们必须是可读/可打印的字符...你有几个选择,然后:

  1. 使用像@BobTheBuilder建议的固定多字符输入。 “000100010001”和“0011001”之间的区别非常明显,尽管对于人类来说可能不是最容易阅读的。

  2. 使用分隔符来分隔输入,就像我在上面第一段中所做的那样。 “111”vs“11,1”等

  3. 可能会缩短一些内容。 1024 = 32 * 32因此,如果您有一个32个字符的“字母”,则每个可能的值只需要两个字符。 CheckBox,取消0-9A-ZIOQ(我只挑选了这四个,以减少与Z的混淆,{ {1}}和1)可以很好地工作。然后,您可以将“1MFF”或“1M,FF”写为两个单独的值02

  4. 从Unicode中找到1024个连续的可打印字符。 CJK range是我第一次想到的地方,但是您可以让用户使用随机中文字符输入此信息。也许这会奏效,但我对此表示怀疑。在我使用后者之一之前,我会选择前两个选项之一;没有1024个不同的字符可以用西方键盘轻松输入。