Exemplo n.º 1
0
    def calculate_rules(self):
        super().calculate_rules()
        self.question_data.rules_list = [
            RuleItemMutex(self.question_data, '0,0;0,1;0,2;0,3;0,4;0,5;0,6;0,7;0,8'),
            RuleItemMutex(self.question_data, '1,0;1,1;1,2;1,3;1,4;1,5;1,6;1,7;1,8'),
            RuleItemMutex(self.question_data, '2,0;2,1;2,2;2,3;2,4;2,5;2,6;2,7;2,8'),
            RuleItemMutex(self.question_data, '3,0;3,1;3,2;3,3;3,4;3,5;3,6;3,7;3,8'),
            RuleItemMutex(self.question_data, '4,0;4,1;4,2;4,3;4,4;4,5;4,6;4,7;4,8'),
            RuleItemMutex(self.question_data, '5,0;5,1;5,2;5,3;5,4;5,5;5,6;5,7;5,8'),
            RuleItemMutex(self.question_data, '6,0;6,1;6,2;6,3;6,4;6,5;6,6;6,7;6,8'),
            RuleItemMutex(self.question_data, '7,0;7,1;7,2;7,3;7,4;7,5;7,6;7,7;7,8'),
            RuleItemMutex(self.question_data, '8,0;8,1;8,2;8,3;8,4;8,5;8,6;8,7;8,8'),

            RuleItemMutex(self.question_data, '0,0;1,0;2,0;3,0;4,0;5,0;6,0;7,0;8,0'),
            RuleItemMutex(self.question_data, '0,1;1,1;2,1;3,1;4,1;5,1;6,1;7,1;8,1'),
            RuleItemMutex(self.question_data, '0,2;1,2;2,2;3,2;4,2;5,2;6,2;7,2;8,2'),
            RuleItemMutex(self.question_data, '0,3;1,3;2,3;3,3;4,3;5,3;6,3;7,3;8,3'),
            RuleItemMutex(self.question_data, '0,4;1,4;2,4;3,4;4,4;5,4;6,4;7,4;8,4'),
            RuleItemMutex(self.question_data, '0,5;1,5;2,5;3,5;4,5;5,5;6,5;7,5;8,5'),
            RuleItemMutex(self.question_data, '0,6;1,6;2,6;3,6;4,6;5,6;6,6;7,6;8,6'),
            RuleItemMutex(self.question_data, '0,7;1,7;2,7;3,7;4,7;5,7;6,7;7,7;8,7'),
            RuleItemMutex(self.question_data, '0,8;1,8;2,8;3,8;4,8;5,8;6,8;7,8;8,8'),

            RuleItemMutex(self.question_data, '0,0;0,1;0,2;1,0;1,1;1,2;2,0;2,1;2,2'),
            RuleItemMutex(self.question_data, '3,0;3,1;3,2;4,0;4,1;4,2;5,0;5,1;5,2'),
            RuleItemMutex(self.question_data, '6,0;6,1;6,2;7,0;7,1;7,2;8,0;8,1;8,2'),
            RuleItemMutex(self.question_data, '0,3;0,4;0,5;1,3;1,4;1,5;2,3;2,4;2,5'),
            RuleItemMutex(self.question_data, '3,3;3,4;3,5;4,3;4,4;4,5;5,3;5,4;5,5'),
            RuleItemMutex(self.question_data, '6,3;6,4;6,5;7,3;7,4;7,5;8,3;8,4;8,5'),
            RuleItemMutex(self.question_data, '0,6;0,7;0,8;1,6;1,7;1,8;2,6;2,7;2,8'),
            RuleItemMutex(self.question_data, '3,6;3,7;3,8;4,6;4,7;4,8;5,6;5,7;5,8'),
            RuleItemMutex(self.question_data, '6,6;6,7;6,8;7,6;7,7;7,8;8,6;8,7;8,8'),
        ]
        # 读取Excel中所有DPL函数,计算DPL的每一组数据分别经过了哪些单元格,然后添加互斥规则
        for draw_function_data in self.question_data.draw_function_list:
            if draw_function_data.function_name == 'DPL':
                for data_group in draw_function_data.data.split(';'):
                    data_group_split = data_group.split(':')
                    if len(data_group_split) == 2:
                        # 算法只处理DPL是两点之间的线
                        point_0 = data_group_split[0].split(',')
                        point_1 = data_group_split[1].split(',')
                        x_start = int(point_0[0])
                        y_start = int(point_0[1])
                        x_min = min(int(point_0[0]), int(point_1[0]))
                        x_max = max(int(point_0[0]), int(point_1[0]))
                        y_min = min(int(point_0[1]), int(point_1[1]))
                        y_max = max(int(point_0[1]), int(point_1[1]))
                        x_sub = 1 if int(point_1[0]) > int(point_0[0]) else -1
                        if x_sub == -1:
                            x_start = x_start - 1
                        y_sub = 1 if int(point_1[1]) > int(point_0[1]) else -1
                        if y_sub == -1:
                            y_start = y_start - 1
                        x_range = x_max - x_min
                        y_range = y_max - y_min
                        rule_str = ''
                        if x_range == y_range:
                            # 算法现在只处理经过单元格对角线的DPL
                            for i in range(x_range):
                                rule_str = rule_str + str(i * x_sub + x_start) + ',' + str(i * y_sub + y_start) + ';'
                            self.question_data.rules_list.append(RuleItemMutex(self.question_data, rule_str))
