def how_to_elimionation_only_memo(cls, how_anlz: HowToAnalyze) -> Msg: """消去法(メモがその枡にしかない)メッセージ生成 Args: how_anlz (HowToAnalyze): 解析方法 Returns: Msg: メッセージ """ return Msg( MsgType.SUCCESS, cls._get_msg(MsgCode.HOW_TO_ELIMIONATION_ONLY_MEMO).format( changedSqu=SudokuUtil.cnv_squ_to_text(how_anlz.changed_squ), region=SudokuUtil.cnv_region_to_text(how_anlz.region), commitVal=how_anlz.commit_val))
def how_to_elimionation(cls, how_anlz: HowToAnalyze) -> Msg: """消去法(メモ削除)メッセージ生成 Args: how_anlz (HowToAnalyze): 解析方法 Returns: Msg: メッセージ """ return Msg( MsgType.INFO, cls._get_msg(MsgCode.HOW_TO_ELIMIONATION).format( changedSqu=SudokuUtil.cnv_squ_to_text(how_anlz.changed_squ), region=SudokuUtil.cnv_region_to_text(how_anlz.region), triggerSqu=SudokuUtil.cnv_squ_to_text( how_anlz.trigger_squ_list[0]), removeMemo=how_anlz.remove_memo_list[0]))
def how_to_locked_candidates(cls, how_anlz: HowToAnalyze) -> Msg: """ロックされた候補法メッセージ生成 Args: how_anlz (HowToAnalyze): 解析方法 Returns: Msg: メッセージ """ return Msg( MsgType.INFO, cls._get_msg(MsgCode.HOW_TO_LOCKED_CANDIDATES).format( changedSqu=SudokuUtil.cnv_squ_to_text(how_anlz.changed_squ), triggerSqu=SudokuUtil.cnv_squ_to_text( how_anlz.trigger_squ_list[0]), removeMemo=how_anlz.remove_memo_list[0], regionPos=how_anlz.trigger_squ_list[0].row if how_anlz.region == Region.ROW else how_anlz.trigger_squ_list[0].clm, region=SudokuUtil.cnv_region_to_text(how_anlz.region)))
def how_to_hidden_pair(cls, how_anlz: HowToAnalyze, pair_list: List[int]) -> Msg: """隠れペア法メッセージ生成 Args: how_anlz (HowToAnalyze): 解析方法 pair_list (List[int]): ペアリスト Returns: Msg: メッセージ """ return Msg( MsgType.INFO, cls._get_msg(MsgCode.HOW_TO_HIDDEN_PAIR).format( changedSqu=SudokuUtil.cnv_squ_to_text(how_anlz.changed_squ), region=SudokuUtil.cnv_region_to_text(how_anlz.region), triggerSquList=SudokuUtil.cnv_squ_list_to_text( how_anlz.trigger_squ_list), pairList=SudokuUtil.cnv_memo_list_to_text(pair_list), removeMemo=how_anlz.remove_memo_list[0]))
def how_to_x_wing(cls, how_anlz: HowToAnalyze, region_pair: Tuple[int, int]) -> Msg: """X-Wing法メッセージ生成 Args: how_anlz (HowToAnalyze): 解析方法 region_pair (Tuple[int, int]): 方向位置 Returns: Msg: メッセージ """ # regionPos1、regionPos2を算出 pos_set: Set[int] = set() for squ in how_anlz.trigger_squ_list: if how_anlz.region == Region.ROW: pos_set.add(squ.row) else: pos_set.add(squ.clm) pos_list: List[int] = list(pos_set) pos_list.sort() return Msg( MsgType.INFO, cls._get_msg(MsgCode.HOW_TO_X_WING).format( changedSqu=SudokuUtil.cnv_squ_to_text(how_anlz.changed_squ), removeMemo=how_anlz.remove_memo_list[0], regionPos1=pos_list[0], regionPos2=pos_list[1], region=SudokuUtil.cnv_region_to_text(how_anlz.region), triggerSqu1=SudokuUtil.cnv_squ_to_text( how_anlz.trigger_squ_list[0]), triggerSqu2=SudokuUtil.cnv_squ_to_text( how_anlz.trigger_squ_list[1]), triggerSqu3=SudokuUtil.cnv_squ_to_text( how_anlz.trigger_squ_list[2]), triggerSqu4=SudokuUtil.cnv_squ_to_text( how_anlz.trigger_squ_list[3])))