正規表現/オートマトンのヘルプを探しています。私は+
またはクリーネスターに限定されています。3 進数 (2 進数のように 3 のみ) を表す文字列を解析する場合、結果が 1 から 4 の倍数より小さいかどうかを知る必要があります。
たとえば、120 = 0*1+2*3+1*9 = 9+6 = 15 = 16-1 = 4(n)-1
.
パターンへのポインタでさえ本当に役に立ちます!
正規表現/オートマトンのヘルプを探しています。私は+
またはクリーネスターに限定されています。3 進数 (2 進数のように 3 のみ) を表す文字列を解析する場合、結果が 1 から 4 の倍数より小さいかどうかを知る必要があります。
たとえば、120 = 0*1+2*3+1*9 = 9+6 = 15 = 16-1 = 4(n)-1
.
パターンへのポインタでさえ本当に役に立ちます!
各桁の値(10進数)は、交互に4で割り切れる値より1多いか1少ないことに注意してください。したがって、1(lsb)桁は0より大きい1、3(2)桁は4より小さい1、9(3)桁は8より大きい1、27(4)桁は28より小さいなどです。 。
すべての偶数桁とすべての奇数桁を合計し、奇数桁に1を加算すると(1から数える場合)、同等になるはずです。
あなたの例では:奇数:(0 + 1)+1、偶数:(2)。したがって、それらは等しく、その数は4n-1の形式になります。
一連の値を生成して、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
...