Exemplo n.º 2
0
 def calculate_rules(self):
     super().calculate_rules()
     self.question_data.rules_list = [
         RuleItemMutex(self.question_data,
                       '0,0;0,1;0,2;0,3;0,4;0,5;0,6;0,7;0,8'),
         RuleItemMutex(self.question_data,
                       '1,0;1,1;1,2;1,3;1,4;1,5;1,6;1,7;1,8'),
         RuleItemMutex(self.question_data,
                       '2,0;2,1;2,2;2,3;2,4;2,5;2,6;2,7;2,8'),
         RuleItemMutex(self.question_data,
                       '3,0;3,1;3,2;3,3;3,4;3,5;3,6;3,7;3,8'),
         RuleItemMutex(self.question_data,
                       '4,0;4,1;4,2;4,3;4,4;4,5;4,6;4,7;4,8'),
         RuleItemMutex(self.question_data,
                       '5,0;5,1;5,2;5,3;5,4;5,5;5,6;5,7;5,8'),
         RuleItemMutex(self.question_data,
                       '6,0;6,1;6,2;6,3;6,4;6,5;6,6;6,7;6,8'),
         RuleItemMutex(self.question_data,
                       '7,0;7,1;7,2;7,3;7,4;7,5;7,6;7,7;7,8'),
         RuleItemMutex(self.question_data,
                       '8,0;8,1;8,2;8,3;8,4;8,5;8,6;8,7;8,8'),
         RuleItemMutex(self.question_data,
                       '0,0;1,0;2,0;3,0;4,0;5,0;6,0;7,0;8,0'),
         RuleItemMutex(self.question_data,
                       '0,1;1,1;2,1;3,1;4,1;5,1;6,1;7,1;8,1'),
         RuleItemMutex(self.question_data,
                       '0,2;1,2;2,2;3,2;4,2;5,2;6,2;7,2;8,2'),
         RuleItemMutex(self.question_data,
                       '0,3;1,3;2,3;3,3;4,3;5,3;6,3;7,3;8,3'),
         RuleItemMutex(self.question_data,
                       '0,4;1,4;2,4;3,4;4,4;5,4;6,4;7,4;8,4'),
         RuleItemMutex(self.question_data,
                       '0,5;1,5;2,5;3,5;4,5;5,5;6,5;7,5;8,5'),
         RuleItemMutex(self.question_data,
                       '0,6;1,6;2,6;3,6;4,6;5,6;6,6;7,6;8,6'),
         RuleItemMutex(self.question_data,
                       '0,7;1,7;2,7;3,7;4,7;5,7;6,7;7,7;8,7'),
         RuleItemMutex(self.question_data,
                       '0,8;1,8;2,8;3,8;4,8;5,8;6,8;7,8;8,8'),
         RuleItemMutex(self.question_data,
                       '0,0;0,1;0,2;1,0;1,1;1,2;2,0;2,1;2,2'),
         RuleItemMutex(self.question_data,
                       '3,0;3,1;3,2;4,0;4,1;4,2;5,0;5,1;5,2'),
         RuleItemMutex(self.question_data,
                       '6,0;6,1;6,2;7,0;7,1;7,2;8,0;8,1;8,2'),
         RuleItemMutex(self.question_data,
                       '0,3;0,4;0,5;1,3;1,4;1,5;2,3;2,4;2,5'),
         RuleItemMutex(self.question_data,
                       '3,3;3,4;3,5;4,3;4,4;4,5;5,3;5,4;5,5'),
         RuleItemMutex(self.question_data,
                       '6,3;6,4;6,5;7,3;7,4;7,5;8,3;8,4;8,5'),
         RuleItemMutex(self.question_data,
                       '0,6;0,7;0,8;1,6;1,7;1,8;2,6;2,7;2,8'),
         RuleItemMutex(self.question_data,
                       '3,6;3,7;3,8;4,6;4,7;4,8;5,6;5,7;5,8'),
         RuleItemMutex(self.question_data,
                       '6,6;6,7;6,8;7,6;7,7;7,8;8,6;8,7;8,8'),
     ]
     all_relations = []
     # 先计算出所有相邻单元格关系,然后稍后再下方进行关系筛选,其余的最后做不等关系规则
     for y in range(self.question_data.dimensionY):
         for x in range(self.question_data.dimensionX):
             if x < self.question_data.dimensionX - 1:
                 all_relations.append(
                     str(x) + ',' + str(y) + ';' + str(x + 1) + ',' +
                     str(y))
             if y < self.question_data.dimensionY - 1:
                 all_relations.append(
                     str(x) + ',' + str(y) + ';' + str(x) + ',' +
                     str(y + 1))
     # 读取Excel中所有DLE函数,生成连续数独相关的等于关系规则,并对上方的相邻单元格关系规则进行过滤剔除
     for draw_function_data in self.question_data.draw_function_list:
         if draw_function_data.function_name == 'DLE':
             relation_direction = draw_function_data.parameters[0]
             for param_group in draw_function_data.data.split(';'):
                 param_group_split = param_group.split(':')
                 if len(param_group_split) > 1:
                     for location_tag in param_group_split[0].split(','):
                         # 将单元格tag转换成坐标,如A3 -> 2,0
                         location = [
                             int(location_tag[1]) - 1,
                             ord(location_tag[0]) - 65
                         ]
                         relation_str = ''
                         if relation_direction == 'R':
                             cell1 = str(location[0]) + ',' + str(
                                 location[1])
                             cell2 = str(location[0] + 1) + ',' + str(
                                 location[1])
                             relation_str = cell1 + ';' + cell2
                             rule_str = 'abs(cell_value(' + cell1 + ') - cell_value(' + cell2 + ')) == 1'
                             self.question_data.rules_list.append(
                                 RuleFormulaCheck(self.question_data,
                                                  rule_str))
                         elif relation_direction == 'B':
                             cell1 = str(location[0]) + ',' + str(
                                 location[1])
                             cell2 = str(
                                 location[0]) + ',' + str(location[1] + 1)
                             relation_str = cell1 + ';' + cell2
                             rule_str = 'abs(cell_value(' + cell1 + ') - cell_value(' + cell2 + ')) == 1'
                             self.question_data.rules_list.append(
                                 RuleFormulaCheck(self.question_data,
                                                  rule_str))
                         if not relation_str == '':
                             # 剔除已有关系的元素
                             if relation_str in all_relations:
                                 all_relations.remove(relation_str)
     # 为剩余没有粗线关系的单元格组合增加连续相差为1规则
     for relation_str in all_relations:
         cells = relation_str.split(';')
         self.question_data.rules_list.append(
             RuleFormulaCheck(
                 self.question_data, 'abs(cell_value(' + cells[0] +
                 ') - cell_value(' + cells[1] + ')) != 1'))
Exemplo n.º 3
0
 def calculate_rules(self):
     super().calculate_rules()
     self.question_data.rules_list = [
         RuleItemMutex(self.question_data,
                       '0,0;0,1;0,2;0,3;0,4;0,5;0,6;0,7;0,8'),
         RuleItemMutex(self.question_data,
                       '1,0;1,1;1,2;1,3;1,4;1,5;1,6;1,7;1,8'),
         RuleItemMutex(self.question_data,
                       '2,0;2,1;2,2;2,3;2,4;2,5;2,6;2,7;2,8'),
         RuleItemMutex(self.question_data,
                       '3,0;3,1;3,2;3,3;3,4;3,5;3,6;3,7;3,8'),
         RuleItemMutex(self.question_data,
                       '4,0;4,1;4,2;4,3;4,4;4,5;4,6;4,7;4,8'),
         RuleItemMutex(self.question_data,
                       '5,0;5,1;5,2;5,3;5,4;5,5;5,6;5,7;5,8'),
         RuleItemMutex(self.question_data,
                       '6,0;6,1;6,2;6,3;6,4;6,5;6,6;6,7;6,8'),
         RuleItemMutex(self.question_data,
                       '7,0;7,1;7,2;7,3;7,4;7,5;7,6;7,7;7,8'),
         RuleItemMutex(self.question_data,
                       '8,0;8,1;8,2;8,3;8,4;8,5;8,6;8,7;8,8'),
         RuleItemMutex(self.question_data,
                       '0,0;1,0;2,0;3,0;4,0;5,0;6,0;7,0;8,0'),
         RuleItemMutex(self.question_data,
                       '0,1;1,1;2,1;3,1;4,1;5,1;6,1;7,1;8,1'),
         RuleItemMutex(self.question_data,
                       '0,2;1,2;2,2;3,2;4,2;5,2;6,2;7,2;8,2'),
         RuleItemMutex(self.question_data,
                       '0,3;1,3;2,3;3,3;4,3;5,3;6,3;7,3;8,3'),
         RuleItemMutex(self.question_data,
                       '0,4;1,4;2,4;3,4;4,4;5,4;6,4;7,4;8,4'),
         RuleItemMutex(self.question_data,
                       '0,5;1,5;2,5;3,5;4,5;5,5;6,5;7,5;8,5'),
         RuleItemMutex(self.question_data,
                       '0,6;1,6;2,6;3,6;4,6;5,6;6,6;7,6;8,6'),
         RuleItemMutex(self.question_data,
                       '0,7;1,7;2,7;3,7;4,7;5,7;6,7;7,7;8,7'),
         RuleItemMutex(self.question_data,
                       '0,8;1,8;2,8;3,8;4,8;5,8;6,8;7,8;8,8'),
         RuleItemMutex(self.question_data,
                       '0,0;0,1;0,2;1,0;1,1;1,2;2,0;2,1;2,2'),
         RuleItemMutex(self.question_data,
                       '3,0;3,1;3,2;4,0;4,1;4,2;5,0;5,1;5,2'),
         RuleItemMutex(self.question_data,
                       '6,0;6,1;6,2;7,0;7,1;7,2;8,0;8,1;8,2'),
         RuleItemMutex(self.question_data,
                       '0,3;0,4;0,5;1,3;1,4;1,5;2,3;2,4;2,5'),
         RuleItemMutex(self.question_data,
                       '3,3;3,4;3,5;4,3;4,4;4,5;5,3;5,4;5,5'),
         RuleItemMutex(self.question_data,
                       '6,3;6,4;6,5;7,3;7,4;7,5;8,3;8,4;8,5'),
         RuleItemMutex(self.question_data,
                       '0,6;0,7;0,8;1,6;1,7;1,8;2,6;2,7;2,8'),
         RuleItemMutex(self.question_data,
                       '3,6;3,7;3,8;4,6;4,7;4,8;5,6;5,7;5,8'),
         RuleItemMutex(self.question_data,
                       '6,6;6,7;6,8;7,6;7,7;7,8;8,6;8,7;8,8'),
     ]
     # 读取Excel中所有DBG函数,生成奇数灰格子的互斥规则
     for draw_function_data in self.question_data.draw_function_list:
         if draw_function_data.function_name == 'DOE':
             index = 0
             for location_tag in draw_function_data.data.split(','):
                 if location_tag is not '0':
                     cell_list = []
                     if draw_function_data.parameters[0] is 'T':
                         for i in range(self.question_data.dimensionY):
                             cell_list.append('cell_value(' + str(index) +
                                              ',' + str(i) + ')')
                     if draw_function_data.parameters[0] is 'B':
                         for i in range(self.question_data.dimensionY - 1,
                                        -1, -1):
                             cell_list.append('cell_value(' + str(index) +
                                              ',' + str(i) + ')')
                     if draw_function_data.parameters[0] is 'L':
                         for i in range(self.question_data.dimensionX):
                             cell_list.append('cell_value(' + str(i) + ',' +
                                              str(index) + ')')
                     if draw_function_data.parameters[0] is 'R':
                         for i in range(self.question_data.dimensionX - 1,
                                        -1, -1):
                             cell_list.append('cell_value(' + str(i) + ',' +
                                              str(index) + ')')
                     rule_str = 'calculate_max_count([' + ','.join(
                         cell_list) + ']) == ' + location_tag
                     self.question_data.rules_list.append(
                         RuleFormulaCheck(self.question_data, rule_str))
                 index = index + 1
     print('11')
