このブログ内を検索可能

2022年1月21日金曜日

DD解析で回転同値を導入する

 やはり180°回転による同一パターンにより、およそ1/2くらいにやるべき行程が減るのは大きい、ということでそのプログラムを作成しようと思った。

DDのビンゴカードは180度回転させると必ず自身に一致するようなカードばかりである。

つまり、例で言うと{1,2,3,9,13}マス目に入った時は3グループ目、すなわち{4,5}マス目にFREEを1個配置するものが最適でこのときPO率32.1769%であるのだが、これを180度回転させたときの組{13,17,23,24,25}においても即座に適用したい。PO率のデータはそのまま引用すればよいが、このグループ{3}をどのように組{13,17,23,24,25}に適応するか。

とりあえず思いついた手法としては、グループの180度回転対応表を作るか、普通にいろいろな関数で変換していくかだろう。

グループ{3}を該当マスに変換するマスの集合eqvから[[1,1]]を抽出すればそのうちの一つ目である④マス目、つまり{4}が出現する。その{4}は180度回転により{22}に移る。これは26-(マス)という一次関数で表せる。そして得たマス{22}からグループに変換する関数(作成済)により{18}というグループを返す。これにより最適解はグループ{18}となりそれを格納し大変な総当たりの処理を省く。

{13,17,23,24,25}は180度回転は先ほど言ったように26-xで行けるので、ベクトルとみて{26,26,26,26,26}-{13,17,23,24,25}={13,9,3,2,1}となり、これを昇順にソートする関数は組みこまれているので{1,2,3,9,13}となる。

今日はもう遅いので明日に回そうと思う。