分享8月20日一道编程题:
题目:游戏内有需求,要把图片的像素沿着横轴做垂直翻转,一个像素内的数据由四个数字构成。
示例1:
输入:2, [1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3, 4, 4, 4, 4]
输出:[2, 2, 2, 2, 1, 1, 1, 1, 4, 4, 4, 4, 3, 3, 3, 3]
示例2:
输入:1, [1,2,3,4]
输出:[1,2,3,4]
代码如下:
def vertical_flip(k, pixel_data):
# 将数组按照4个元素为一个像素分割变为一个像素的list
splits = []
for i in range(0, len(pixel_data), 4):
chunk = pixel_data[i : i + 4]
splits.append(chunk)
# k个像素一反转
result = []
for i in range(0, len(splits), k):
sublist = splits[i : i + k]
sublist.reverse()
result.extend(sublist)
# 将像素list再压平为1维
result = [item for sublist in result for item in sublist]
return result
print(vertical_flip(2, [1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3, 4, 4, 4, 4]))
print(vertical_flip(1, [1, 2, 3, 4]))
运行结果:
[2, 2, 2, 2, 1, 1, 1, 1, 4, 4, 4, 4, 3, 3, 3, 3]
[1, 2, 3, 4]
AC结果:100%