Exemplo n.º 4
0
 def calculate_rules(self):
     super().calculate_rules()
     self.question_data.rules_list = [
         RuleItemMutex(self.question_data,
                       '0,0;0,1;0,2;0,3;0,4;0,5;0,6;0,7;0,8'),
         RuleItemMutex(self.question_data,
                       '1,0;1,1;1,2;1,3;1,4;1,5;1,6;1,7;1,8'),
         RuleItemMutex(self.question_data,
                       '2,0;2,1;2,2;2,3;2,4;2,5;2,6;2,7;2,8'),
         RuleItemMutex(self.question_data,
                       '3,0;3,1;3,2;3,3;3,4;3,5;3,6;3,7;3,8'),
         RuleItemMutex(self.question_data,
                       '4,0;4,1;4,2;4,3;4,4;4,5;4,6;4,7;4,8'),
         RuleItemMutex(self.question_data,
                       '5,0;5,1;5,2;5,3;5,4;5,5;5,6;5,7;5,8'),
         RuleItemMutex(self.question_data,
                       '6,0;6,1;6,2;6,3;6,4;6,5;6,6;6,7;6,8'),
         RuleItemMutex(self.question_data,
                       '7,0;7,1;7,2;7,3;7,4;7,5;7,6;7,7;7,8'),
         RuleItemMutex(self.question_data,
                       '8,0;8,1;8,2;8,3;8,4;8,5;8,6;8,7;8,8'),
         RuleItemMutex(self.question_data,
                       '0,0;1,0;2,0;3,0;4,0;5,0;6,0;7,0;8,0'),
         RuleItemMutex(self.question_data,
                       '0,1;1,1;2,1;3,1;4,1;5,1;6,1;7,1;8,1'),
         RuleItemMutex(self.question_data,
                       '0,2;1,2;2,2;3,2;4,2;5,2;6,2;7,2;8,2'),
         RuleItemMutex(self.question_data,
                       '0,3;1,3;2,3;3,3;4,3;5,3;6,3;7,3;8,3'),
         RuleItemMutex(self.question_data,
                       '0,4;1,4;2,4;3,4;4,4;5,4;6,4;7,4;8,4'),
         RuleItemMutex(self.question_data,
                       '0,5;1,5;2,5;3,5;4,5;5,5;6,5;7,5;8,5'),
         RuleItemMutex(self.question_data,
                       '0,6;1,6;2,6;3,6;4,6;5,6;6,6;7,6;8,6'),
         RuleItemMutex(self.question_data,
                       '0,7;1,7;2,7;3,7;4,7;5,7;6,7;7,7;8,7'),
         RuleItemMutex(self.question_data,
                       '0,8;1,8;2,8;3,8;4,8;5,8;6,8;7,8;8,8'),
         RuleItemMutex(self.question_data,
                       '0,0;0,1;0,2;1,0;1,1;1,2;2,0;2,1;2,2'),
         RuleItemMutex(self.question_data,
                       '3,0;3,1;3,2;4,0;4,1;4,2;5,0;5,1;5,2'),
         RuleItemMutex(self.question_data,
                       '6,0;6,1;6,2;7,0;7,1;7,2;8,0;8,1;8,2'),
         RuleItemMutex(self.question_data,
                       '0,3;0,4;0,5;1,3;1,4;1,5;2,3;2,4;2,5'),
         RuleItemMutex(self.question_data,
                       '3,3;3,4;3,5;4,3;4,4;4,5;5,3;5,4;5,5'),
         RuleItemMutex(self.question_data,
                       '6,3;6,4;6,5;7,3;7,4;7,5;8,3;8,4;8,5'),
         RuleItemMutex(self.question_data,
                       '0,6;0,7;0,8;1,6;1,7;1,8;2,6;2,7;2,8'),
         RuleItemMutex(self.question_data,
                       '3,6;3,7;3,8;4,6;4,7;4,8;5,6;5,7;5,8'),
         RuleItemMutex(self.question_data,
                       '6,6;6,7;6,8;7,6;7,7;7,8;8,6;8,7;8,8'),
     ]
     all_relations = []
     # 先计算出所有相邻单元格关系,然后稍后再下方进行关系筛选,其余的最后做不等关系规则
     for y in range(self.question_data.dimensionY):
         for x in range(self.question_data.dimensionX):
             if x < self.question_data.dimensionX - 1:
                 all_relations.append(
                     str(x) + ',' + str(y) + ';' + str(x + 1) + ',' +
                     str(y))
             if y < self.question_data.dimensionY - 1:
                 all_relations.append(
                     str(x) + ',' + str(y) + ';' + str(x) + ',' +
                     str(y + 1))
     for draw_function_data in self.question_data.draw_function_list:
         if draw_function_data.function_name == 'DLE':
             relation_direction = draw_function_data.parameters[0]
             for param_group in draw_function_data.data.split(';'):
                 param_group_split = param_group.split(':')
                 if len(param_group_split) > 1:
                     for location_tag in param_group_split[0].split(','):
                         # 将单元格tag转换成坐标,如A3 -> 2,0
                         location = [
                             int(location_tag[1]) - 1,
                             ord(location_tag[0]) - 65
                         ]
                         cell1 = ''
                         cell2 = ''
                         if relation_direction == 'R':
                             cell1 = str(location[0]) + ',' + str(
                                 location[1])
                             cell2 = str(location[0] + 1) + ',' + str(
                                 location[1])
                         elif relation_direction == 'B':
                             cell1 = str(location[0]) + ',' + str(
                                 location[1])
                             cell2 = str(
                                 location[0]) + ',' + str(location[1] + 1)
                         rule_str = ''
                         if param_group_split[1] == 'kongxinyuan':
                             rule_str = 'abs(cell_value(' + cell1 + ') - cell_value(' + cell2 + ')) == 1'
                         elif param_group_split[1] == 'shixinyuan':
                             rule_str = 'max(cell_value(' + cell1 + '), cell_value(' + cell2 + ')) / ' + \
                                        'min(cell_value(' + cell1 + '), cell_value(' + cell2 + ')) == 2'
                         if (cell1 + ';' + cell2) in all_relations:
                             all_relations.remove(cell1 + ';' + cell2)
                         self.question_data.rules_list.append(
                             RuleFormulaCheck(self.question_data, rule_str))
     for relation_str in all_relations:
         cell_items = relation_str.split(';')
         rule_str = '(abs(cell_value(' + cell_items[0] + ') - cell_value(' + cell_items[1] + ')) != 1)' + ' & ' + \
                    '(max(cell_value(' + cell_items[0] + '), cell_value(' + cell_items[1] + ')) / ' + \
                    'min(cell_value(' + cell_items[0] + '), cell_value(' + cell_items[1] + ')) != 2)'
         self.question_data.rules_list.append(
             RuleFormulaCheck(self.question_data, rule_str))
         self.question_data.rules_list.append(
             RuleFormulaCheck(self.question_data, rule_str))
