名もなき未知

エンジニアリングとか、日常とかそういうのをまとめる場所。アクセス解析のためGAを利用、Googleに情報を送信しています。商品紹介のためAmazonアフィリエイトを利用、Amazonに情報を送信しています。記事に関しては私が書いていない引用文を除いて自由にご利用ください。

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