Cho hình vuông kích thước size (chia thành size^2 ô đơn vị). Một ô được tô màu. Cắt hình vuông thành hai phần đối xứng (hình ảnh gương) sao cho đường cắt không đi qua ô màu. Xác định có thể cắt hay không.
Đường cắt đối xứng phải đi qua tâm hình vuông. Nếu ô màu nằm chính giữa (gần tâm) thì không thể cắt.
Ví dụ: size=50, ô màu tại (25,25) → tâm là 25 → ô màu nằm trên đường cắt → "Cutting is not possible".
Giải thuật
- Tính
middle = size // 2. - Nếu hàng của ô màu bằng
middlehoặcmiddle-1VÀ cột của ô màu bằngmiddlehoặcmiddle-1→ không cắt được.
Mã ví dụ
def solve(size, colored_row_pos, colored_col_pos):
middle = size // 2
if (middle == colored_row_pos or middle == colored_row_pos - 1) and (middle == colored_col_pos or middle == colored_col_pos - 1):
print("Cutting is not possible")
else:
print("Cutting is possible")
size = 50
colored_row_pos, colored_col_pos = 25, 25
solve(size, colored_row_pos, colored_col_pos)
Đầu vào
50, 25, 25
Đầu ra
Cutting is not possible