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

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

CodeIQの「進捗はいいじゃんマーク」解答

CodeIQの「進捗はいいじゃんマーク」を解いたので、私が作成したコードを晒します。

基本的には前回解いた「進捗はいいゼットマーク」のコードを流用できました。

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

www.kato-eng.info

設問

進捗はいいじゃんマーク」は高さ X 幅 X の正方形の中にEのカタチをした文字を半角小文字の「e」で描きます。
1行目と最終行はすべてが「e」に。 真ん中の行を除く2行目から最終行の前の行までは左端が「e」になります。真ん中の行は、列の左端から真ん中までが「e」になります。それ以外を半角ドット「.」にします。

例1:高さ1幅1の進捗はいいじゃんマーク

e

例2:高さ3幅3の進捗はいいじゃんマーク

eee
ee.
eee

例3:高さ5幅5の進捗はいいじゃんマーク

eeeee
e....
eee..
e
eeeee

仕様

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

解答

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

import fileinput

def print_all_e(count):
    for dummy in range(count):
        print("e", end="")

    print()


def print_half_e(count):
    for dummy in range(count):
        if dummy <= (count // 2):
            print("e", end="")
        else:
            print(".", end="")

    print()


def print_first_e(count):
    for dummy in range(count):
        if dummy == 0:
            print("e", end="")
        else:
            print(".", end="")

    print()


for temp_count in fileinput.input():
    count = int(temp_count)
    if count % 2 == 0:
        print("invalid")
    else:
        for seq in range(count):
            if seq in [0, count - 1]:
                print_all_e(count)
            elif seq == (count // 2):
                print_half_e(count)
            else:
                print_first_e(count)