def diag_product(s1, s2): """ Does product, but iterates over the diagonal first """ s1 = list(s1) s2 = list(s2) if len(s1) > len(s2): for _ in range(len(s1)): for a, b in zip(s1, s2): yield (a, b) s1 = ut.list_roll(s1, 1) else: for _ in range(len(s2)): for a, b in zip(s1, s2): yield (a, b) s2 = ut.list_roll(s2, 1)
def get_row(rowx): row_offset = self.col_offset_list[rowx] row_nonrotate_part = self.get_non_rotating_columns(rowx) row_rotate_part_ = self.get_rotating_columns(rowx) row_rotate_part = ut.list_roll(row_rotate_part_, -row_offset) row = row_nonrotate_part + row_rotate_part return row