水面下の夢

競プロやイラストに興味があります.メインブログがここ.同人サークル「かのらぶ」のページはこっち( https://yumechi0525.amebaownd.com ).ブログアイコンはYaQ(@8_9_00)さんから.

CodeIQの「進捗やったったマーク」を解いた

※10/5 10時までの回答期限問題なので、公開します。

ブログ書いてる人がいたのでコードを見たら自分と全く違う回答だったので驚いた。

私は基本方針として"."の列を作ってyが入る場所に合わせて適切に"."の列をカットして出力、と言うかたちでかいた。 (もう少し簡単にやれそうではある…)

言語はPython3です。

def solve():
    n = int(input())
    if n % 2 == 0:
        print("invalid")
        return
    for i in range(n):
        line = "." * n
        if n // 2 > i:
            print(line[:i] + "y" + line[i+1:n-i-1] + "y" + line[n-i:])
        else:
            print(line[:n//2] + "y" + line[n//2+1:])



if __name__=="__main__":
    solve()

感想:計算してインデックスを指定する場合は文字列の外側にアクセスしないように気をつけるのが少し大変だった…。

追記:刺激を受けた記事。 

http://www.kato-eng.info/entry/q3423