Exemplo n.º 5
0
    def calculate_rules(self):
        super().calculate_rules()
        self.question_data.rules_list = [
            RuleItemMutex(self.question_data, '0,0;0,1;0,2;0,3'),
            RuleItemMutex(self.question_data, '1,0;1,1;1,2;1,3'),
            RuleItemMutex(self.question_data, '2,0;2,1;2,2;2,3'),
            RuleItemMutex(self.question_data, '3,0;3,1;3,2;3,3'),

            RuleItemMutex(self.question_data, '0,0;1,0;2,0;3,0'),
            RuleItemMutex(self.question_data, '0,1;1,1;2,1;3,1'),
            RuleItemMutex(self.question_data, '0,2;1,2;2,2;3,2'),
            RuleItemMutex(self.question_data, '0,3;1,3;2,3;3,3'),

            RuleItemMutex(self.question_data, '0,0;1,0;0,1;1,1'),
            RuleItemMutex(self.question_data, '0,2;0,3;1,2;1,3'),
            RuleItemMutex(self.question_data, '2,0;2,1;3,0;3,1'),
            RuleItemMutex(self.question_data, '2,2;2,3;3,2;3,3'),
        ]
Exemplo n.º 6
0
 def calculate_rules(self):
     super().calculate_rules()
     self.question_data.rules_list = [
         RuleItemMutex(self.question_data, '0,0;0,1;0,2;0,3;0,4;0,5'),
         RuleItemMutex(self.question_data, '1,0;1,1;1,2;1,3;1,4;1,5'),
         RuleItemMutex(self.question_data, '2,0;2,1;2,2;2,3;2,4;2,5'),
         RuleItemMutex(self.question_data, '3,0;3,1;3,2;3,3;3,4;3,5'),
         RuleItemMutex(self.question_data, '4,0;4,1;4,2;4,3;4,4;4,5'),
         RuleItemMutex(self.question_data, '5,0;5,1;5,2;5,3;5,4;5,5'),
         RuleItemMutex(self.question_data, '0,0;1,0;2,0;3,0;4,0;5,0'),
         RuleItemMutex(self.question_data, '0,1;1,1;2,1;3,1;4,1;5,1'),
         RuleItemMutex(self.question_data, '0,2;1,2;2,2;3,2;4,2;5,2'),
         RuleItemMutex(self.question_data, '0,3;1,3;2,3;3,3;4,3;5,3'),
         RuleItemMutex(self.question_data, '0,4;1,4;2,4;3,4;4,4;5,4'),
         RuleItemMutex(self.question_data, '0,5;1,5;2,5;3,5;4,5;5,5'),
         RuleItemMutex(self.question_data, '0,0;1,0;2,0;0,1;1,1;2,1'),
         RuleItemMutex(self.question_data, '3,0;4,0;5,0;3,1;4,1;5,1'),
         RuleItemMutex(self.question_data, '0,2;1,2;2,2;0,3;1,3;2,3'),
         RuleItemMutex(self.question_data, '3,2;4,2;5,2;3,3;4,3;5,3'),
         RuleItemMutex(self.question_data, '0,4;1,4;2,4;0,5;1,5;2,5'),
         RuleItemMutex(self.question_data, '3,4;4,4;5,4;3,5;4,5;5,5'),
     ]
Exemplo n.º 7
0
 def calculate_rules(self):
     super().calculate_rules()
     self.question_data.rules_list = [
         RuleItemMutex(self.question_data,
                       '0,0;0,1;0,2;0,3;0,4;0,5;0,6;0,7;0,8'),
         RuleItemMutex(self.question_data,
                       '1,0;1,1;1,2;1,3;1,4;1,5;1,6;1,7;1,8'),
         RuleItemMutex(self.question_data,
                       '2,0;2,1;2,2;2,3;2,4;2,5;2,6;2,7;2,8'),
         RuleItemMutex(self.question_data,
                       '3,0;3,1;3,2;3,3;3,4;3,5;3,6;3,7;3,8'),
         RuleItemMutex(self.question_data,
                       '4,0;4,1;4,2;4,3;4,4;4,5;4,6;4,7;4,8'),
         RuleItemMutex(self.question_data,
                       '5,0;5,1;5,2;5,3;5,4;5,5;5,6;5,7;5,8'),
         RuleItemMutex(self.question_data,
                       '6,0;6,1;6,2;6,3;6,4;6,5;6,6;6,7;6,8'),
         RuleItemMutex(self.question_data,
                       '7,0;7,1;7,2;7,3;7,4;7,5;7,6;7,7;7,8'),
         RuleItemMutex(self.question_data,
                       '8,0;8,1;8,2;8,3;8,4;8,5;8,6;8,7;8,8'),
         RuleItemMutex(self.question_data,
                       '0,0;1,0;2,0;3,0;4,0;5,0;6,0;7,0;8,0'),
         RuleItemMutex(self.question_data,
                       '0,1;1,1;2,1;3,1;4,1;5,1;6,1;7,1;8,1'),
         RuleItemMutex(self.question_data,
                       '0,2;1,2;2,2;3,2;4,2;5,2;6,2;7,2;8,2'),
         RuleItemMutex(self.question_data,
                       '0,3;1,3;2,3;3,3;4,3;5,3;6,3;7,3;8,3'),
         RuleItemMutex(self.question_data,
                       '0,4;1,4;2,4;3,4;4,4;5,4;6,4;7,4;8,4'),
         RuleItemMutex(self.question_data,
                       '0,5;1,5;2,5;3,5;4,5;5,5;6,5;7,5;8,5'),
         RuleItemMutex(self.question_data,
                       '0,6;1,6;2,6;3,6;4,6;5,6;6,6;7,6;8,6'),
         RuleItemMutex(self.question_data,
                       '0,7;1,7;2,7;3,7;4,7;5,7;6,7;7,7;8,7'),
         RuleItemMutex(self.question_data,
                       '0,8;1,8;2,8;3,8;4,8;5,8;6,8;7,8;8,8'),
         RuleItemMutex(self.question_data,
                       '0,0;0,1;0,2;1,0;1,1;1,2;2,0;2,1;2,2'),
         RuleItemMutex(self.question_data,
                       '3,0;3,1;3,2;4,0;4,1;4,2;5,0;5,1;5,2'),
         RuleItemMutex(self.question_data,
                       '6,0;6,1;6,2;7,0;7,1;7,2;8,0;8,1;8,2'),
         RuleItemMutex(self.question_data,
                       '0,3;0,4;0,5;1,3;1,4;1,5;2,3;2,4;2,5'),
         RuleItemMutex(self.question_data,
                       '3,3;3,4;3,5;4,3;4,4;4,5;5,3;5,4;5,5'),
         RuleItemMutex(self.question_data,
                       '6,3;6,4;6,5;7,3;7,4;7,5;8,3;8,4;8,5'),
         RuleItemMutex(self.question_data,
                       '0,6;0,7;0,8;1,6;1,7;1,8;2,6;2,7;2,8'),
         RuleItemMutex(self.question_data,
                       '3,6;3,7;3,8;4,6;4,7;4,8;5,6;5,7;5,8'),
         RuleItemMutex(self.question_data,
                       '6,6;6,7;6,8;7,6;7,7;7,8;8,6;8,7;8,8'),
         RuleItemMutex(self.question_data,
                       '0,0;1,1;2,2;3,3;4,4;5,5;6,6;7,7;8,8'),
         RuleItemMutex(self.question_data,
                       '8,0;7,1;6,2;5,3;4,4;3,5;2,6;1,7;0,8'),
     ]
