Etéreo 拿出家里的许多的立方体积木,堆成了一个三维空间中的模型。既然你高考选了技术, 那想必你一定想知道,这个模型的三视图是什么吧!
图中,
轴、
轴和
轴的方向已经标明。现在规定,图中的红色面为主视面,蓝色面为右视面(注意输出中应为左视而非右视),黄色面为俯视面。具体方向可以观察样例。
第一行四个数,表示该三维空间大小为
,且有
个立方体。
接下去行,每行三个整数
,表示其位置坐标。
输出共行,前
行每行
个字符,输出正视图及左视图,两幅图之间有一列空格;接下去输出一个空行;再接下去
行,每行
个字符,表示俯视图。
其中表示空,
表示有立方体。
2 2 2 2 1 1 1 2 2 2
.x .x x. x. x. .x
3 3 3 3 1 1 2 2 1 1 1 2 1
... ... x.. x.. xx. xx. xx. x.. ...
这里可以把图片拉出去放大看哦~
import sys
data = sys.stdin.read().split()
it = iter(data)
X = int(next(it))
Y = int(next(it))
Z = int(next(it))
n = int(next(it))
# 正视图方块
y_x = set()
# 左视图方块
y_z = set()
# 俯视图方块
z_x = set()
for _ in range(n):
x = int(next(it))
y = int(next(it))
z = int(next(it))
y_x.add((y,x))
y_z.add((y,z))
z_x.add((z,x))
front_view = [['.' for _ in range(X)] for _ in range(Y)]
left_view = [['.' for _ in range(Z)] for _ in range(Y)]
top_view = [['.' for _ in range(X)] for _ in range(Z)]
for y,x in y_x:
front_view[Y-y][x-1] = 'x'
for y,z in y_z:
left_view[Y-y][z-1] = 'x'
for z,x in z_x:
top_view[z-1][x-1] = "x"
for i in range(Y):
print(''.join([str(x) for x in front_view[i]]),''.join([str(x) for x in left_view[i]]))
print()
for i in range(Z):
print(''.join([str(x) for x in top_view[i]]))