unicode减肥计划
程序员小王发现,unicode 16.0 有接近16万个符号,这太多了。如果想减少符号数量,就要拆分汉字。同理,韩语字符如果拆分了,就不会有一万多个,只有几十个。
对“逛”这个字进行拆分:
逛→犬字旁(在左) + 王 + 走之底(在下)
需要一个栈,犬字旁、王、走之底,依次入栈。
首先是犬字旁,它后边期待一个项目。
然后王出现,刚好是一个项目,它和犬字旁结合。
之后走之底入栈,它期待左边有一个项目,此时,栈内的信息是“狂”,是由两个项目组合而成的,狂和走之底结合,生成“逛”。
实际上,栈内元素是一棵棵树。抓住树的根节点,进行栈操作,即可完成用字根组成汉字的任务。
知道上述规律之后,小王继续努力,终于完成了新版unicode的制定,符号数降至4万多。
这就是“unicode减肥计划”。
然后出现了意外,遇到一个字:左边一个单人旁,右边一个“达”字。在栈上,无法正确表达这个字!
出现问题就要解决问题。上述问题的根源在于,单人旁是个前缀,它右边的内容放在栈的后边;走之底是个后缀,它包含的内容放在栈的前边。前缀和后缀混合出现,导致了混乱。
把走之底也变成前缀即可。
栈上的内容:单人旁 走之底 大
单人旁期待右边有一个项目,一看是走之底,走之底也期待右边有一个项目,是“大”。至此,这个汉字表示完毕。
用变成前缀的走之底重新编码“逛”字:
逛→走之底 + 犬字旁 + 王
入栈的顺序与汉字的书写笔画不同了,没办法,只能这样。