Skip to content

GarthTB/CodeLord

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

45 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

一个暴力计算文章最短码长的工具

功能

  • 依据词库,用带有限制的广度优先遍历,找出所有最短的完整编码并简单分析。

输入

控制台参数

  1. 词库路径(rime格式yaml文件,每行格式为词\t编码[\t优先级]#号注释)
  2. 文本路径
  3. 编码连接方法代号(1:无间隔,2:键道,0及默认:空格及标点隔开)
  4. 中间路径的最高数量(不是最终路径的数量,最终一定是最短路径。无效输入则默认为100。)

交互式输入的各项要求与控制台相同。

配置文件

程序同目录中的config.txt为配置文件,用户可自定义。每行是一组无间隔、无序的码元。在分析时,程序会将每组码元依次识别为:

  • 第1行-第8行:左小指、无名指、中指、食指,右食指、中指、无名指、小指
  • 第9行-第12行:数字键、上排键、中排键、下排键

注意

  • 由于会完全遍历所有情况,需要的时间是指数级的。请勿将中间路径的最高数量设得超级高。
  • 通过直接在编码后添加数字来选重,按照优先级和先来后到,与rime的规则一致。
  • 分析报告中的偏倚程度为(左右手键数的差/左右手键数的和)的绝对值。

算法:广度优先遍历

设文章有n字,限制数量为x,则:

  1. 创建n个列表,分别容纳从起点到每个字的所有编码。
  2. 遍历每个字。从该字的列表中,取出最短的x条编码。从词库找出以该字开始的、与文章匹配的词,并在词的末字的列表中,加入与最短路径连接后的所有编码。
  3. 遍历完成后,第n个列表中的最短编码就是整篇文章的最短编码。

更新日志

[0.0.6] - 20241121

  • 改进:优化提示

[0.0.5] - 20241121

  • 新增:多项分析项目,可使用配置文件自定义
  • 改进:并行化查找词典,提升性能
  • 改进:不预先切片文本,文本长度不再影响速度
  • 改进:空格分隔改为空格和标点分隔

[0.0.4] - 20241120

  • 修复键道规则

[0.0.3] - 20241120

  • 改善长文本编码性能
  • 完善键道规则

[0.0.2] - 20241119

  • 改为流式计算,以避免卡顿并减少内存消耗

[0.0.1] - 20241119

  • 发布