【发布时间】:2011-03-07 20:15:32
【问题描述】:
作为礼物,我正在尝试创建一个代码,将某个单词向前读取,将另一个单词向后读取。一个例子(0,1,2 是可用的符号):
D = 02,E = 01,H = 201,L = 1,O = 211,R = 10,W = 11
那么“HELLO”/“WORLD”对就是
2010111211 你好
1121110102 世界
我想生成一个适合其他单词对的代码。显然,我不能蛮力解决方案(如果该对存在一个)。如果单词对很长,我所知道的所有优化/搜索方法(模拟退火、爬山、遗传算法)只会给我不完美的解决方案。
上面的例子是在我为解决这个问题而编写的遗传算法中找到的,但是经过许多代不同的参数和词序等之后,它从未完全达到 100%。
我该如何以不同的方式处理这个问题?每个码字的长度不是很重要每个字符应小于10个符号,使用的不同符号数应保持在5个以下,代码不需要无前缀。
编辑: 在 cmets 之后,这就是我真正想要做的事情:基本上,我想要一条项链,上面有不同形状的珠子(每个符号),可以编码一个单词,如果你扭曲它然后它编码一个不同的词。所以码字不能太长,不同的符号不能太多。
编辑 2: 向前,它应该是 FESTUNG DRESDEN(或 FESTUNGDRESDEN),向后是一些通用“美好愿望”的组合,即 FRIENDS、FORTUNE、LUCK、HAPPINESS(或这些的德语等价物)词)或只是名字 MARIA(是的,你猜对了,它是为一个女孩......)。没关系,这些词是成对的(即 FESTUNG 倒读为 FORTUNE,DRESDEN 倒读为 FRIENDS)还是长版本(即 FESTUNGDRESDEN 倒读为 FRIENDS&FORTUNE)。
提前致谢!
【问题讨论】:
-
您的意思是您需要一个适用于所有可能的单词对的代码吗?这是不可能的!
-
@Tom Gullen:生日礼物。基本上,我想要一条项链,上面有不同形状的珠子,可以编码一个词,如果你扭动它,它就会编码一个不同的词。 @Moron:不,只有一对特定的词(但两个词都会很长 [14 到 20 个字符])。
-
啊,非常聪明和好主意!
-
@Duddle:好主意!这意味着您至少需要两个符号?我建议你编辑这个问题来这么说。另外,您还在考虑哪些其他类型的“扭曲”?也许您应该在问题中提及项链!会引起更多的兴趣...
-
如果您只考虑一个应用程序,那么也许您可以提供您打算编码的两个单词?当然,如果这在我的要求范围内。