Exemplo n.º 8
0
    def calculate_rules(self):
        super().calculate_rules()
        self.question_data.rules_list = [
            RuleItemMutex(self.question_data, '0,0;0,1;0,2;0,3;0,4;0,5;0,6;0,7;0,8'),
            RuleItemMutex(self.question_data, '1,0;1,1;1,2;1,3;1,4;1,5;1,6;1,7;1,8'),
            RuleItemMutex(self.question_data, '2,0;2,1;2,2;2,3;2,4;2,5;2,6;2,7;2,8'),
            RuleItemMutex(self.question_data, '3,0;3,1;3,2;3,3;3,4;3,5;3,6;3,7;3,8'),
            RuleItemMutex(self.question_data, '4,0;4,1;4,2;4,3;4,4;4,5;4,6;4,7;4,8'),
            RuleItemMutex(self.question_data, '5,0;5,1;5,2;5,3;5,4;5,5;5,6;5,7;5,8'),
            RuleItemMutex(self.question_data, '6,0;6,1;6,2;6,3;6,4;6,5;6,6;6,7;6,8'),
            RuleItemMutex(self.question_data, '7,0;7,1;7,2;7,3;7,4;7,5;7,6;7,7;7,8'),
            RuleItemMutex(self.question_data, '8,0;8,1;8,2;8,3;8,4;8,5;8,6;8,7;8,8'),

            RuleItemMutex(self.question_data, '0,0;1,0;2,0;3,0;4,0;5,0;6,0;7,0;8,0'),
            RuleItemMutex(self.question_data, '0,1;1,1;2,1;3,1;4,1;5,1;6,1;7,1;8,1'),
            RuleItemMutex(self.question_data, '0,2;1,2;2,2;3,2;4,2;5,2;6,2;7,2;8,2'),
            RuleItemMutex(self.question_data, '0,3;1,3;2,3;3,3;4,3;5,3;6,3;7,3;8,3'),
            RuleItemMutex(self.question_data, '0,4;1,4;2,4;3,4;4,4;5,4;6,4;7,4;8,4'),
            RuleItemMutex(self.question_data, '0,5;1,5;2,5;3,5;4,5;5,5;6,5;7,5;8,5'),
            RuleItemMutex(self.question_data, '0,6;1,6;2,6;3,6;4,6;5,6;6,6;7,6;8,6'),
            RuleItemMutex(self.question_data, '0,7;1,7;2,7;3,7;4,7;5,7;6,7;7,7;8,7'),
            RuleItemMutex(self.question_data, '0,8;1,8;2,8;3,8;4,8;5,8;6,8;7,8;8,8'),

            RuleItemMutex(self.question_data, '0,0;0,1;0,2;1,0;1,1;1,2;2,0;2,1;2,2'),
            RuleItemMutex(self.question_data, '3,0;3,1;3,2;4,0;4,1;4,2;5,0;5,1;5,2'),
            RuleItemMutex(self.question_data, '6,0;6,1;6,2;7,0;7,1;7,2;8,0;8,1;8,2'),
            RuleItemMutex(self.question_data, '0,3;0,4;0,5;1,3;1,4;1,5;2,3;2,4;2,5'),
            RuleItemMutex(self.question_data, '3,3;3,4;3,5;4,3;4,4;4,5;5,3;5,4;5,5'),
            RuleItemMutex(self.question_data, '6,3;6,4;6,5;7,3;7,4;7,5;8,3;8,4;8,5'),
            RuleItemMutex(self.question_data, '0,6;0,7;0,8;1,6;1,7;1,8;2,6;2,7;2,8'),
            RuleItemMutex(self.question_data, '3,6;3,7;3,8;4,6;4,7;4,8;5,6;5,7;5,8'),
            RuleItemMutex(self.question_data, '6,6;6,7;6,8;7,6;7,7;7,8;8,6;8,7;8,8'),
        ]
        for draw_function_data in self.question_data.draw_function_list:
            if (draw_function_data.data is None) | (draw_function_data.data == ''):
                continue
            if draw_function_data.function_name == 'DLE':
                relation_direction = draw_function_data.parameters[0]
                for param_group in draw_function_data.data.split(';'):
                    param_group_split = param_group.split(':')
                    if len(param_group_split) > 1:
                        for location_tag in param_group_split[0].split(','):
                            # 将单元格tag转换成坐标,如A3 -> 2,0
                            location = [int(location_tag[1]) - 1, ord(location_tag[0]) - 65]
                            cell1 = ''
                            cell2 = ''
                            if relation_direction == 'R':
                                cell1 = str(location[0]) + ',' + str(location[1])
                                cell2 = str(location[0] + 1) + ',' + str(location[1])
                            elif relation_direction == 'B':
                                cell1 = str(location[0]) + ',' + str(location[1])
                                cell2 = str(location[0]) + ',' + str(location[1] + 1)
                            rule_str = 'cell_value(' + cell1 + ') * cell_value(' + cell2 + ') == ' + param_group_split[
                                1]
                            self.question_data.rules_list.append(RuleFormulaCheck(self.question_data, rule_str))
