5个版本 (3个重大更新)
0.4.0 | 2024年1月6日 |
---|---|
0.3.0 | 2022年9月17日 |
0.2.1 | 2022年8月24日 |
0.2.0 | 2022年4月18日 |
0.1.0 | 2022年3月7日 |
#264 in 数学
52KB
797 行
Algexenotation
Algexenotation是一种将多重集表示为具有代数压缩的自然数的方法。受Tic Xenotation的启发。更多信息,请参阅论文。
动机
- 建模有序笛卡尔组合学
- Tic Xenotation的代数压缩
- 将超图编码为自然数
三角形示例
此示例显示三角形是17719'
。
0
o
/ \
1+0*1 / \ 1+2*0
/ \
1 o-------o 2
1+1*2
三角形中有3个节点0, 1, 2
。在Algexenotation中,这些是超素数。
从a
到b
的边被编码为1+a*b
。
3条边的乘积就是三角形。
use algexenotation::*;
fn main() {
let n = ax!((1+0*1) * (1+1*2) * (1+2*0));
// Prints `17719'`.
println!("{}", n.original());
}
Algexenotation简介
Algexenotation可以看作是素数分解的推广。
原始数字
在Algexenotation中,“原始数字”就是我们通常认为的自然数,例如,“四”写成4'
,后面有一个"'"。
指数
当评估4'
时,我们得到0^0
。在这里,0
不是一个原始数字,而是0th素数,即2'
。
指数运算符^
以常规方式解释,即0^0
与2'^2'
相同。
乘法
在Algexenotation中,除了0'
和1'
之外的所有原始数字都会被评估为另一种形式。这个过程与素数分解相对应。
例如,6'
会被评估为0*1
。在这里,0 = 2'
和1 = 3'
。
乘法运算符*
按照常规方式解释。
加法
Algexenotation与常规记法不同的地方在于,加法意味着完全不同的东西。
例如,2' + 3'
不会评估为5'
。相反,由于0 = 2'
和1 = 3'
,2' + 3'
评估为0 + 1 = 1
。
适应这种加法思考方式需要一段时间。如果你一开始不理解,请不要慌张!Algexenotation有时会让人感到困惑。
然而,当你添加两个简单的Algexenic数时,例如6 + 7 = 13
,你可以像平常一样进行计算。
超素数
Algexenotation中加法之所以能够以这种方式工作,是因为“超素数”。
超素数在Algexenotation中写作0, 1, 2, 3, ...
。
最小的超素数是0 = 2'
,因为它是在自然数素数序列中的第0个素数。
下一个超素数是1 = 3'
,因为它是在2'
之后的第2个素数(或第0个素数)。
下一个超素数是2 = 5'
,因为它是在3'
之后的第3个素数(或第1个素数)。
下一个超素数是3 = 11'
,因为它是在5'
之后的第5个素数(或第2个素数)。
下一个超素数是4 = 31'
,因为它是在11'
之后的第11个素数(或第3个素数)。
下一个超质数是 5 = 127'
,因为它是最小的第 31'
个质数(或第 4
个质数)。
请注意,下一个超质数是指质数序列中前一个超质数的质数。
这个序列是质数序列的一个子序列,但增长速度要快得多。
七
数字 7'
是 Algexenotation 中最小的“加法”数。
1+0^0 = 7'
这意味着必须使用 +
来表示 7'
。
现在,由于 0^0 = 4'
且 4'
在 1 = 3'
和 2 = 5'
之间,所以直观地认为 3'+4'=7'
。然而,这是错误的。
十三
数字 13'
是 Algexenotation 中第二个“加法”数。
1+0*1 = 13'
如果我们按照通常的方式解释 +
,那么我们得到 3'+2'*3' = 9'
,这是错误的。
相反,+
必须被视为与通常意义上的不同类型的加法。它在超质数中正常工作,但对于其他数字则更难理解。
正确解释 1+0*1
的方法是将它视为第 6'
个质数(或第 0*1
个质数)。
十四
第一个具有两个不同质数基的合数是 14'
。
0*(1+0^0) = 14'
这是直观的,因为 0 = 2'
和 1+0^0 = 7'
。
十七
在 Algexenotation 中使用 2
的第一个“加法”数是 17'
。
2+0^0 = 17'
正确解释的方法是:1+(1+0^0)
,其中 1+0^0 = 7'
,因此得到第 7'
个素数。
依赖关系
~4MB
~69K SLoC