基準ノードの配偶者が枠外に出てしまう問題

午前5時起床,晴れ.朝食は茹でうどんに納豆と大根おろし.BUG19-01-27 06-56-47.NONで基準ノードの配偶者が枠外に出てしまう問題を追いかけてみよう.「左手枠配偶者を左手本人とするBTW拡張@20190130」は「配偶者多重」を解消する奥の手だが裏目に出ている.基準ノードの配偶者の仮ノードは直近の一枚を除いてすべて消去されなくてはならない.例外はこのノードが単親婚を持っている場合だけだ.この場合,基準ノード直近の配偶者は上記の意味での「左手枠配偶者を左手本人とするBTW拡張」としなくてはならない.

AA(2)が「配偶者左手本人」になっているのは明らかに誤りだが,どうすればこれを防止できるか?配偶者の仮ノードは複数あり,そのうちのどのカードを「配偶者左手本人」に指名するか?が問題だ.同名ノードの中に基準ノードの直近配偶者がいる場合にはこれを最優先すべきであるのは当然だ.判定を容易に行うためには,「基準ノードの直近配偶者」という属性を保持させるのが分かり易いが,これは後付けで実施することにして,とりあえず検査関数を導入しておこう.

いや,それ以前の問題だ.IfBTWPossibleの入口でGetSegmentTopで弾かれている.これを暫定的に止めて走らせてみるとAA(0)はきっちり基準ノード直近に配置されている.CR(0)+AA(0)という結婚枠は2つある.この結婚枠はすでにZTYWになっている.配偶者AAのBTWが掛かってくるタイミングが遅過ぎる.ステージ【5.2】重婚同類グラフ検定の事後処理を行なうで処理されていなくてはならないのだが… TRIBEBOX::BetweenTwoWomenで配偶者を排除しているためだ.しかし,ここで処理すると図面が完全に壊れてしまう.

このフェーズでは従来通り配偶者は不可としておくしかないように思われる.ZTYWはメインループのステージ【7.2】MPLCで実行している.BTWに掛かるのはステージ【7.9】ですでに手遅れだ.しかし,これはGetSegmentTopの判定が悪いのではないだろうか?いや,それ以前の問題だ.NAMEBOX::FindDoublyBlessedOneで取り出している結婚枠に問題がある.ZTYWではなく「ZTYW本人を参照する仮ノードが存在する元の親枠」を取り上げている.この結婚枠はgetmargboxで取り出されているが,AA(2)にリンクされている結婚リンクの参照する結婚枠はこの親枠になっている.

getmargboxを補正する動作をFindDoublyBlessedOneに組み込んでIfBTWPossible→ GetSegmentTopはパスできるようになったが,HaveSingleFatherBoxが真を返している.HaveSingleFatherBoxでは子どものいる子ども枠を持っている場合には真を返している.

コメントを残す

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

CAPTCHA