Exemplo n.º 9
0
 def calculate_rules(self):
     super().calculate_rules()
     self.question_data.rules_list = [
         RuleItemMutex(self.question_data,
                       '0,0;0,1;0,2;0,3;0,4;0,5;0,6;0,7;0,8'),
         RuleItemMutex(self.question_data,
                       '1,0;1,1;1,2;1,3;1,4;1,5;1,6;1,7;1,8'),
         RuleItemMutex(self.question_data,
                       '2,0;2,1;2,2;2,3;2,4;2,5;2,6;2,7;2,8'),
         RuleItemMutex(self.question_data,
                       '3,0;3,1;3,2;3,3;3,4;3,5;3,6;3,7;3,8'),
         RuleItemMutex(self.question_data,
                       '4,0;4,1;4,2;4,3;4,4;4,5;4,6;4,7;4,8'),
         RuleItemMutex(self.question_data,
                       '5,0;5,1;5,2;5,3;5,4;5,5;5,6;5,7;5,8'),
         RuleItemMutex(self.question_data,
                       '6,0;6,1;6,2;6,3;6,4;6,5;6,6;6,7;6,8'),
         RuleItemMutex(self.question_data,
                       '7,0;7,1;7,2;7,3;7,4;7,5;7,6;7,7;7,8'),
         RuleItemMutex(self.question_data,
                       '8,0;8,1;8,2;8,3;8,4;8,5;8,6;8,7;8,8'),
         RuleItemMutex(self.question_data,
                       '0,0;1,0;2,0;3,0;4,0;5,0;6,0;7,0;8,0'),
         RuleItemMutex(self.question_data,
                       '0,1;1,1;2,1;3,1;4,1;5,1;6,1;7,1;8,1'),
         RuleItemMutex(self.question_data,
                       '0,2;1,2;2,2;3,2;4,2;5,2;6,2;7,2;8,2'),
         RuleItemMutex(self.question_data,
                       '0,3;1,3;2,3;3,3;4,3;5,3;6,3;7,3;8,3'),
         RuleItemMutex(self.question_data,
                       '0,4;1,4;2,4;3,4;4,4;5,4;6,4;7,4;8,4'),
         RuleItemMutex(self.question_data,
                       '0,5;1,5;2,5;3,5;4,5;5,5;6,5;7,5;8,5'),
         RuleItemMutex(self.question_data,
                       '0,6;1,6;2,6;3,6;4,6;5,6;6,6;7,6;8,6'),
         RuleItemMutex(self.question_data,
                       '0,7;1,7;2,7;3,7;4,7;5,7;6,7;7,7;8,7'),
         RuleItemMutex(self.question_data,
                       '0,8;1,8;2,8;3,8;4,8;5,8;6,8;7,8;8,8'),
         RuleItemMutex(self.question_data,
                       '0,0;0,1;0,2;1,0;1,1;1,2;2,0;2,1;2,2'),
         RuleItemMutex(self.question_data,
                       '3,0;3,1;3,2;4,0;4,1;4,2;5,0;5,1;5,2'),
         RuleItemMutex(self.question_data,
                       '6,0;6,1;6,2;7,0;7,1;7,2;8,0;8,1;8,2'),
         RuleItemMutex(self.question_data,
                       '0,3;0,4;0,5;1,3;1,4;1,5;2,3;2,4;2,5'),
         RuleItemMutex(self.question_data,
                       '3,3;3,4;3,5;4,3;4,4;4,5;5,3;5,4;5,5'),
         RuleItemMutex(self.question_data,
                       '6,3;6,4;6,5;7,3;7,4;7,5;8,3;8,4;8,5'),
         RuleItemMutex(self.question_data,
                       '0,6;0,7;0,8;1,6;1,7;1,8;2,6;2,7;2,8'),
         RuleItemMutex(self.question_data,
                       '3,6;3,7;3,8;4,6;4,7;4,8;5,6;5,7;5,8'),
         RuleItemMutex(self.question_data,
                       '6,6;6,7;6,8;7,6;7,7;7,8;8,6;8,7;8,8'),
     ]
     # 读取Excel中所有DBG函数,生成互斥规则
     for draw_function_data in self.question_data.draw_function_list:
         if draw_function_data.function_name == 'DBG':
             cells_list = []
             for location_tag in draw_function_data.data.split(','):
                 # 将单元格tag转换成坐标,如A3 -> 2,0
                 location = [
                     int(location_tag[1]) - 1,
                     ord(location_tag[0]) - 65
                 ]
                 cell = str(location[0]) + ',' + str(location[1])
                 cells_list.append(cell)
                 self.question_data.rules_list.append(
                     RuleItemMutex(self.question_data,
                                   ';'.join(cells_list)))
Exemplo n.º 10
0
    def calculate_rules(self):
        super().calculate_rules()
        self.question_data.rules_list = [
            RuleItemMutex(self.question_data, '0,0;0,1;0,2;0,3;0,4;0,5;0,6;0,7;0,8'),
            RuleItemMutex(self.question_data, '1,0;1,1;1,2;1,3;1,4;1,5;1,6;1,7;1,8'),
            RuleItemMutex(self.question_data, '2,0;2,1;2,2;2,3;2,4;2,5;2,6;2,7;2,8'),
            RuleItemMutex(self.question_data, '3,0;3,1;3,2;3,3;3,4;3,5;3,6;3,7;3,8'),
            RuleItemMutex(self.question_data, '4,0;4,1;4,2;4,3;4,4;4,5;4,6;4,7;4,8'),
            RuleItemMutex(self.question_data, '5,0;5,1;5,2;5,3;5,4;5,5;5,6;5,7;5,8'),
            RuleItemMutex(self.question_data, '6,0;6,1;6,2;6,3;6,4;6,5;6,6;6,7;6,8'),
            RuleItemMutex(self.question_data, '7,0;7,1;7,2;7,3;7,4;7,5;7,6;7,7;7,8'),
            RuleItemMutex(self.question_data, '8,0;8,1;8,2;8,3;8,4;8,5;8,6;8,7;8,8'),

            RuleItemMutex(self.question_data, '0,0;1,0;2,0;3,0;4,0;5,0;6,0;7,0;8,0'),
            RuleItemMutex(self.question_data, '0,1;1,1;2,1;3,1;4,1;5,1;6,1;7,1;8,1'),
            RuleItemMutex(self.question_data, '0,2;1,2;2,2;3,2;4,2;5,2;6,2;7,2;8,2'),
            RuleItemMutex(self.question_data, '0,3;1,3;2,3;3,3;4,3;5,3;6,3;7,3;8,3'),
            RuleItemMutex(self.question_data, '0,4;1,4;2,4;3,4;4,4;5,4;6,4;7,4;8,4'),
            RuleItemMutex(self.question_data, '0,5;1,5;2,5;3,5;4,5;5,5;6,5;7,5;8,5'),
            RuleItemMutex(self.question_data, '0,6;1,6;2,6;3,6;4,6;5,6;6,6;7,6;8,6'),
            RuleItemMutex(self.question_data, '0,7;1,7;2,7;3,7;4,7;5,7;6,7;7,7;8,7'),
            RuleItemMutex(self.question_data, '0,8;1,8;2,8;3,8;4,8;5,8;6,8;7,8;8,8'),

            RuleItemMutex(self.question_data, '0,0;0,1;0,2;1,0;1,1;1,2;2,0;2,1;2,2'),
            RuleItemMutex(self.question_data, '3,0;3,1;3,2;4,0;4,1;4,2;5,0;5,1;5,2'),
            RuleItemMutex(self.question_data, '6,0;6,1;6,2;7,0;7,1;7,2;8,0;8,1;8,2'),
            RuleItemMutex(self.question_data, '0,3;0,4;0,5;1,3;1,4;1,5;2,3;2,4;2,5'),
            RuleItemMutex(self.question_data, '3,3;3,4;3,5;4,3;4,4;4,5;5,3;5,4;5,5'),
            RuleItemMutex(self.question_data, '6,3;6,4;6,5;7,3;7,4;7,5;8,3;8,4;8,5'),
            RuleItemMutex(self.question_data, '0,6;0,7;0,8;1,6;1,7;1,8;2,6;2,7;2,8'),
            RuleItemMutex(self.question_data, '3,6;3,7;3,8;4,6;4,7;4,8;5,6;5,7;5,8'),
            RuleItemMutex(self.question_data, '6,6;6,7;6,8;7,6;7,7;7,8;8,6;8,7;8,8'),
        ]

        for y in range(3):
            for x in range(3):
                rule_str = ''
                for ys in [0, 3, 6]:
                    for xs in [0, 3, 6]:
                        rule_str = rule_str + str(x + xs) + ',' + str(y + ys) + ';'
                self.question_data.rules_list.append(RuleItemMutex(self.question_data, rule_str))
