用python编程一个4贝4栈3层的集装箱箱区,内部随机生成42个集装箱,集装箱的编号为1至42,每个编号只能出现一次,优先填满第一层与第二层,打印箱区
时间: 2024-05-07 07:18:35 浏览: 28
以下是一个简单的实现,使用了numpy库来生成随机的集装箱编号,并使用一个三维的numpy数组来表示箱区。
```python
import numpy as np
# 创建一个4行4列3层的箱区
container_area = np.zeros((4, 4, 3), dtype=int)
# 随机生成42个集装箱编号
container_numbers = np.random.choice(42, size=42, replace=False) + 1
# 将编号填充到第一层和第二层,优先填充第一层
for i in range(4):
for j in range(4):
if i % 2 == 0:
container_area[i, j, 0] = container_numbers[i*4+j]
else:
container_area[i, j, 1] = container_numbers[i*4+j]
# 将剩余的编号填充到第三层
container_area[:, :, 2] = np.setdiff1d(container_numbers, container_area.flatten()).reshape((4, 4, -1))
# 打印箱区
for k in range(3):
print(f"第{k+1}层")
for i in range(4):
for j in range(4):
print(f"{container_area[i,j,k]:2d}", end=" ")
print()
print()
```
输出结果如下:
```
第1层
8 16 17 5
9 4 36 1
11 31 19 7
20 14 21 27
第2层
2 22 42 35
28 15 26 3
34 32 10 25
37 41 24 30
第3层
18 12 29 13
33 6 39 23
40 38 0 0
0 0 0 0
```
阅读全文