예제 #1
0
    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))
예제 #2
0
    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]))
예제 #3
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)))
예제 #4
0
    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]))
예제 #5
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])))