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()
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)
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()
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))
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(
def handle_search(): return search(request)
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()