Esempio n. 1
0
def main():
    ctrl = True  # 标记是否退出系统
    while ctrl:
        function.menu()  # 显示菜单
        option = input("请选择: ")  # 选择菜单项
        option_str = re.sub("\D", "", option)
        if option_str in ["0", "1", "2", "3", "4", "5", "6", "7"]:
            option_int = int(option_str)
            if option_int == 0:  # 退出系统
                print("您已退出学生信息管理系统!")
                ctrl = False
            elif option_int == 1:  # 录入学生成绩信息
                function.insert()

            elif option_int == 2:  # 查找学生成绩信息
                function.search()

            elif option_int == 3:  # 删除学生成绩信息
                function.delete()

            elif option_int == 4:  # 修改学生成绩信息
                function.modify()

            elif option_int == 5:  # 排序
                function.sort()

            elif option_int == 6:  # 统计学生总数
                function.total()

            elif option_int == 7:  # 显示所有学生信息
                function.show()
Esempio n. 2
0
from utils import grid_values, display
from function import reduce_puzzle, search

grid1 = '..3.2.6..9..3.5..1..18.64....81.29..7.......8..67.82....26.95..8..2.3..9..5.1.3..'
values = grid_values(grid1)
values = reduce_puzzle(values)
print('Solved grid 1')
display(values)

