赞
踩
题目:
代码:
""" # 输入: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)
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。