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

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

CodeIQの「進捗はひみつマーク」解答

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

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

www.kato-eng.info

設問

「進捗はひみつマーク」は高さ X 幅 X の正方形の中にHのカタチをしたの文字を半角小文字の「h」で描きます。 真ん中の行は、すべてが「h」になります。 真ん中の行以外は、左端と右端が「h」になります。 それ以外を半角ドット「.」にします。

例1:高さ1幅1の進捗はひみつマーク

h

例2:高さ3幅3の進捗はひみつマーク

h.h
hhh
h.h

例3:高さ5幅5の進捗はひみつマーク

h....h
h....h
hhhhh
h....h
h....h

仕様

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

解答

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

# coding: utf-8
import fileinput

def print_all_h(num):
    for dummy in range(num):
        print("h", end="")

    print()


def print_h(num):
    for i in range(num):
        if i == 0 or i == num - 1:
            print("h", end="")
        else:
            print(".", end="")

    print()


for temp_count in fileinput.input():
    number_of_x = int(temp_count)

    if number_of_x % 2 == 0:
        print("invalid")
    else:
        middle_line = number_of_x // 2
        for seq in range(number_of_x):
            if seq == middle_line:
                print_all_h(number_of_x)
            else:
                print_h(number_of_x)