算法题,看懂了意思,但是不知道怎么写,希望可以指点迷津

题目看的明白,但是不懂如何去下手,希望可以给点意见
以下是我之前做的代码块,但是似乎写进死胡同里了

'''grid = '0'   #代表物品
a = ''          #代表格子
d = 0           #前五列格子
g = []          #放入的新列表,进行输出
for i in range(5):  #前五列格子
    b = int(input('输入需要放入的grid'))   #放入的物品
    d += 1  #加入1(多余,之前用来测试)
    if d < 6:   #判断前五列
        for j in range(b):  #加入b个物品
            a += grid       #每次加入一个
        g.append(a)         #循环结束添加至列表
        a = a[0:0]          #重置
for z in range(4):          #另外四次的第二种方法的格子
    for j in g:             #拿出值
        b = int(input('输入需要放入的grid'))  #继续放入物品
        if len(j) % 2 == 0:  #如果是偶数就进行居中判断
            j = j.center(10, ' ')  #居中判断
            for x in range(b):  #后面是本题目的一个第二种从小找到大的方法,但是似乎写的不清楚
                if len(j) < 10:
                    if ' ' in j:  #寻找空的,进行一个添加
                        g[j.index('')] += grid
                    else:  

                else:

        else:
            print(j)
for x in g:  #最后它确实从小到大找到了空的,但是只在第一列范围无限添加
    print(x)'''

img

img

示例中第一层为什么不从第一个格子开始放?第二层为什么又可以从第一个格子开始放?随机的吗?