题目:
代码:
"""
# 输入:2的倍数
第一个为行号 0-18
第二个为列号 0-18
第一行为黑色
第二行为白色
思路:先求黑色,进行去重+棋子的位置,再求白色
逐个棋子求坐标。
"""
def get_item(a):
temp = list()
for item in a:
row = item[0]
column = item[1]
if row - 1 >= 0:
temp.append([row - 1, column])
if column - 1 >= 0:
temp.append([row, column - 1])
if row + 1 <= 18:
temp.append([row + 1, column])
if column + 1 <= 18:
temp.append([row, column + 1])
return temp
# 输入不固定,2的整数倍
b = list(map(int, input().split()))
w = list(map(int, input().split()))
black = [b[i:i+2] for i in range(0, len(b), 2)]
white = [w[i:i+2] for i in range(0, len(w), 2)]
# black = [[0,5], [8,9], [9,10]]
# white = [[5,0], [9,9], [9,8]]
temp_black = get_item(black)
temp_white = get_item(white)
# 将子列表转换为元组并用set去重,然后再转换回列表
black_set_temp = set(tuple(sublist) for sublist in temp_black)
white_set = set(tuple(sublist) for sublist in white)
black_set = set(tuple(sublist) for sublist in black)
# 求当前黑色棋子红周围的气与白色求交集,求当前黑色的周围的气与本身黑色的交集,这两个交集求并集,用当前黑色棋子周围的气求并集的差集
black_res = black_set_temp - ((black_set_temp & white_set) | (black_set_temp & black_set))
white_set_temp = set(tuple(sublist) for sublist in temp_white)
white_res = white_set_temp - ((white_set_temp & black_set) | (white_set_temp & white_set))
# 本身去重
print(len(black_res), black_res)
print(len(white_res), white_res)