4
0

問題: 3Dプリンタの立体データを正面から見たときの図を生成

入力:

  1. 奥行きを表す整数 X
  2. 横幅を表す整数 Y
  3. 高さを表す整数 Z
  4. 各セルが # または . で表される立体データ

出力:

  • 正面(x軸の正の方向)から見たときの図を Z 行 Y 列で出力

アプローチ:

  1. 標準入力から X, Y, Z と立体データを読み込む
  2. 各層ごとにデータを処理し、3次元リストに格納
  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)

コードの説明:

  1. 入力の読み込み:

    • X, Y, Z を標準入力から読み込み、整数に変換。
    • 正面図を格納するための2次元リスト m を初期化。各要素は '.' で初期化。
  2. データの処理:

    • 各層(Z軸方向の各平面)ごとにデータを読み込みます。
    • n に一行分のデータを読み込み、Y軸方向に沿ってデータを処理。
    • '#' があれば、その位置を正面図リスト m に設定。
    • 区切り文字 -- を読み込む。
  3. 正面図の生成と出力:

    • 正面図リスト m を逆順に処理して出力。
    • 各行を文字列に変換して出力。

このプログラムは、与えられた立体データを読み込み、正面から見たときの図を生成して正確に出力します。

4
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
0