Exemplo n.º 11
0
    def calculate_rules(self):
        super().calculate_rules()
        self.question_data.rules_list = [
            RuleItemMutex(self.question_data, '0,0;0,1;0,2;0,3;0,4;0,5'),
            RuleItemMutex(self.question_data, '1,0;1,1;1,2;1,3;1,4;1,5'),
            RuleItemMutex(self.question_data, '2,0;2,1;2,2;2,3;2,4;2,5'),
            RuleItemMutex(self.question_data, '3,0;3,1;3,2;3,3;3,4;3,5'),
            RuleItemMutex(self.question_data, '4,0;4,1;4,2;4,3;4,4;4,5'),
            RuleItemMutex(self.question_data, '5,0;5,1;5,2;5,3;5,4;5,5'),
            RuleItemMutex(self.question_data, '0,0;1,0;2,0;3,0;4,0;5,0'),
            RuleItemMutex(self.question_data, '0,1;1,1;2,1;3,1;4,1;5,1'),
            RuleItemMutex(self.question_data, '0,2;1,2;2,2;3,2;4,2;5,2'),
            RuleItemMutex(self.question_data, '0,3;1,3;2,3;3,3;4,3;5,3'),
            RuleItemMutex(self.question_data, '0,4;1,4;2,4;3,4;4,4;5,4'),
            RuleItemMutex(self.question_data, '0,5;1,5;2,5;3,5;4,5;5,5'),
            RuleItemMutex(self.question_data, '0,0;1,0;2,0;0,1;1,1;2,1'),
            RuleItemMutex(self.question_data, '3,0;4,0;5,0;3,1;4,1;5,1'),
            RuleItemMutex(self.question_data, '0,2;1,2;2,2;0,3;1,3;2,3'),
            RuleItemMutex(self.question_data, '3,2;4,2;5,2;3,3;4,3;5,3'),
            RuleItemMutex(self.question_data, '0,4;1,4;2,4;0,5;1,5;2,5'),
            RuleItemMutex(self.question_data, '3,4;4,4;5,4;3,5;4,5;5,5'),
        ]

        for y in range(self.question_data.dimensionY - 1):
            for x in range(self.question_data.dimensionX - 1):
                rule_str = str(x) + ',' + str(y) + ';' + str(x +
                                                             1) + ',' + str(y +
                                                                            1)
                self.question_data.rules_list.append(
                    RuleItemMutex(self.question_data, rule_str))
                rule_str = str(x) + ',' + str(y +
                                              1) + ';' + str(x +
                                                             1) + ',' + str(y)
                self.question_data.rules_list.append(
                    RuleItemMutex(self.question_data, rule_str))
Exemplo n.º 12
0
    def calculate_rules(self):
        super().calculate_rules()
        self.question_data.rules_list = [
            RuleItemMutex(self.question_data, '0,0;0,1;0,2;0,3;0,4;0,5;0,6;0,7;0,8'),
            RuleItemMutex(self.question_data, '1,0;1,1;1,2;1,3;1,4;1,5;1,6;1,7;1,8'),
            RuleItemMutex(self.question_data, '2,0;2,1;2,2;2,3;2,4;2,5;2,6;2,7;2,8'),
            RuleItemMutex(self.question_data, '3,0;3,1;3,2;3,3;3,4;3,5;3,6;3,7;3,8'),
            RuleItemMutex(self.question_data, '4,0;4,1;4,2;4,3;4,4;4,5;4,6;4,7;4,8'),
            RuleItemMutex(self.question_data, '5,0;5,1;5,2;5,3;5,4;5,5;5,6;5,7;5,8'),
            RuleItemMutex(self.question_data, '6,0;6,1;6,2;6,3;6,4;6,5;6,6;6,7;6,8'),
            RuleItemMutex(self.question_data, '7,0;7,1;7,2;7,3;7,4;7,5;7,6;7,7;7,8'),
            RuleItemMutex(self.question_data, '8,0;8,1;8,2;8,3;8,4;8,5;8,6;8,7;8,8'),

            RuleItemMutex(self.question_data, '0,0;1,0;2,0;3,0;4,0;5,0;6,0;7,0;8,0'),
            RuleItemMutex(self.question_data, '0,1;1,1;2,1;3,1;4,1;5,1;6,1;7,1;8,1'),
            RuleItemMutex(self.question_data, '0,2;1,2;2,2;3,2;4,2;5,2;6,2;7,2;8,2'),
            RuleItemMutex(self.question_data, '0,3;1,3;2,3;3,3;4,3;5,3;6,3;7,3;8,3'),
            RuleItemMutex(self.question_data, '0,4;1,4;2,4;3,4;4,4;5,4;6,4;7,4;8,4'),
            RuleItemMutex(self.question_data, '0,5;1,5;2,5;3,5;4,5;5,5;6,5;7,5;8,5'),
            RuleItemMutex(self.question_data, '0,6;1,6;2,6;3,6;4,6;5,6;6,6;7,6;8,6'),
            RuleItemMutex(self.question_data, '0,7;1,7;2,7;3,7;4,7;5,7;6,7;7,7;8,7'),
            RuleItemMutex(self.question_data, '0,8;1,8;2,8;3,8;4,8;5,8;6,8;7,8;8,8'),

            RuleItemMutex(self.question_data, '0,0;0,1;0,2;1,0;1,1;1,2;2,0;2,1;2,2'),
            RuleItemMutex(self.question_data, '3,0;3,1;3,2;4,0;4,1;4,2;5,0;5,1;5,2'),
            RuleItemMutex(self.question_data, '6,0;6,1;6,2;7,0;7,1;7,2;8,0;8,1;8,2'),
            RuleItemMutex(self.question_data, '0,3;0,4;0,5;1,3;1,4;1,5;2,3;2,4;2,5'),
            RuleItemMutex(self.question_data, '3,3;3,4;3,5;4,3;4,4;4,5;5,3;5,4;5,5'),
            RuleItemMutex(self.question_data, '6,3;6,4;6,5;7,3;7,4;7,5;8,3;8,4;8,5'),
            RuleItemMutex(self.question_data, '0,6;0,7;0,8;1,6;1,7;1,8;2,6;2,7;2,8'),
            RuleItemMutex(self.question_data, '3,6;3,7;3,8;4,6;4,7;4,8;5,6;5,7;5,8'),
            RuleItemMutex(self.question_data, '6,6;6,7;6,8;7,6;7,7;7,8;8,6;8,7;8,8'),
        ]
        # 读取Excel中所有DBG函数,生成奇数灰格子的互斥规则
        for draw_function_data in self.question_data.draw_function_list:
            if draw_function_data.function_name == 'DOE':
                line_list = draw_function_data.data.split(';')
                if len(line_list) == 2:
                    if draw_function_data.parameters[0] is 'T':
                        num_list = line_list[0].split(':')[0].split[',']
                        arrow_list = line_list[1].split(':')[0].split[',']
                        arrow_index = 0
                        for arrow in arrow_list:
                            if arrow is not '0':
                                rule_str = ''
                            arrow_index = arrow_index + 1
