GridViewで乗積表を表示できるようになると使い勝手はかなり向上する.大きなテーブルが広がっているコンソールには見たくない.この際,久留島喜内の道具箱を丸ごとC#にインポートすることも考えてみたが大仕事になってしまうので,やや後退して,とりあえずC#に変換済みのForm2のコードを参考に,現状で乗積表を主画面に表示することにする.べき剰余マトリックスではテーブルをいろいろ加工して表示しているが,いまのところプレーンなテーブルが表示できれば十分だ.
喜内の道具箱の使い方まで忘れてしまった.このツールではマトリックスを2枚開けるようになっている.片方は「べき剰余マトリックス」,もうひとつは「べき乗進数表示マトリックス」と表示されている.おそらくこれは仕掛りになっている「加納の定理」と関係するものだろう.いずれ,ここにももう一度立ち返らなくてはならないが,とりあえずパスして先に進むことにしよう.
MatrixⅠのボタンを押したときの動作が分かればよい.BulldMatrixClickではBuildMatrix→BuildPowerGridが実行される.BuildPowerGridに引数で渡されるのはMatrixクラスのインスタンスでこの中にはいろいろな情報が入っているが,配列そのものはInt64の2次元配列だ.配列の行/列数とグリッドの行/列数は指定できる必要がある.いや,これらは現物の配列を直接参照して取り出すこともできる.配列とマトリックスはつねに同サイズでよい.従って,BuildPowerGrid だけ見ておけば十分だ.⇒一応出るようになった.⇒少し手直しして下図になった.
左端の行ヘッダが余分だ.非表示にはなっているのだが,これを消す方法はないものか?⇒できた!デザイナ画面でRowHeadersVisibleをFalseにして消せた.完璧だ.もはや言うことなし.
とりあえず,これ以上の機能は必要ない.A5くらいになると描画までにかなりの時間が掛かるが小さい乗積表なら即座に出る.
それにしても時間が掛かる!S5の乗積表が描画されるまでに1分近く掛かっている.なんとかならないものか?⇒BindingSourceというのを使うと高速化できるという記事があった.
https://qiita.com/belre/items/4650c68ef932acbc597e
使わないときには2873ms掛かったものが,使うことで9.4msになったと言う!AutoSizeModeもNotSetなどにすべきとある.確かに列幅を固定すると一瞬で描画できる.ただし,列幅を指定する方法が見つからない.以下で設定できた.列ごとに幅を設定する必要がある.
for (j = 0; j < n; j++) matrix.Columns[j].Width = 24;
この環境では精々S5くらいまでしか扱えないが,S5で120だからこれで十分間に合う.乗積表は一応これで完成としておこう.かなり気持ちがいい.もうひとつの改善点として,部分群をダンプして表示したい.つまり,部分群配列をソートしたい.現状,部分群のダンプでは素群と合成群の別も表示されていないが,これらも出してみたい.正規部分群/巡回群の別も出すべきだろう.群クラスにはこれら属性を格納しておく場所がない.群属性という項目を設けてビットを立てることにしよう.
群クラスの変数のうち,べき表は参照されていないので廃止できる.最大部分群も部分群検定の中でしか使用されないから廃止でよい.これは極大部分群検定の結果を反映することを考慮したための措置だが,とりあえず切り離されているので廃止とする.最大極大部分群というのも使われていない.subGN,可換群,部分集合などもローカル化できるような気がするが,保留としておこう.属性には以下が含まれる.
- 可換/非可換
- 巡回群/非巡回群
- 正規部分群
- 素群/合成群
- 単純群
群.親群は群のコンストラクタで設定するように仕様変更した.親群が判明すれば群の検査の中で正規部分群の判定ができる.
▲正規部分群検定で ◎群Q8は4個の非自明な正規部分群を持っている 位数2X2 位数4X6 のように表示されるが,あまりよくない.正規部分群に限定したカウントを表示した方がよい.⇒どうも怪しくなってきた.Q8の部分群は4個で,#2×1, #4×3と表示されているが,正規部分群検定では8個の正規部分群を持つとされ,#2×2, #4×6のように表示される.⇒正規部分群検定では同一判定をやっていないのではないか?同一群判定は部分群の追加と部分群検定ではやっている.
これはどうも部分群の追加操作に誤りがあるように思われる.正規部分群検定では部分群の追加を実行した後に,正規部分群数を更新し,部分集合やsubGNを書換えているが,この操作は怪しい.極小部分群ではそのようなことはやっていない.極大部分群でもそのようなことはやっていない.部分群検定でもやっていない.明らかにこれはおかしい.これは明日見ることにしよう.来訪者カウントが16万を超えた.何はともあれ,おめでたいのではないか?