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

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

CodeIQの「進捗ジエンドマーク」解答

CodeIQの「進捗ジエンドマーク」を解いたので、私が作成したコードを晒します。

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

www.kato-eng.info

設問

「進捗ジエンドマーク」は高さ X 幅 X の正方形の中に J のカタチにした文字を半角小文字の「j」で描きます。
真ん中の行と、真ん中より上の行は右端を「j」にします。
一番下の行を除いた真ん中より下の行は左端と右端を「j」にします。
一番下の行は全てを「j」にします。
それ以外を半角ドット「.」にします。

例1:高さ1幅1の進捗ジエンドマーク

j

例2:高さ3幅3の進捗ジエンドマーク

..j
..j
jjj

例3:高さ5幅5の進捗ジエンドマーク

....j
....j
....j
j...j
jjjjj

仕様

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

解答

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

# coding: utf-8

count = int(input())

if count % 2 == 0:
    print("invalid")
else:
    middle_index = count // 2
    last_index = count - 1

    for row in range(count):
        row_word = [dot for dot in ("." * count)]
        if row <= middle_index:
            row_word[last_index] = "j"
        elif row == last_index:
            row_word = [j for j in ("j" * count)]
        else:
            row_word[0] = "j"
            row_word[last_index] = "j"

        print("".join(row_word))