import piece_move_tables def all_pos_rook(idx: int): for left in piece_move_tables.L_BORDER_MASK[idx]: for right in piece_move_tables.R_BORDER_MASK[idx]: for up in piece_move_tables.U_BORDER_MASK[idx]: for down in piece_move_tables.D_BORDER_MASK[idx]: yield left | right | up | down def all_pos_bishop(idx: int): for left_up in piece_move_tables.LU_BORDER_MASK[idx]: for left_down in piece_move_tables.LD_BORDER_MASK[idx]: for right_up in piece_move_tables.RU_BORDER_MASK[idx]: for right_down in piece_move_tables.RD_BORDER_MASK[idx]: yield left_up | left_down | right_up | right_down def all_pos_queen(idx: int): for rook_directions in all_pos_rook(idx): for bishop_directions in all_pos_bishop(idx): yield rook_directions | bishop_directions def forever_magics(): yield import time starttime = time.time() for _ in range(10): for pos in all_pos_queen(30): var = pos print('yes') # 21.63 # 16.22 exectime = round(time.time() - starttime, 2) print('exectime >', exectime)