名もなき未知

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

yukicoder 107 に参加しました

魔法陣は実装しきれてないので,できたところまでで.

No.216 FAC

問題

No.216 FAC - yukicoder

回答

#28972 No.216 FAC - yukicoder

先に断っておきますが,あまりよいコードではないと思います...
Dictionaryで点数が入った人と点数を数えておいて,最後に一番点数の高い人を求めて,出力ですね.

同率トップでもYESである点に注意.そこが若干厄介だと思います.
私は迷った挙句,ディクショナリの中身を全部確認することにしました.それが確実だと思ったので….

N = int(input())
progli = list(map(int, input().split()))
scoreli = list(map(int, input().split()))
scoremap = {0:0}
for i in range(N):
    if scoreli[i] in scoremap:
        scoremap[scoreli[i]] += progli[i]
    else:
        scoremap.update({scoreli[i]:progli[i]})

maxid = 0
maxval = scoremap[0]
for k, v in scoremap.items():
    if maxval < v:
        maxval = v
        maxid = k

print("YES" if maxid == 0 else "NO")

変数名をもう少しかっこよくしたい...

NO.217 魔法陣

問題

No.217 魔方陣を作ろう - yukicoder

これ解説することもないんですよね,ただWikipediaに書いてあるアルゴリズムを元に実装するだけなので….
ただ,私は実装しきれなかったので,まだまだです….行列とかは頭がいたーい.

奇数の部分だけ完成しました.テストしても通ってるみたい.参考までにどうぞ.

N = int(input())
if N % 2 == 1:
    table = [[0 for _ in range(N)] for i in range(N)]
    putter = N // 2
    counter = 1
    for i in range(N):
        for j in range(N):
            table[(N - j + i * 2) % N][putter] = counter
            counter += 1
            putter += 1
            if putter >= N:
                putter = 0
        putter -= 1

    for elem in table:
        print(" ".join(list(map(str, elem))))


続きは気が向いた時に実装します.