三元数,正则表达式

时间:2012-04-06 00:59:09

标签: regex automata ternary-representation

我正在寻找一些正则表达式/自动机帮助。我只限于+或Kleene Star。解析表示三元数的字符串(如二进制,只有3),我需要能够知道结果是否小于4的倍数。

所以,例如120 = 0*1+2*3+1*9 = 9+6 = 15 = 16-1 = 4(n)-1

即使指向模式的指针也非常有用!

2 个答案:

答案 0 :(得分:0)

您可以生成一系列值,以便在bash中使用bc进行一些观察:

for n in {1..40}; do v=$((4*n-1)); echo -en $v"\t"; echo "ibase=10;obase=3;$v" | bc ; done 

3   10
7   21
11  102
15  120
19  201
23  212
27  1000
31  1011
...

答案 1 :(得分:0)

请注意,每个数字的值(十进制)比可被4整除的值多1或1。所以1(lsb)数字是一个多于0,3(第二)数字是一个少于4,9(第三)数字是1比8多,27(第四)数字是一个少于28,等等。
如果你总结所有偶数位数和所有奇数位数,然后将1加到奇数位数(如果从1开始计算),你应该得到相等。

在你的例子中:odd:(0 + 1)+1,偶数:(2)。所以他们是平等的,所以数字是4n-1。