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

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

CodeIQの「進捗ビッグバンマーク」解答

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

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

www.kato-eng.info

設問

「進捗ビッグバンマーク」は高さ X 幅 X の正方形の中に B のカタチをした文字を半角小文字の「b」で描きます。
1行目、真ん中の行、最終行はすべての列が「b」です。
それ以外の行の1列目と最終列は「b」です。
それ以外を半角ドット「.」にします。

例1:高さ1幅1の進捗ビッグバンマーク

b

例2:高さ3幅3の進捗ビッグバンマーク

bbb
bbb
bbb

例3:高さ5幅5の進捗ビッグバンマーク

bbbbb
b...b
bbbbb
b...b
bbbbb

仕様

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

解答

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

# coding: utf-8
import fileinput

def print_all_b(num):
    print("b" * num)


def print_b(num):
    line_list = list()
    for i in range(num):
        if i in [0, num - 1]:
            line_list.append("b")
        else:
            line_list.append(".")
    print("".join(line_list))


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

    if count % 2 == 0:
        print("invalid")
    else:
        middle_line = count // 2
        for line in range(count):
            if line in (0, middle_line, count - 1):
                print_all_b(count)
            else:
                print_b(count)