Exemplo n.º 13
0
    def calculate_rules(self):
        super().calculate_rules()
        self.question_data.rules_list = [
            RuleItemMutex(self.question_data, '0,0;0,1;0,2;0,3;0,4;0,5;0,6;0,7;0,8'),
            RuleItemMutex(self.question_data, '1,0;1,1;1,2;1,3;1,4;1,5;1,6;1,7;1,8'),
            RuleItemMutex(self.question_data, '2,0;2,1;2,2;2,3;2,4;2,5;2,6;2,7;2,8'),
            RuleItemMutex(self.question_data, '3,0;3,1;3,2;3,3;3,4;3,5;3,6;3,7;3,8'),
            RuleItemMutex(self.question_data, '4,0;4,1;4,2;4,3;4,4;4,5;4,6;4,7;4,8'),
            RuleItemMutex(self.question_data, '5,0;5,1;5,2;5,3;5,4;5,5;5,6;5,7;5,8'),
            RuleItemMutex(self.question_data, '6,0;6,1;6,2;6,3;6,4;6,5;6,6;6,7;6,8'),
            RuleItemMutex(self.question_data, '7,0;7,1;7,2;7,3;7,4;7,5;7,6;7,7;7,8'),
            RuleItemMutex(self.question_data, '8,0;8,1;8,2;8,3;8,4;8,5;8,6;8,7;8,8'),

            RuleItemMutex(self.question_data, '0,0;1,0;2,0;3,0;4,0;5,0;6,0;7,0;8,0'),
            RuleItemMutex(self.question_data, '0,1;1,1;2,1;3,1;4,1;5,1;6,1;7,1;8,1'),
            RuleItemMutex(self.question_data, '0,2;1,2;2,2;3,2;4,2;5,2;6,2;7,2;8,2'),
            RuleItemMutex(self.question_data, '0,3;1,3;2,3;3,3;4,3;5,3;6,3;7,3;8,3'),
            RuleItemMutex(self.question_data, '0,4;1,4;2,4;3,4;4,4;5,4;6,4;7,4;8,4'),
            RuleItemMutex(self.question_data, '0,5;1,5;2,5;3,5;4,5;5,5;6,5;7,5;8,5'),
            RuleItemMutex(self.question_data, '0,6;1,6;2,6;3,6;4,6;5,6;6,6;7,6;8,6'),
            RuleItemMutex(self.question_data, '0,7;1,7;2,7;3,7;4,7;5,7;6,7;7,7;8,7'),
            RuleItemMutex(self.question_data, '0,8;1,8;2,8;3,8;4,8;5,8;6,8;7,8;8,8'),

            RuleItemMutex(self.question_data, '0,0;0,1;0,2;1,0;1,1;1,2;2,0;2,1;2,2'),
            RuleItemMutex(self.question_data, '3,0;3,1;3,2;4,0;4,1;4,2;5,0;5,1;5,2'),
            RuleItemMutex(self.question_data, '6,0;6,1;6,2;7,0;7,1;7,2;8,0;8,1;8,2'),
            RuleItemMutex(self.question_data, '0,3;0,4;0,5;1,3;1,4;1,5;2,3;2,4;2,5'),
            RuleItemMutex(self.question_data, '3,3;3,4;3,5;4,3;4,4;4,5;5,3;5,4;5,5'),
            RuleItemMutex(self.question_data, '6,3;6,4;6,5;7,3;7,4;7,5;8,3;8,4;8,5'),
            RuleItemMutex(self.question_data, '0,6;0,7;0,8;1,6;1,7;1,8;2,6;2,7;2,8'),
            RuleItemMutex(self.question_data, '3,6;3,7;3,8;4,6;4,7;4,8;5,6;5,7;5,8'),
            RuleItemMutex(self.question_data, '6,6;6,7;6,8;7,6;7,7;7,8;8,6;8,7;8,8'),
        ]
        # 读取Excel中所有DBG函数,根据箭头方向生成寻9规则公式
        for draw_function_data in self.question_data.draw_function_list:
            if draw_function_data.function_name == 'DBG':
                for location_tag in draw_function_data.data.split(','):
                    # 将单元格tag转换成坐标,如A3 -> 2,0
                    location = [int(location_tag[1]) - 1, ord(location_tag[0]) - 65]
                    cell1 = str(location[0]) + ',' + str(location[1])
                    if draw_function_data.parameters[0] == '69up':
                        rule_str = 'cell_value(' + str(location[0]) + ',(' + str(location[1]) + '- cell_value(' + cell1 + ')' + ')) == 9'
                        self.question_data.rules_list.append(RuleFormulaCheck(self.question_data, rule_str))
                    elif draw_function_data.parameters[0] == '69down':
                        rule_str = 'cell_value(' + str(location[0]) + ',(' + str(location[1]) + '+ cell_value(' + cell1 + ')' + ')) == 9'
                        self.question_data.rules_list.append(RuleFormulaCheck(self.question_data, rule_str))
                    elif draw_function_data.parameters[0] == '69left':
                        rule_str = 'cell_value(' + str('(' + str(location[0]) + '- cell_value(' + cell1 + ')' + '),' + str(location[1])) + ') == 9'
                        self.question_data.rules_list.append(RuleFormulaCheck(self.question_data, rule_str))
                    elif draw_function_data.parameters[0] == '69right':
                        rule_str = 'cell_value(' + str('(' + str(location[0]) + '+ cell_value(' + cell1 + ')' + '),' + str(location[1])) + ') == 9'
                        self.question_data.rules_list.append(RuleFormulaCheck(self.question_data, rule_str))
Exemplo n.º 14
0
    def calculate_rules(self):
        super().calculate_rules()
        self.question_data.rules_list = [
            RuleItemMutex(self.question_data, '0,0;0,1;0,2;0,3;0,4;0,5'),
            RuleItemMutex(self.question_data, '1,0;1,1;1,2;1,3;1,4;1,5'),
            RuleItemMutex(self.question_data, '2,0;2,1;2,2;2,3;2,4;2,5'),
            RuleItemMutex(self.question_data, '3,0;3,1;3,2;3,3;3,4;3,5'),
            RuleItemMutex(self.question_data, '4,0;4,1;4,2;4,3;4,4;4,5'),
            RuleItemMutex(self.question_data, '5,0;5,1;5,2;5,3;5,4;5,5'),
            RuleItemMutex(self.question_data, '0,0;1,0;2,0;3,0;4,0;5,0'),
            RuleItemMutex(self.question_data, '0,1;1,1;2,1;3,1;4,1;5,1'),
            RuleItemMutex(self.question_data, '0,2;1,2;2,2;3,2;4,2;5,2'),
            RuleItemMutex(self.question_data, '0,3;1,3;2,3;3,3;4,3;5,3'),
            RuleItemMutex(self.question_data, '0,4;1,4;2,4;3,4;4,4;5,4'),
            RuleItemMutex(self.question_data, '0,5;1,5;2,5;3,5;4,5;5,5'),
            RuleItemMutex(self.question_data, '0,0;1,0;2,0;0,1;1,1;2,1'),
            RuleItemMutex(self.question_data, '3,0;4,0;5,0;3,1;4,1;5,1'),
            RuleItemMutex(self.question_data, '0,2;1,2;2,2;0,3;1,3;2,3'),
            RuleItemMutex(self.question_data, '3,2;4,2;5,2;3,3;4,3;5,3'),
            RuleItemMutex(self.question_data, '0,4;1,4;2,4;0,5;1,5;2,5'),
            RuleItemMutex(self.question_data, '3,4;4,4;5,4;3,5;4,5;5,5'),
        ]

        for y in range(2):
            for x in range(3):
                rule_str = ''
                for ys in [0, 2, 4]:
                    for xs in [0, 3]:
                        rule_str = rule_str + str(x + xs) + ',' + str(y +
                                                                      ys) + ';'
                self.question_data.rules_list.append(
                    RuleItemMutex(self.question_data, rule_str))