KATOエンジニヤリング開発日誌

「アウトプット無きエンジニアにインプットもチャンスも無い」の精神で書いています

CodeIQの「進捗ヴェリーグッドマーク」解答

CodeIQの「進捗ヴェリーグッドマーク」を解いたので、私が作成したコードを晒します。

12月21日の10時に回答締切なので、ネタバレを避けるためそれ以降に投稿しています。

www.kato-eng.info

設問

「進捗ヴェリーグッドマーク」は高さ X 幅 X の正方形の中に V のカタチをした文字を半角小文字の「v」で描きます。
1行目と2行目は左から1番目と右から1番目を「v」にします。
3行目以降は2行ごとに左右とも1列内側を「v」にします。
それ以外を半角ドット「.」にします。

例1:高さ1幅1の進捗ヴェリーグッドマーク

v

例2:高さ3幅3の進捗ヴェリーグッドマーク

v.v
v.v
.v.

例3:高さ5幅5の進捗ヴェリーグッドマーク

v...v
v...v
.v.v.
.v.v.
..v..

仕様

  • 標準入力として1から100の整数が与えられる。
  • 標準入力の数字が奇数の場合には「進捗ヴェリーグッドマーク」を出力する。
  • 標準入力の数字が偶数の場合には「invalid」を出力する。

解答

言語はPython3を選択しました。

# coding: utf-8

count = int(input())

if count % 2 == 0:
    print("invalid")
elif count == 1:
    print("v")
else:
    left_side_index = 0
    right_side_index = count - 1

    for row in range(count // 2):
        row_word = [dot for dot in ("." * count)]
        row_word[left_side_index] = "v"
        row_word[right_side_index] = "v"
        print("".join(row_word))
        print("".join(row_word))
        left_side_index += 1
        right_side_index -= 1

    row_word = [dot for dot in ("." * count)]
    row_word[count // 2] = "v"
    print("".join(row_word))