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

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

CodeIQの「進捗やったったマーク」回答

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

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

www.kato-eng.info

設問

「進捗やったったマーク」は高さ X 幅 X の正方形の中にYのカタチをした文字を半角小文字の「y」で描きます。

真ん中の行より上は左右の(行数)の位置が「y」です。

例えば1行目なら左から1列目、右から1列目が「y」、2行目なら左から2列目、右から2列目が「y」です。

それ以外を半角ドット「.」にします。

真ん中の行以下は真ん中の列が「y」です。

それ以外を半角ドット「.」にします。

例1:高さ 1 幅 1 の進捗やったったマーク

y

例2:高さ 3 幅 3 の進捗やったったマーク

y.y
.y.
.y.

例3:高さ 5 幅 5 の進捗やったったマーク

y...y
.y.y.
..y..
..y..
..y..

仕様

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

解答

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

# coding: utf-8

number = int(input().strip().upper())

if number % 2 == 0:
    print("invalid")
else:
    minus_index = -1
    for index in range(number):
        dots = ['.' for i in range(number)]
        if index <= number // 2:
            dots[index] = "y"
            dots[minus_index] = "y"
            minus_index -= 1
        else:
            dots[number // 2] = "y"

        for dot_or_y in dots:
            print(dot_or_y, end="")
        print()