---+ 简介
你怎么称呼包含多个小数的编号系统?
而且,你能指出任何操纵这种多十进制字符串的标准库吗?
例如
1
1.1
...
4.1
4.1.1
...
4.1.77
...
167.966.451.8787.0.1771.88 ...
我经常将其称为杜威十进制编号系统,但四处逛逛我发现杜威十进制分类是一个专有系统。
另一个候选名称可能是“树节点编号”,具有“所有事物的根”和对应于任何链接的第 i 个子节点的数字。
这种编号是否有任何广泛使用的术语?
---+ 迄今为止最好的
---++迄今为止最好的名字
迄今为止发现的最佳名称是(恕我直言):
- 十进制大纲(@zdm 报告)
- d'Aboville家谱中的数字。
---++ 迄今为止最好的代码
有相当多的库处理版本号,但大多数都有愚蠢的硬连线限制,比如major.minor.path。
当我得到一个好的参考时,我会填写这个。
我已经用几种语言多次编写过这样的库——但当我换雇主时,通常不得不把它们抛在脑后。
---+ 详情
我经常发现自己在创建包含多个小数的编号方案,例如 56.23.8.99。
我把这些叫做“杜威十进制数”已经很久了,可能是因为我第一次在图书馆遇到这些。但是另一个人有时会反对,指出杜威十进分类是一个专有系统。如果他们看到一个 class Dewey_Decimal_Number
,他们会认为它是特定于图书馆的,并且惊讶地看到我将它用于其他事情,其数字与官方的杜威十进制编号方案完全不同。
即我正在寻找一个通用名称,其中包括我们一遍又一遍遇到的这种多十进制编号方案的特定实例:
- 网络地址,例如 IPv4 192.168.0.1
- 图书馆编号,例如/杜威 796.12
- [软件版本号][ https://en.wikipedia.org/wiki/Software_versioning]如major.minor (1.1)、major.minor.patch (25.24.1) 或major.minor.maintenance.build 或...
- 书中的章节编号,例如“在第 5.1.4 节中”
- 在我的工作中,投机产生的硬件线程的数字
- 家谱,许多[家谱编号方案][ http://www.eogen.com/NumberingSystems],例如最接近的[d'Aboville Numbers][ http://www.eogen.com/dAbovilleNumbers],Henry numbers,等等。
- 系统发育树
---++ 代码设计注意事项
长度、组件数量等没有限制。
我不在乎分隔符是句号还是其他东西。例如 5.29.6 和 5/29/6 与可排序组件的向量几乎同构,
嗯...,也许我应该称它为“路径名编号”,这归功于 UNIX 分层文件系统。
就此而言,在许多用例中,我不一定关心组件是数字。
通常,我会进行排序等操作。1 < 1.1 < 1.10 < 2
.
... 字符串 cmp 或数字 <=> ?
更罕见的是,我会执行“允许这样做吗?”之类的操作。例如
allowed_as_neighbors(1, 1.1)=>true
allowed_as_neighbors(1, 2)=>true
allowed_as_neighbors(1.1, 2)=>true
allowed_as_neighbors(1, 1.2)=>false, since canonically need a 1.1 in between
allowed_as_neighbors(1, 1.1.1)=>false, since need a 1.1 in between
通常,我将更人性化的可变长度多十进制编号转换为更易于操作的固定位宽,例如 32 位或 64 位或 128 位。
这可以嵌套:1.a/b/c.2
,其中组件是(1, a/b/c, 2)
,并且a/b/c
本身就是一个多分量向量(a, b, c)
。即分隔符可能具有结合强度或优先级。
---+ 结论
Like I said, I am not looking for code on this question - I am just looking for some hopefully common name for this sort of thing.
(Actually, I am looking for code. I had written such libraries many times (and left them behind when I changed jobs). If there are any standard libraries for this, I'd like to know. If not, I'd like a good name for my libraries.)