Моя проблема заключается в том, что get_marks_in_box() требует обновления словаря, что делается в функции box_completed. А моя функция box_completed требует меток из функции get_marks_in_box_function. Я относительно новичок в программировании, поэтому понимаю, что может быть несколько (потенциально много) неэффективностей и неточностей. Как мне провести рефакторинг кода, чтобы улучшить логику?
Код: Выделить всё
def get_marks_in_box(self, coords, box_deg, box_dict):
N = game dimensions # 1,2, or 3
box_pos = (tl_pos, br_pos)
marks = [[None for _ in range(3)] for _ in range(3)]
for i in range(3):
for j in range(3):
# Calculate the coordinates of the current sub-box
sub_topleft_pos = ((sub_tl_row),(sub_tl_col))
sub_bottomright_pos = ((sub_br_row),(sub_br_col))
# Create a key for this sub-box (degree + its coordinates)
box_key = (sub_tl_pos, sub_br_pos)
# write mark to marks
marks[i][j] = box_dict[box_key]
return marks
Код: Выделить всё
def box_completed(self, coords, N, box_deg, marks, box_dict):
# horizontal
if horizantal 3 in a row:
box_pos = (tl_pos, br_pos)
box_dict[box_pos] = mark
# vertical
if vertical 3 in a row:
box_pos = (tl_pos, br_pos)
box_dict[box_pos] = mark
# diagonal
if diagonal 3 in a row:
box_pos = (tl_pos, br_pos)
box_dict[box_pos] = mark
Подробнее здесь: https://stackoverflow.com/questions/790 ... -functions