• 2D和3D版本的重力游戏


    描述 2D版本的重力游戏

    如果你已经完成了该任务,并想要更大的挑战,紧接着介绍3D版本

    在上物理课的时候很无聊,所以我给自己做了一个玩具箱来打发时间。这个盒子很特别,因为它有改变重力的能力。

    盒子里有几列玩具方块,排成一列。第i列包含a_i个立方体。起初,盒子里的重力把方块往下拉。当鲍勃转换重力时,它开始把所有的立方体拉到盒子的某一侧,即d,它可以是'L'或'R'(左或右)。下面是一个例子,说明在切换重力之前和之后,一盒立方体可能是什么样子。

    +---+ +---+
    | | | |
    +---+ +---+
    +---++---+ +---+ +---++---++---+
    | || | | | --> | || || |

    +---++---++---++---+ +---++---++---++---+
    | || || || | | || || || |
    +---++---++---++---+ +---++---++---++---+
    • 1

    给出盒子里方块的初始配置,找出Bob切换重力后,n列中每列有多少个方块。

    例子(输入->输出。

    • 'R', [3, 2, 1, 2] -> [1, 2, 2, 3]
    • 'L', [1, 4, 5, 3, 5 ] -> [5, 5, 4, 3, 1]
    def flip(d, a):
        # Do some magic
        return sorted(a,reverse=d=='L')

    d,a = 'L', [1, 4, 5, 3, 5] # [5, 5, 4, 3, 1]
    print(flip(d,a))
    • 1

    重力翻转的一个稍难的版本。建议先做上面2D版。

    鲍勃又一次在物理课上感到无聊,这一次,他带来了一个更复杂的重力变化箱。它是3D的,小方块排列在一个n×m列的矩阵中。它可以改变重力,向某个方向前进,可以是 "L"、"R"、"D "和 "U"(左、右、下和上)。

    给出盒子里的立方体的初始配置是一个二维阵列,确定鲍勃切换重力后立方体是如何排列的。

    请看测试样本的例子。

    拼图阵列

    步骤: 如果指令参数是 L R 逐行row 遍历,并判断是否倒序

    如果指令参数是U D 转置二维数组 逐行 row 遍历,并判断是否倒序 转置👆二维数组输出

    def flip(d, a):
        if d in ['L','R']:
            key = d == 'R'
            return [sorted(row,reverse=key) for row in a]

        elif d in ['U','D']:
            key = d == 'U'
            tran = list(map(list, (zip(*a))))
            out = [sorted(row,reverse=key) for row in tran]
            return list(map(list, (zip(*out))))
    • 1

    熟悉numpy的写法

    推荐此写法,工整简洁易读!

    import numpy as np

    dir = {
        'L': lambda a: np.sort(a)[:, ::-1],
        'R': lambda a: np.sort(a),
        'U': lambda a: np.sort(a, axis=0)[::-1, :],
        'D': lambda a: np.sort(a, axis=0)
    }

    def flip(d, a):
        return dir[d](np.array(a)).tolist()

    • 1

    python高级函数,及nump、pandas库十分强悍,在大量数据处理中值得花费功夫熟练掌握 ,必然有事半功倍之效!

    本文由 mdnice 多平台发布

  • 相关阅读:
    计算机网络【CN】TCP报文段格式【20B】
    Arnoldi Iteration 思考
    MACBOOK M1芯片上安装mongdb遇到的问题,以及安装教程
    JVM—类加载子系统
    Java面试总结(2021优化版)发布&1024程序员节
    ros2订阅esp32发布的电池电压数据-补充
    双边滤波算法及例程
    【Linux网络编程】服务器程序规范
    Trie字典树
    Hibernate 环境搭建
  • 原文地址:https://blog.csdn.net/qq_40523298/article/details/127794347