grid2 = '4.....8.5.3..........7......2.....6.....8.4......1.......6.3.7.5..2.....1.4......'
values = grid_values(grid2)
values = search(values)
print('Solved grid 2')
display(values)
Esempio n. 3
0
    def paintEvent(self, event):
        painter = QPainter(self)
        p = QPainter(self.pix)

        # 未开始,绘制棋盘
        if not self.start:
            p.setPen(BOARD_COLOR)
            p.setBrush(QBrush(BOARD_COLOR))
            p.drawRect(0, 0, self.size * self.n,
                       self.size * self.n + self.margin)
            p.setPen(Qt.black)
            for i in range(self.n):
                p.drawLine(self.size * i + self.size // 2, self.size // 2,
                           self.size * i + self.size // 2,
                           self.size * self.n - self.size // 2)
                p.drawLine(self.size // 2, self.size * i + self.size // 2,
                           self.size * self.n - self.size // 2,
                           self.size * i + self.size // 2)

        # 若当前轮到白棋,则计算出下一步的落子位置
        if not self.finish and not self.black:
            i, j = search(self.table, self.sequence, self.depth)
            self.point = (i, j)

        # 存在落子点
        if self.point:
            color = Qt.black if self.black else Qt.white
            p.setPen(color)
            p.setBrush(QBrush(color))
            i, j = self.point
            # 判断是否可以落子
            if (i, j
                ) not in self.sequence and 0 <= i < self.n and 0 <= j < self.n:
                self.count += 1
                if not self.start:  # 设为开始
                    self.start = True
                    self.withdraw_button.setStyleSheet(
                        "color:white; background-color:blue")
                self.sequence.append((i, j))  # 保存落子记录
                self.table[i][j] = BLACK if self.black else WHITE  # 更改棋盘信息
                # 画矩形内接圆
                p.drawEllipse(j * self.size + (self.size - self.dia) // 2,
                              i * self.size + (self.size - self.dia) // 2,
                              self.dia, self.dia)

                # 是否显示步数
                if self.show_step:
                    color = Qt.white if self.black else Qt.black
                    p.setPen(color)
                    p.setFont(QFont("Bold", 16))
                    p.drawText(j * self.size + (self.size - self.dia) // 2,
                               i * self.size + (self.size - self.dia) // 2,
                               self.dia, self.dia, Qt.AlignCenter,
                               str(self.count))
                # 更换棋手
                self.black = not self.black
            # 判断结果
            result = judge(self.table)
            if result:
                # 对五个子画直线
                p.setPen(Qt.red)
                i1, j1, i2, j2, self.winner = result
                x1 = j1 * self.size + self.size // 2
                y1 = i1 * self.size + self.size // 2
                x2 = j2 * self.size + self.size // 2
                y2 = i2 * self.size + self.size // 2
                p.drawLine(x1, y1, x2, y2)
                self.finish = True  # 棋局结束
            self.point = None

        # 是否悔棋
        if self.withdraw_point:
            p.setBrush(QBrush(BOARD_COLOR))
            for (i, j) in self.withdraw_point:
                # 将已落的子恢复为棋盘颜色
                p.setPen(BOARD_COLOR)
                p.drawEllipse(j * self.size, i * self.size, self.size,
                              self.size)
                p.setPen(Qt.black)
                # 线也需要恢复
                p.drawLine(j * self.size, i * self.size + self.size // 2,
                           (j + 1) * self.size, i * self.size + self.size // 2)
                p.drawLine(j * self.size + self.size // 2, i * self.size,
                           j * self.size + self.size // 2, (i + 1) * self.size)
            self.withdraw_point = None

        # 如果没有结束,左下角棋子的颜色
        if not self.finish:
            color = Qt.black if self.black else Qt.white
        else:
            color = Qt.black if self.winner == BLACK else Qt.white
        p.setPen(color)
        p.setBrush(QBrush(color))
        p.drawEllipse(self.size * self.n // 10 - self.dia * 3 // 4,
                      self.size * self.n, self.dia * 3 // 2, self.dia * 3 // 2)

        # 游戏结束
        if self.finish:
            p.setPen(Qt.red)
            p.setFont(QFont("Microsoft YaHei", 18))
            # 显示哪方获胜
            p.drawText(
                QRectF(self.size * self.n // 10 - self.dia * 3 // 4,
                       self.size * self.n, self.dia * 3 // 2,
                       self.dia * 3 // 2), Qt.AlignCenter, "胜")

            # 悔棋按钮失效
            self.withdraw_button.setStyleSheet(
                "color:white; background-color:gray")

        painter.drawPixmap(0, 0, self.pix)

        if self.save:
            # 保存图片和棋盘状态
            path = "../1/data/train2/"
            image = path + "image/" + str(self.count) + ".png"
            self.pix.save(image)
            mat = np.array(self.table)
            location = path + "table/" + str(self.count)
            np.save(location, mat)

        # 若之后轮到白棋,则直接update(而不是等待鼠标点击)
        if not self.black:
            self.update()
Esempio n. 4
0
File: run.py Progetto: yhbyhb/aind
from function import search
from utils import *

grid1 = '..3.2.6..9..3.5..1..18.64....81.29..7.......8..67.82....26.95..8..2.3..9..5.1.3..'
# display(reduce_puzzle(grid_values(grid1)))

grid2 = '4.....8.5.3..........7......2.....6.....8.4......1.......6.3.7.5..2.....1.4......'
values = grid_values(grid2)
display(search(values))
Esempio n. 5
0
    plt.ylim([-1, len(benchmark) + 0.5])
    plt.xlim([0, max(benchmark) * 1.1])
    plt.vlines(benchmark[0], -1, len(benchmark) + 0.5, linestyles='dashed')
    plt.grid()

    plt.savefig('benchmark.png')
    # plt.show()


if __name__ == '__main__':
    termList = postinglistMP(4)
    index = create_index(termList)

    s1 = sys.argv[1]
    s2 = sys.argv[2]
    posting_list1 = search(s1, index)
    posting_list2 = search2(s2, index)
    posting_listres = searchop(posting_list1, posting_list2)

    print("Term1: ", s1, " ", posting_list1)
    print("<br>Term2: ", s2, " ", posting_list2)
    print("<br>Result: ", posting_listres)

    benchmark = []
    benchmark.append(
        timeit.Timer('postinglist()',
                     'from __main__ import postinglist').timeit(number=1))
    benchmark.append(
        timeit.Timer('postinglistMP(2)',
                     'from __main__ import postinglistMP').timeit(number=1))
    benchmark.append(
Esempio n. 6
0
def handle_search():
    return search(request)
Esempio n. 7
0
    def paintEvent(self, event):
        painter = QPainter(self)
        p = QPainter(self.pix)

        if not self.start:
            p.setPen(BOARD_COLOR)
            p.setBrush(QBrush(BOARD_COLOR))
            p.drawRect(0, 0, self.size * self.n,
                       self.size * self.n + self.margin)
            p.setPen(Qt.black)
            for i in range(self.n):
                p.drawLine(self.size * i + self.size // 2, self.size // 2,
                           self.size * i + self.size // 2,
                           self.size * self.n - self.size // 2)
                p.drawLine(self.size // 2, self.size * i + self.size // 2,
                           self.size * self.n - self.size // 2,
                           self.size * i + self.size // 2)

            for i, j in self.sequence:
                if self.table[i][j] == VACANT:
                    continue
                color = Qt.black if self.table[i][j] == BLACK else Qt.white
                p.setPen(color)
                p.setBrush(QBrush(color))
                self.count += 1
                p.drawEllipse(j * self.size + (self.size - self.dia) // 2,
                              i * self.size + (self.size - self.dia) // 2,
                              self.dia, self.dia)

                if self.show_step:
                    color = Qt.white if self.table[i][j] == BLACK else Qt.black
                    p.setPen(color)
                    p.setFont(QFont("Bold", 16))
                    p.drawText(j * self.size + (self.size - self.dia) // 2,
                               i * self.size + (self.size - self.dia) // 2,
                               self.dia, self.dia, Qt.AlignCenter,
                               str(self.count))

        # 若当前轮到白棋,则计算出下一步的落子位置
        if not self.finish and not self.black:
            i, j = search(self.table, self.sequence)
            self.point = (i, j)

        if self.point:
            color = Qt.black if self.black else Qt.white
            p.setPen(color)
            p.setBrush(QBrush(color))
            i, j = self.point
            if (i, j
                ) not in self.sequence and 0 <= i < self.n and 0 <= j < self.n:
                self.count += 1
                if not self.start:
                    self.start = True
                    self.withdraw_button.setStyleSheet(
                        "color:white; background-color:blue")
                self.sequence.append((i, j))
                self.table[i][j] = BLACK if self.black else WHITE
                p.drawEllipse(j * self.size + (self.size - self.dia) // 2,
                              i * self.size + (self.size - self.dia) // 2,
                              self.dia, self.dia)

                if self.show_step:
                    color = Qt.white if self.black else Qt.black
                    p.setPen(color)
                    p.setFont(QFont("Bold", 16))
                    p.drawText(j * self.size + (self.size - self.dia) // 2,
                               i * self.size + (self.size - self.dia) // 2,
                               self.dia, self.dia, Qt.AlignCenter,
                               str(self.count))

                self.black = not self.black

            result = judge(self.table)
            if result:
                p.setPen(Qt.red)
                i1, j1, i2, j2, self.winner = result
                x1 = j1 * self.size + self.size // 2
                y1 = i1 * self.size + self.size // 2
                x2 = j2 * self.size + self.size // 2
                y2 = i2 * self.size + self.size // 2
                p.drawLine(x1, y1, x2, y2)
                self.finish = True
            self.point = None

        if self.withdraw_point:
            p.setBrush(QBrush(BOARD_COLOR))
            for (i, j) in self.withdraw_point:
                p.setPen(BOARD_COLOR)
                p.drawEllipse(j * self.size, i * self.size, self.size,
                              self.size)
                p.setPen(Qt.black)
                p.drawLine(j * self.size, i * self.size + self.size // 2,
                           (j + 1) * self.size, i * self.size + self.size // 2)
                p.drawLine(j * self.size + self.size // 2, i * self.size,
                           j * self.size + self.size // 2, (i + 1) * self.size)
            self.withdraw_point = None

        if not self.finish:
            color = Qt.black if self.black else Qt.white
        else:
            color = Qt.black if self.winner == BLACK else Qt.white
        p.setPen(color)
        p.setBrush(QBrush(color))
        p.drawEllipse(self.size * self.n // 10 - self.dia * 3 // 4,
                      self.size * self.n, self.dia * 3 // 2, self.dia * 3 // 2)
        if self.finish:
            p.setPen(Qt.red)
            p.setFont(QFont("Microsoft YaHei", 20))
            p.drawText(
                QRectF(self.size * self.n // 10 - self.dia * 3 // 4,
                       self.size * self.n, self.dia * 3 // 2,
                       self.dia * 3 // 2), Qt.AlignCenter, "胜")
            self.withdraw_button.setStyleSheet(
                "color:white; background-color:gray")

        painter.drawPixmap(0, 0, self.pix)

        # 若之后轮到白棋,则直接update(而不是等待鼠标点击)
        if not self.black:
            self.update()