問題: 3Dプリンタの立体データを正面から見たときの図を生成
入力:
- 奥行きを表す整数
X
- 横幅を表す整数
Y
- 高さを表す整数
Z
- 各セルが
#
または.
で表される立体データ
出力:
- 正面(x軸の正の方向)から見たときの図を Z 行 Y 列で出力
アプローチ:
- 標準入力から
X
,Y
,Z
と立体データを読み込む - 各層ごとにデータを処理し、3次元リストに格納
- 正面図を生成し、結果を出力
コード:
# X, Y, Zのサイズを読み込む
X, Y, Z = list(map(int, input().split()))
# Z行Y列の出力用の2次元リストを初期化
m = [['.' for j in range(Y)] for i in range(Z)]
# 各層(Z軸方向の各平面)ごとにデータを読み込む
for k in range(Z):
for i in range(X):
# 一行分のデータを読み込む
n = input().strip()
# Y軸方向に沿ってデータを処理
for j in range(Y):
# '#'があればその位置を出力用のリストに設定
if n[j] == '#':
m[k][j] = '#'
# 区切り文字を読み込む
l = input().strip()
# 出力用のリストを逆順に処理して出力
for i in reversed(range(Z)):
# 各行を文字列に変換
l = ''.join(m[i])
# 各行を出力
print(l)
コードの説明:
-
入力の読み込み:
-
X
,Y
,Z
を標準入力から読み込み、整数に変換。 - 正面図を格納するための2次元リスト
m
を初期化。各要素は'.'
で初期化。
-
-
データの処理:
- 各層(Z軸方向の各平面)ごとにデータを読み込みます。
-
n
に一行分のデータを読み込み、Y軸方向に沿ってデータを処理。 -
'#'
があれば、その位置を正面図リストm
に設定。 - 区切り文字
--
を読み込む。
-
正面図の生成と出力:
- 正面図リスト
m
を逆順に処理して出力。 - 各行を文字列に変換して出力。
- 正面図リスト
このプログラムは、与えられた立体データを読み込み、正面から見たときの図を生成して正確に出力します。