Tak Maki 氏のヒントから全面書き直し

Tak Maki 氏のヒント(べき等という概念の導入)から全面書き直しということになった.要点を拾ってみよう.

  1. 縦数列に「セグメント」という概念を導入する.セグメントは広い意味での縦数列であり,長さは固定でゼロ行で区切られる横縞の幅となる
  2. セグメントは,①複数のセグメントを接続して尽数列になる場合,②2つのセグメントが対向して回文になる場合,③セグメントが反復して繰り返しになる場合の3パターンがある
  3. stripe カラー表示モードでは,同一セグメントを同一カラーで塗りつぶす.ないし,項目2の3パターンごとに色を変える
  4. マトリックスのカラー表示モードを1つ増やして現行のstripeカラー表示は,color カラー表示モードとする
  5. セグメント長Ωはγの約数.γが素数ならΩ=γ.ゼロ行はΩを周期として現れる.セグメント長は広い意味での縦数列の周期であると言える
  6. γが更新されたときに実行されるUpdateGammaを新設する.この関数ではzeroの発生を監視してγに対するΩ値を決定する.
  7. これまでΛ値は,αとγによって決定される横数列の周期,ないし,α^γ≡1 mod γとなるようなγの最小値としてきたが,これを改めて,そのようなγの最小値の中で最大のものと再定義することにする.これによって,Λはαの値によらず,γによって一意に決定されるような数となる.このΛ値の計算は項目6のUpdateGamma関数の中で実施する
  8. この修正はマトリックス生成関数にも及ぶ
  9. UpdateGamma関数では,ツールボックスに ①γの素因数リスト,②Λ値,③Ω値を表示する.
  10. Rα,RεをリネームしてXα,Xεとする.Xαは2つの項からなり,(a, b) ないし a-b のように表記する.a は縦数列内のセグメント番号でbはセグメント内のインデックスであるとする.

γの素因数リストはValueChagedProで出すようにした.Xα,Xεもここで出すようにしておこう.Xα,XεはDispModPowで出しているので,γの素因数リストもここで出すのが適当かもしれない.Λの計算はどこでやればよいだろう?この計算はResidueFuncPro→ PowerResidueFuncで行うのが順当だが,いまのところPowerResidueFuncのロジックはいじりたくないので,別途新設する.効率的ではないが,ValueChagedProの中でLambdaFunctionを1~γまで呼び出すことで取得するようにした.一応問題なく動いているように思われる.

これで見ると,従来のλは廃止してもよいように思われる.あとは,XαとXεだけだ.いや,まだある.Ρが出力されていない.⇒λを廃止し,Λをλにリネーム,Ρはωにリネームした.まず,Χαを出してみよう.Xεはこれまで通り,ε mod φ(γ)なので修正するところはない.Χαを出すためにはまず,ωが必要だ.これはどうやって計算すればよいだろう?ゼロ行=周期数列なしだから,λ=0を見ればよいのではないだろうか?⇒できたようだ.セグメント長が正確に計算されている.

実装に移る前にもう少し調べる必要がある.縦数列の周期は思ったより複雑だ.γ=15のとき,ω=15となり,ε=1, 3, 5, .. で一つ置きに尽数列になるが,それ以外では異種文字数は4と6が交互に発生している.このうち,4となるのはε=4, 8, 12, 16などでここでは[1,1,6,1,10,6,1]の回文が発生している.また,異種文字数=6の場合,{1,4,9,1,10,6,4}の回文になっている.明らかになんらかの規則性は認められるのだが…

γ=16ではω=2だが,異種文字数(以下Δとする)は先頭のオフセット部を除いて,2,9,3,9, の繰り返し(λ=4)になっていて,Δ=2の場合は,{0,1}の反復,Δ=9では{1,0,3,0,5,0,7,0,9,0,11,0,13,0,15,0},Δ=3では{1,0,9,0,9,0,1,0}のような回文の反復になる.γ=7の場合は,Δ=7,  4, 3, 4, 7, 2,のようなλ=6の周期になっているが,Δ=7で{1,2,3,4,5,6,7}の尽数列,Δ=4では{1,4,2,2,4,1}という0で区切られた回文の繰り返し,Δ=3では{1,1,6,1,6,6}の繰り返しになっている.Δ=2では0で区切られた{1}の反復になっている.

ωという区切りは明瞭で意味があると思われるが,0行に挟まれた部分をセグメントと呼ぶのはよいとしても,それをアドレッシングの単位にするのはやや無理があるような気がする.むしろ,従来通り,Xα=α mod γとしておいた方が扱い易いような気がする.

λとωのラベルを入れ替えた.つまり,縦周期(ゼロ行間隔)がλ,横周期が(最長横周期)ωとなる.縦軸インデックスでは縦周期は無視され.つねにγ-1の剰余となるが,横周期はφ(γ)ではなく,より短いωのインデックスになるべきである.⇒もう一度変えてみよう.横周期をX,縦周期をYとする.ギリシャ文字で言うと,chiとupsilonだ.その上で,RαをYα,RεをXεとした.これなら読み間違えることはないだろう.

▲縦数列でも固定部を含むところは横数列のように濃色表示したい.このためには,どの桁に固定部が入っているかを見なくてはならない.結構手間が掛かりそうだ.固定桁の最大数が除外される部分ということになる.⇒現行では異種文字数の着色はcycle カラー表示の場合に限定されているが,オプションと無関係に表示すべきだろう.

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA