An open API service indexing awesome lists of open source software.

https://github.com/garthtb/codelord

一个暴力计算文章最短码长的工具。
https://github.com/garthtb/codelord

calculator console-application csharp encoder input-method

Last synced: 2 months ago
JSON representation

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

Awesome Lists containing this project

README

        

# [CodeLord](https://github.com/GarthTB/CodeLord)

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

## 功能

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

## 输入

### 控制台参数

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

- 发布