编程题练习@8-20

分享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%

猜你喜欢

转载自blog.csdn.net/cjw838982809/article/details/132389966
今日推荐